Timeline



Dec 11, 2016:

11:44 PM Changeset in webkit [209702] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Try to fix the linux build.

  • runtime/StackFrame.h:
11:20 PM Changeset in webkit [209701] by Konstantin Tokarev
  • 2 edits in trunk/Source/WTF

Unreviewed, guarded clang pragma with COMPILER(CLANG) to fix -Werror

  • wtf/PrintStream.cpp:

(WTF::PrintStream::printfVariableFormat):

11:13 PM Changeset in webkit [209700] by Konstantin Tokarev
  • 4 edits in trunk

Unreviewed attempt to fix EFL and Mac/cmake builds after r209665.
https://bugs.webkit.org/show_bug.cgi?id=165686

Source/WebKit2:

  • PlatformEfl.cmake: WebKit2 should precede other target so that right

config.h comes first in include path.

Tools:

  • DumpRenderTree/CMakeLists.txt: WebKit2 should precede other target

so that right config.h comes first in include path.

10:39 PM Changeset in webkit [209699] by hyatt@apple.com
  • 2 edits in trunk/Tools

[CSS Parser] Make sure content extensions initialize AtomicString
https://bugs.webkit.org/show_bug.cgi?id=165737

Reviewed by Darin Adler.

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::makeBackend):

8:59 PM Changeset in webkit [209698] by Matt Baker
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: ThreadTreeElement should have a "Resume" status button when paused
https://bugs.webkit.org/show_bug.cgi?id=165581

Reviewed by Joseph Pecoraro.

  • UserInterface/Images/Resume.svg:

Fill/stroke should be unspecified so that both can be styled in CSS.

  • UserInterface/Views/DebuggerDashboardView.css:

(.dashboard.debugger .navigation-bar .item.debugger-dashboard-pause.activated):

  • UserInterface/Views/DebuggerSidebarPanel.css:

(.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume):
(.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume.activated):
Recreate original style which relied on 'fill="none"' being specified in the SVG.

  • UserInterface/Views/ThreadTreeElement.css:

(.tree-outline > .item.thread .icon):
(.tree-outline > .item.thread .status-button.resume):
(.tree-outline > .item.thread .status-button.resume:active):
(.tree-outline:matches(:focus, .force-focus) > .item.thread.selected .status-button.resume):
(.tree-outline > .item.thread.selected .status-button.resume,):
(.details-section.call-stack .thread .icon): Deleted.
Status button styles. Colors match those of the goto-arrow button.

  • UserInterface/Views/ThreadTreeElement.js:

(WebInspector.ThreadTreeElement.prototype.refresh):
Update status icon.
(WebInspector.ThreadTreeElement.prototype.oncontextmenu):
(WebInspector.ThreadTreeElement.prototype._updateStatus):
Add/remove status button based on paused state.
Stop propagation of "mousedown" events on the status button, to
prevent button press from selecting the tree element.
(WebInspector.ThreadTreeElement):

8:58 PM Changeset in webkit [209697] by Simon Fraser
  • 4 edits
    2 adds in trunk

REGRESSION (r200283): Transform, overflow hidden and filter combination completely hides the element
https://bugs.webkit.org/show_bug.cgi?id=161509

Reviewed by David Hyatt.
Source/WebCore:

When the filter painting code needs to recompute a paintDirtyRect, it was using selfClipRect()
which is obviously wrong because it returns a rect in absolute coordinates. Use code factored
out of localClipRect() instead, which returns a rect relative to the painting root.

Test: css3/filters/filter-on-overflow-hidden.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintLayerContents):

LayoutTests:

  • css3/filters/filter-on-overflow-hidden-expected.html: Added.
  • css3/filters/filter-on-overflow-hidden.html: Added.
7:11 PM Changeset in webkit [209696] by sbarati@apple.com
  • 39 edits
    2 adds in trunk

We should be able to throw exceptions from Wasm code and when Wasm frames are on the stack
https://bugs.webkit.org/show_bug.cgi?id=165429

Reviewed by Keith Miller.

JSTests:

  • wasm/function-tests/trap-load.js: Added.

(assert):
(wasmFrameCountFromError):
(i.catch):
(assert.continuation):

  • wasm/function-tests/trap-store.js: Added.

(import.Builder.from.string_appeared_here.assert):
(i.catch):
(assert.continuation):
(assert):

  • wasm/js-api/test_memory_constructor.js:

(assert):

Source/JavaScriptCore:

This patch teaches the stack walking runtime about wasm.
To do this, I taught StackVisitor that a callee is not
always an object.

To be able to unwind callee save registers properly, I've given
JSWebAssemblyCallee a list of RegisterAtOffsetList for the callee
saves that B3 saved in the prologue. Also, because we have two
B3Compilations per wasm function, one for wasm entrypoint, and
one for the JS entrypoint, I needed to create a callee for each
because they each might spill callee save registers.

I also fixed a bug inside the Wasm::Memory constructor where we
were trying to mmap the same number of bytes even after the first
mmap failed. We should start by trying to mmap the maximum bytes,
and if that fails, fall back to the specified initial bytes. However,
the code was just mmapping the maximum twice. I've fixed that and
also added a RELEASE_ASSERT_NOT_REACHED() for when the second mmap
fails along with a FIXME to throw an OOM error.

There was a second bug I fixed where JSModuleRecord was calling
visitWeak on its CallLinkInfos inside ::visitChldren(). It needs
to do this after marking. I changed JSModuleRecord to do what
CodeBlock does and call visitWeak on its CallLinkInfos inside
an UnconditionalFinalizer.

  • API/JSContextRef.cpp:

(BacktraceFunctor::operator()):

  • inspector/ScriptCallStackFactory.cpp:

(Inspector::createScriptCallStackFromException):

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::vmEntryGlobalObject):

  • interpreter/CallFrame.h:

(JSC::ExecState::callee):

  • interpreter/Interpreter.cpp:

(JSC::GetStackTraceFunctor::operator()):
(JSC::UnwindFunctor::operator()):
(JSC::UnwindFunctor::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer):

  • interpreter/Interpreter.h:
  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::update):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::StackVisitor):
(JSC::StackVisitor::readFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::readInlinedFrame):
(JSC::StackVisitor::Frame::isWasmFrame):
(JSC::StackVisitor::Frame::codeType):
(JSC::StackVisitor::Frame::calleeSaveRegisters):
(JSC::StackVisitor::Frame::functionName):
(JSC::StackVisitor::Frame::sourceURL):
(JSC::StackVisitor::Frame::toString):
(JSC::StackVisitor::Frame::hasLineAndColumnInfo):
(JSC::StackVisitor::Frame::setToEnd):

  • interpreter/StackVisitor.h:

(JSC::StackVisitor::Frame::callee):
(JSC::StackVisitor::Frame::isNativeFrame):
(JSC::StackVisitor::Frame::isJSFrame): Deleted.

  • jsc.cpp:

(callWasmFunction):
(functionTestWasmModuleFunctions):

  • runtime/Error.cpp:

(JSC::addErrorInfoAndGetBytecodeOffset):

  • runtime/JSCell.cpp:

(JSC::JSCell::isAnyWasmCallee):

  • runtime/JSCell.h:
  • runtime/JSFunction.cpp:

(JSC::RetrieveArgumentsFunctor::operator()):
(JSC::RetrieveCallerFunctionFunctor::operator()):

  • runtime/StackFrame.cpp:

(JSC::StackFrame::sourceID):
(JSC::StackFrame::sourceURL):
(JSC::StackFrame::functionName):
(JSC::StackFrame::computeLineAndColumn):
(JSC::StackFrame::toString):

  • runtime/StackFrame.h:

(JSC::StackFrame::StackFrame):
(JSC::StackFrame::hasLineAndColumnInfo):
(JSC::StackFrame::hasBytecodeOffset):
(JSC::StackFrame::bytecodeOffset):
(JSC::StackFrame::isNative): Deleted.

  • runtime/VM.h:
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::parseAndCompile):

  • wasm/WasmCallingConvention.h:

(JSC::Wasm::CallingConvention::setupFrameInPrologue):

  • wasm/WasmFormat.h:
  • wasm/WasmMemory.cpp:

(JSC::Wasm::Memory::Memory):

  • wasm/WasmMemory.h:

(JSC::Wasm::Memory::isValid):

  • wasm/WasmPlan.cpp:

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

  • wasm/WasmPlan.h:

(JSC::Wasm::Plan::jsToWasmEntryPointForFunction): Deleted.

  • wasm/js/JSWebAssemblyCallee.cpp:

(JSC::JSWebAssemblyCallee::finishCreation):

  • wasm/js/JSWebAssemblyCallee.h:

(JSC::JSWebAssemblyCallee::create):
(JSC::JSWebAssemblyCallee::entrypoint):
(JSC::JSWebAssemblyCallee::calleeSaveRegisters):
(JSC::JSWebAssemblyCallee::jsToWasmEntryPoint): Deleted.

  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::JSWebAssemblyModule):
(JSC::JSWebAssemblyModule::visitChildren):
(JSC::JSWebAssemblyModule::UnconditionalFinalizer::finalizeUnconditionally):

  • wasm/js/JSWebAssemblyModule.h:

(JSC::JSWebAssemblyModule::jsEntrypointCalleeFromFunctionIndexSpace):
(JSC::JSWebAssemblyModule::wasmEntrypointCalleeFromFunctionIndexSpace):
(JSC::JSWebAssemblyModule::setJSEntrypointCallee):
(JSC::JSWebAssemblyModule::setWasmEntrypointCallee):
(JSC::JSWebAssemblyModule::allocationSize):
(JSC::JSWebAssemblyModule::calleeFromFunctionIndexSpace): Deleted.

  • wasm/js/JSWebAssemblyRuntimeError.h:
  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::call):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::constructJSWebAssemblyMemory):

  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::constructJSWebAssemblyModule):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

Source/WebCore:

  • bindings/js/JSDOMBinding.cpp:

(WebCore::GetCallerGlobalObjectFunctor::operator()):

6:50 PM Changeset in webkit [209695] by Darin Adler
  • 37 edits
    9 deletes in trunk

Remove uses of Dictionary in WebRTC IDL files
https://bugs.webkit.org/show_bug.cgi?id=165736

Reviewed by Sam Weinig.

Source/WebCore:

Also removed quite a bit of unused code. There were some mocks that were out of date and
no longer matched the types used in the real code, that also were no longer hooked up,
and other types of dead code. We will have to implement anew when we want to restore tests
like the ones these were intended to enable.

  • CMakeLists.txt: Updated for all the removed files.
  • Modules/mediastream/MediaEndpointPeerConnection.cpp: Moved some types in here

that don't need to be in the header.
(WebCore::MediaEndpointPeerConnection::MediaEndpointPeerConnection): Use make_unique.
(WebCore::MediaEndpointPeerConnection::setConfiguration): Changed argument type,
obviating the need for most of the code that was here.

  • Modules/mediastream/MediaEndpointPeerConnection.h: Updated for the above. Made more

things private and final. Marked the constructor explicit. Removed unneeded includes.

  • Modules/mediastream/PeerConnectionBackend.h: Removed unneeded includes and forward

declarations. Changed the argument type for setConfiguration (see above).

  • Modules/mediastream/RTCConfiguration.cpp: Removed.

None of the code here was needed except for the ICE server validation, and that was
moved into RTCPeerConnection::setConfiguration.

  • Modules/mediastream/RTCConfiguration.h: Changed this from a class to a struct since

this is now a dictionary rather than an interface.

  • Modules/mediastream/RTCConfiguration.idl: Changed this from an interface to a dictionary.
  • Modules/mediastream/RTCDTMFSender.cpp: Removed some of the code from this file. This

class currently isn't implemented, but was depending on RTCPeerConnectionHandler. I removed
some of the dead code. Someone will have to straighten this out so we can turn it back on.

  • Modules/mediastream/RTCDTMFSender.h: Ditto.
  • Modules/mediastream/RTCDataChannel.cpp: Updated includes.
  • Modules/mediastream/RTCIceCandidate.cpp:

(WebCore::RTCIceCandidate::create): Removed most of the code, since this now takes
a structure rather than a WebCore::Dictionary, and so the bindings take care of the work.

  • Modules/mediastream/RTCIceCandidate.h: Updated for the above.
  • Modules/mediastream/RTCIceCandidate.idl: Changed the constructor to take a

RTCIceCandidateInit instead of a Dictionary.

  • Modules/mediastream/RTCIceServer.h: Changed this from a class to a struct since

this is now a dictionary rather than an interface.

  • Modules/mediastream/RTCIceServer.idl: Changed this from an interface to a dictionary.
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::initializeWith): Take an RTCConfiguration rather than
a Dictionary.
(WebCore::RTCPeerConnection::getConfiguration): Moved to header, now an inline.
(WebCore::RTCPeerConnection::setConfiguration): Use the configuration dictionary now instead
of the configuration class. Also moved validation of server URLs here, formerly in the
RTCConfiguration RTCConfiguration::initialize function. Also moved code to convert from
RTCConfiguration to MediaEndpointConfiguration here, formerly in
MediaEndpointPeerConnection::setConfiguration.

  • Modules/mediastream/RTCPeerConnection.h: Updated for the above.
  • Modules/mediastream/RTCPeerConnection.idl: Changed argument to initializeWith and

setConfiguration from Dictionary to RTCConfiguration.

  • Modules/mediastream/RTCSessionDescription.cpp:

(WebCore::parseTypeString): Deleted.
(WebCore::RTCSessionDescription::create): Changed to take struct instead of Dictionary.

  • Modules/mediastream/RTCSessionDescription.h: Added Init struct and changed create to

take it.

  • Modules/mediastream/RTCSessionDescription.idl: Changed constructor argument to take

RTCSessionDescriptionInit dictionary instead of Dictionary.

  • Modules/webaudio/MediaStreamAudioDestinationNode.cpp: Updated includes.
  • WebCore.xcodeproj/project.pbxproj: Updated for all the removed files.
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateDictionaryImplementationContent): Fixed convertDictionaryToJS to work with other
nullable types besides RefPtr.

  • bindings/scripts/test/JS/JSTestObj.cpp: Regenerated.
  • platform/mediastream/RTCConfigurationPrivate.h: Removed.
  • platform/mediastream/RTCIceServerPrivate.h: Removed.
  • platform/mediastream/RTCPeerConnectionHandler.cpp: Removed.
  • platform/mediastream/RTCPeerConnectionHandler.h: Removed.
  • platform/mock/RTCDTMFSenderHandlerMock.cpp: Removed.
  • platform/mock/RTCDTMFSenderHandlerMock.h: Removed.
  • platform/mock/RTCDataChannelHandlerMock.h: Updated includes, made more things private and final.
  • platform/mock/RTCPeerConnectionHandlerMock.cpp: Removed.
  • platform/mock/RTCPeerConnectionHandlerMock.h: Removed.
  • testing/Internals.cpp:

(WebCore::Internals::Internals): Removed call to enableMockRTCPeerConnectionHandler.
(WebCore::Internals::enableMockRTCPeerConnectionHandler): Deleted.

LayoutTests:

  • fast/mediastream/RTCIceCandidate-expected.txt: Regenerated; no new failures.
  • fast/mediastream/RTCIceCandidate.html: Updated test to expect the WebIDL rules for parsing

unsigned short for sdpMLineIndex. The old code expected additional range checking which is
not expected behavior.

  • fast/mediastream/RTCPeerConnection-expected.txt: Regenerated; no new failures.
  • fast/mediastream/RTCPeerConnection.html: Updated test to not expect an exception when

iceServers is entirely omitted or when it is an empty array. This is a progression and is
closer to the specification.

  • fast/mediastream/RTCPeerConnection-getConfiguration-expected.txt: Regenerated; no new failures.
  • fast/mediastream/RTCPeerConnection-getConfiguration.html: Updated test to expect the username

and credential fields to round trip as missing rather than turning from missing into empty strings.
Also updated the tests to pass in sequences of strings for "urls" since they expect sequences on
the way back out. We could also test round tripping of single strings, which should go in and come
back out as individual strings, but for now I did not bother adding that to this test.

  • fast/mediastream/RTCSessionDescription-expected.txt: Regenerated; some exception messages are

now more specific than they were before.

  • imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-constructor-expected.txt:

Updated expected results. The new code correctly allows callers of the RTCPeerConnection constructor
to omit iceServers, pass undefined, or pass an empty array, as specified. Thuis change leads to
a couple tests that now correctly pass instead of failing. And it also leads to some other tests
failing that were passing before. These were passing because they expected an exception for some
other reason, however the exception was actually occurring because of incorrect handling of iceServers.

5:41 PM Changeset in webkit [209694] by fpizlo@apple.com
  • 1 edit in trunk/Source/JavaScriptCore/ChangeLog

Re-enable concurrent GC.

Rubber stampted by Saam Barati.

This change actually landed in r209692 by accident.

  • runtime/Options.h:
5:39 PM Changeset in webkit [209693] by fpizlo@apple.com
  • 2 edits in trunk/Source/WTF

Change to use #pragma once (requested by Darin Adler).

  • wtf/RecursiveLockAdapter.h:
5:34 PM Changeset in webkit [209692] by fpizlo@apple.com
  • 3 edits in trunk/Source

Change to use #pragma once (requested by Darin Adler).

  • wtf/LockedPrintStream.h:
5:19 PM Changeset in webkit [209691] by fpizlo@apple.com
  • 20 edits
    4 adds in trunk/Source

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

Reviewed by Saam Barati.

Source/JavaScriptCore:

MarkedBlock::marksConveyLivenessDuringMarking thought that the off-by-one marking
version indicated liveness during any collection when it's just during full collection.
One of its users - MarkedBlock::sweep - knew this and had a special case, but the other
one - MarkedBlock::isLive - didn't. So, I moved the special case into
marksConveyLivenessDuringMarking.

Also, this cleans up some remaining bitvector races.

To find this bug, I significantly strengthened our assertions.

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

(JSC::CellContainer::isNewlyAllocated):

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

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

  • heap/MarkedAllocator.h:

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

  • heap/MarkedBlock.cpp:

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

  • heap/MarkedBlock.h:

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

  • heap/MarkedBlockInlines.h:

(JSC::MarkedBlock::marksConveyLivenessDuringMarking):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendJSCellOrAuxiliary):

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/StructureIDTable.h:

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

Source/WTF:

To find this bug, I needed to seriously beef up our logging infrastructure.

It's now the case that:

dataLog(...);


will print its output atomically. This happens with some careful magic:

  • dataFile() is now a LockedPrintStream that locks around print().


  • The lock is a recursive lock via RecursiveLockAdapter<>, so if the dump methods end up calling back into dataLog() then it just works. This is important: say the dump() calls a getter that itself does logging, maybe because it's encountering badness and wants to report it before crashing).


  • The lock is a WordLock so that ParkingLot and Lock can keep using dataLog() for debugging. We probably won't need to debug WordLock anytime soon - the algorithm is so simple.


  • LockedPrintStream::print(...) causes the print callbacks of its arguments to run on the underlying PrintStream, so that you don't need to do recursive lock acquisition on each individual argument and whatever printing it does recursively.
  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/DataLog.cpp:

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

  • wtf/DataLog.h:
  • wtf/LockedPrintStream.cpp: Added.

(WTF::LockedPrintStream::LockedPrintStream):
(WTF::LockedPrintStream::~LockedPrintStream):
(WTF::LockedPrintStream::vprintf):
(WTF::LockedPrintStream::flush):
(WTF::LockedPrintStream::begin):
(WTF::LockedPrintStream::end):

  • wtf/LockedPrintStream.h: Added.
  • wtf/PrintStream.cpp:

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

  • wtf/PrintStream.h:

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

  • wtf/RecursiveLockAdapter.h: Added.

(WTF::RecursiveLockAdapter::RecursiveLockAdapter):
(WTF::RecursiveLockAdapter::lock):
(WTF::RecursiveLockAdapter::unlock):
(WTF::RecursiveLockAdapter::tryLock):
(WTF::RecursiveLockAdapter::isLocked):

  • wtf/WordLock.cpp:
  • wtf/WordLock.h:
5:10 PM Changeset in webkit [209690] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit2

Quarter-second stalls scrolling images that are links because of sync getPositionInformation
https://bugs.webkit.org/show_bug.cgi?id=165707

Reviewed by Simon Fraser.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView positionInformationForActionSheetAssistant:]):
(-[WKContentView updatePositionInformationForActionSheetAssistant:]):
For now, synchronously block when presenting the action sheet if we
don't have a snapshot ready.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):
Respect includeSnapshot in another place in getPositionInformation,
so that many getPositionInformations don't have to do extra snapshotting work.

4:57 PM Changeset in webkit [209689] by Darin Adler
  • 7 edits in trunk/Source

Use std::vsnprintf instead of vasprintf
https://bugs.webkit.org/show_bug.cgi?id=165740

Reviewed by Sam Weinig.

Source/WebCore:

  • platform/FileHandle.cpp:

(WebCore::FileHandle::printf): Use vsnprintf, including StringExtras.h to
ensure compatibility with older versions of the Visual Studio library,
and Vector for the buffer. Use inline capacity in the vector so we normally
don't need to allocate any memory on the heap.

  • xml/XSLTUnicodeSort.cpp:

(xsltTransformErrorTrampoline): Ditto.

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::error): Ditto.

Source/WTF:

  • wtf/Platform.h: Remove HAVE_VASPRINTF.
  • wtf/StringExtras.h: Change the vsnprintf workaround to be used only

in older versions of Visual Studio, since the problem it works around
was resolved in Visual Studio 2015.

4:56 PM Changeset in webkit [209688] by Darin Adler
  • 4 edits in trunk/Source/WebCore

Make some refinements to HTMLPlugInImageElement
https://bugs.webkit.org/show_bug.cgi?id=165742

Reviewed by Sam Weinig.

  • html/HTMLPlugInImageElement.cpp: Removed many unneeded includes.

(WebCore::titleText): Use HashMap::ensure, correct argument types.
(WebCore::subtitleText): Ditto.
(WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement): Moved
initialization of most scalars to the class definition.
(WebCore::HTMLPlugInImageElement::isImageType): Use auto.
(WebCore::HTMLPlugInImageElement::wouldLoadAsPlugIn): Removed
unneeded local variable and if statement.
(WebCore::HTMLPlugInImageElement::willDetachRenderers): Use auto.
(WebCore::HTMLPlugInImageElement::updateSnapshot): Do not call
renderer twice unnecessarily.
(WebCore::plugInImageElementIsolatedWorld): Use auto.
(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot): Use auto.
(WebCore::HTMLPlugInImageElement::partOfSnapshotOverlay): Use auto.
(WebCore::HTMLPlugInImageElement::restartSimilarPlugIns): Got rid of
unnecessary typedef.
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot): Take a
reference rather than PassRefPtr.
(WebCore::documentHadRecentUserGesture): Removed unneeded if.
(WebCore::HTMLPlugInImageElement::checkSizeChangeForSnapshotting): Use auto.
(WebCore::isSmallerThanTinySizingThreshold): Use auto.
(WebCore::HTMLPlugInImageElement::isTopLevelFullPagePlugin): Use auto.
(WebCore::HTMLPlugInImageElement::checkSnapshotStatus): Use auto.
(WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn): Got rid
of unnecessary local variable. Use auto.
(WebCore::HTMLPlugInImageElement::requestObject): Got rid of unnecessary
local variable.

  • html/HTMLPlugInImageElement.h: Updated for the above. Removed incorrect

use of const. Initialized all scalars. Made function private and final.

  • rendering/RenderSnapshottedPlugIn.cpp:

(WebCore::RenderSnapshottedPlugIn::handleEvent): Pass reference instead
of pointer.

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

Web Inspector: Cleanup some InspectorInstrumentation network loading notifications
https://bugs.webkit.org/show_bug.cgi?id=165688

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-12-11
Reviewed by Brian Burg.

Eliminate InspectorInstrumentation::willReceiveResourceResponse by folding
it into InspectorInstrumentation::didReceiveResourceResponse. Simplify other
related InspectorInstrumentation calls by using references and using more
consistent InspectorInstrumentation patterns.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didReceiveResourceResponseImpl):
(WebCore::InspectorInstrumentation::willReceiveResourceResponseImpl): Deleted.
(WebCore::InspectorInstrumentation::didReceiveResourceResponseButCanceledImpl): Deleted.
(WebCore::InspectorInstrumentation::continueAfterXFrameOptionsDeniedImpl): Deleted.
(WebCore::InspectorInstrumentation::continueWithPolicyDownloadImpl): Deleted.
(WebCore::InspectorInstrumentation::continueWithPolicyIgnoreImpl): Deleted.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didReceiveResourceResponse):
(WebCore::InspectorInstrumentation::continueAfterXFrameOptionsDenied):
(WebCore::InspectorInstrumentation::continueWithPolicyDownload):
(WebCore::InspectorInstrumentation::continueWithPolicyIgnore):
(WebCore::InspectorInstrumentation::willReceiveResourceResponse): Deleted.

  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::validatePreflightResponse):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied):
(WebCore::DocumentLoader::continueAfterContentPolicy):

  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::dispatchDidReceiveResponse):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::didReceiveResponse):

3:37 PM Changeset in webkit [209686] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk/Source/WebInspectorUI

Web Inspector: Move MainTarget and WorkerTarget to their own files
https://bugs.webkit.org/show_bug.cgi?id=165701

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-12-11
Reviewed by Brian Burg.

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager.prototype.scriptDidParse):

  • UserInterface/Main.html:
  • UserInterface/Protocol/MainTarget.js: Added.

(WebInspector.MainTarget):
(WebInspector.MainTarget.prototype.get displayName):
(WebInspector.MainTarget.prototype.get mainResource):

  • UserInterface/Protocol/Target.js:

(WebInspector.Target):
(WebInspector.MainTarget): Deleted.
(WebInspector.MainTarget.prototype.get displayName): Deleted.
(WebInspector.MainTarget.prototype.get mainResource): Deleted.
(WebInspector.MainTarget.prototype.initialize): Deleted.
(WebInspector.WorkerTarget): Deleted.
(WebInspector.WorkerTarget.prototype.get displayName): Deleted.
(WebInspector.WorkerTarget.prototype.initialize): Deleted.

  • UserInterface/Protocol/WorkerTarget.js: Added.

(WebInspector.WorkerTarget):
(WebInspector.WorkerTarget.prototype.get displayName):

  • UserInterface/Test.html:
2:08 PM Changeset in webkit [209685] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[MediaStream] Protect MediaDevicesRequest during callback
https://bugs.webkit.org/show_bug.cgi?id=165711
<rdar://problem/28400468>

Reviewed by Sam Weinig.

No new tests, I was unable to create a reproducible test but this fix avoids
an occasional crash in existing tests.

  • Modules/mediastream/MediaDevicesEnumerationRequest.cpp:

(WebCore::MediaDevicesEnumerationRequest::start): Take a reference to the object
before calling the controller in case the completion handler is called synchronously.

2:00 PM Changeset in webkit [209684] by jiewen_tan@apple.com
  • 1 edit
    8 adds in trunk/LayoutTests

[WebCrypto] Add tests for wrap/unwrap SPKI/PKCS8 keys
https://bugs.webkit.org/show_bug.cgi?id=165557

Reviewed by Darin Adler.

  • crypto/subtle/aes-cbc-import-key-unwrap-pkcs8-key-expected.txt: Added.
  • crypto/subtle/aes-cbc-import-key-unwrap-pkcs8-key.html: Added.
  • crypto/subtle/aes-cbc-import-key-unwrap-spki-key-expected.txt: Added.
  • crypto/subtle/aes-cbc-import-key-unwrap-spki-key.html: Added.
  • crypto/subtle/aes-cbc-import-key-wrap-pkcs8-key-expected.txt: Added.
  • crypto/subtle/aes-cbc-import-key-wrap-pkcs8-key.html: Added.
  • crypto/subtle/aes-cbc-import-key-wrap-spki-key-expected.txt: Added.
  • crypto/subtle/aes-cbc-import-key-wrap-spki-key.html: Added.
10:19 AM Changeset in webkit [209683] by fpizlo@apple.com
  • 58 edits
    2 adds in trunk/Source

The DOM should have an advancing wavefront opaque root barrier
https://bugs.webkit.org/show_bug.cgi?id=165712

Reviewed by Yusuke Suzuki.
Source/JavaScriptCore:


This exposes the ability to fire an advancing wavefront barrier on opaque roots. It also
gives clients the ability to maintain their own cache of whether that barrier needs to
be enabled.

The DOM uses this to enable a very cheap barrier on the DOM. This is neutral on
Speedometer and fixes another concurrent GC crash.

  • heap/Heap.cpp:

(JSC::Heap::beginMarking):
(JSC::Heap::endMarking):
(JSC::Heap::writeBarrierOpaqueRootSlow):
(JSC::Heap::addMutatorShouldBeFencedCache):
(JSC::Heap::setMutatorShouldBeFenced):

  • heap/Heap.h:
  • heap/HeapInlines.h:

(JSC::writeBarrierOpaqueRoot):

Source/WebCore:

No new tests because this was covered by crashing tests.

Consider these two cases:

Removal:
1) DOM at start: D->X->Y
2) Mark X, X->visitChildren, addOpaqueRoot(D)
3) remove X
4) Y thinks it's not reachable (its opaque root, X, is not in the set).


Insertion:
1) DOM at start: D, X->Y
2) Mark X, X->visitChildren, addOpaqueRoot(X)
3) insert X into D
4) Y thinks it's not reachable (its opaque root, D, is not in the set).


We can fix this with two barriers:

Removal: add X (the removed child) to the opaque root set.
Insertion: add D (the insertion point) to the opaque root set.


Thanks Rysosuke for coming up with this idea!

Both barriers advance the wavefront. We could consider retreating wavefront barriers in
the future (where we cause visitChildren to be called again on wrappers that belonged to
roots that got affected by insertion/removal) but those would probably require more
bookkeeping.

To make this barrier very fast, the WebCore caches the JSC VM's barrier state in
its own global variable for very fast access. This variable will be false most of the
time. It's false when there is no VM, so triggering the barrier won't cause the VM to be
created. It's only true when GC is running, which is rare by design.

To make that caching more sensible, I finally gave WebCore a central header for
the common VM (CommonVM.h).

  • CMakeLists.txt:
  • Modules/mediastream/SDPProcessor.cpp:

(WebCore::SDPProcessor::callScript):

  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/CommonVM.cpp: Added.

(WebCore::commonVMSlow):
(WebCore::writeBarrierOpaqueRootSlow):

  • bindings/js/CommonVM.h: Added.

(WebCore::commonVM):
(WebCore::writeBarrierOpaqueRoot):

  • bindings/js/DOMWrapperWorld.cpp:

(WebCore::mainThreadNormalWorld):

  • bindings/js/GCController.cpp:

(WebCore::collect):
(WebCore::GCController::garbageCollectSoon):
(WebCore::GCController::garbageCollectNow):
(WebCore::GCController::garbageCollectNowIfNotDoneRecently):
(WebCore::GCController::setJavaScriptGarbageCollectorTimerEnabled):
(WebCore::GCController::deleteAllCode):
(WebCore::GCController::deleteAllLinkedCode):

  • bindings/js/JSCustomXPathNSResolver.cpp:

(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):

  • bindings/js/JSDOMBinding.cpp:

(WebCore::addImpureProperty):

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::fireFrameClearedWatchpointsForWindow):
(WebCore::JSDOMWindowBase::commonVM): Deleted.

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWindowShell.cpp:

(WebCore::JSDOMWindowShell::setWindow):

  • bindings/js/JSNodeCustom.h:

(WebCore::root):

  • bindings/js/ScriptCachedFrameData.cpp:

(WebCore::ScriptCachedFrameData::ScriptCachedFrameData):
(WebCore::ScriptCachedFrameData::restore):
(WebCore::ScriptCachedFrameData::clear):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::~ScriptController):
(WebCore::ScriptController::createWorld):
(WebCore::ScriptController::getAllWorlds):
(WebCore::ScriptController::clearWindowShell):
(WebCore::ScriptController::cacheableBindingRootObject):
(WebCore::ScriptController::bindingRootObject):
(WebCore::ScriptController::windowScriptNPObject):
(WebCore::ScriptController::jsObjectForPluginElement):
(WebCore::ScriptController::clearScriptObjects):

  • dom/CollectionIndexCache.cpp:

(WebCore::reportExtraMemoryAllocatedForCollectionIndexCache):

  • dom/ContainerNode.cpp:
  • dom/ContainerNodeAlgorithms.cpp:

(WebCore::notifyChildNodeInserted):
(WebCore::notifyChildNodeRemoved):

  • dom/Document.cpp:

(WebCore::Document::shouldBypassMainWorldContentSecurityPolicy):

  • dom/Node.h:

(WebCore::Node::opaqueRoot):

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::vm):

  • html/HTMLImageLoader.cpp:

(WebCore::HTMLImageLoader::notifyFinished):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pauseAfterDetachedTask):
(WebCore::HTMLMediaElement::ensureIsolatedWorld):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::plugInImageElementIsolatedWorld):

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::vm):

  • inspector/PageScriptDebugServer.cpp:

(WebCore::PageScriptDebugServer::PageScriptDebugServer):

  • page/PerformanceLogging.cpp:

(WebCore::PerformanceLogging::memoryUsageStatistics):
(WebCore::PerformanceLogging::javaScriptObjectCounts):

  • page/ResourceUsageThread.cpp:

(WebCore::ResourceUsageThread::createThreadIfNeeded):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::reportApproximateMemoryCost):

  • testing/MemoryInfo.h:

(WebCore::MemoryInfo::MemoryInfo):

Source/WebKit/mac:


Propagate the JSDOMWindowBase::commonVM() -> commonVM() change.

  • Misc/WebCoreStatistics.mm:

(+[WebCoreStatistics javaScriptObjectsCount]):
(+[WebCoreStatistics javaScriptGlobalObjectsCount]):
(+[WebCoreStatistics javaScriptProtectedObjectsCount]):
(+[WebCoreStatistics javaScriptProtectedGlobalObjectsCount]):
(+[WebCoreStatistics javaScriptProtectedObjectTypeCounts]):
(+[WebCoreStatistics javaScriptObjectTypeCounts]):
(+[WebCoreStatistics shouldPrintExceptions]):
(+[WebCoreStatistics setShouldPrintExceptions:]):
(+[WebCoreStatistics memoryStatistics]):
(+[WebCoreStatistics javaScriptReferencedObjectsCount]):

  • Plugins/Hosted/NetscapePluginHostProxy.mm:

(identifierFromIdentifierRep):

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyInstance::getPropertyNames):

  • Plugins/WebNetscapePluginStream.mm:

(WebNetscapePluginStream::wantsAllStreams):

  • Plugins/WebNetscapePluginView.mm:

(-[WebNetscapePluginView sendEvent:isDrawRect:]):
(-[WebNetscapePluginView privateBrowsingModeDidChange]):
(-[WebNetscapePluginView setWindowIfNecessary]):
(-[WebNetscapePluginView createPluginScriptableObject]):
(-[WebNetscapePluginView getFormValue:]):
(-[WebNetscapePluginView evaluateJavaScriptPluginRequest:]):
(-[WebNetscapePluginView webFrame:didFinishLoadWithReason:]):
(-[WebNetscapePluginView loadPluginRequest:]):
(-[WebNetscapePluginView _printedPluginBitmap]):

  • Plugins/WebPluginController.mm:

(-[WebPluginController plugInViewWithArguments:fromPluginPackage:]):
(-[WebPluginController stopOnePlugin:]):
(-[WebPluginController stopOnePluginForPageCache:]):
(-[WebPluginController destroyOnePlugin:]):
(-[WebPluginController startAllPlugins]):
(-[WebPluginController addPlugin:]):

Source/WebKit/win:


Propagate the JSDOMWindowBase::commonVM() -> commonVM() change.

  • Plugins/PluginView.cpp:

(WebCore::PluginView::start):
(WebCore::PluginView::stop):
(WebCore::PluginView::performRequest):
(WebCore::PluginView::npObject):
(WebCore::PluginView::privateBrowsingStateChanged):

  • Plugins/PluginViewWin.cpp:

(WebCore::PluginView::dispatchNPEvent):
(WebCore::PluginView::handleKeyboardEvent):
(WebCore::PluginView::handleMouseEvent):
(WebCore::PluginView::setNPWindowRect):

  • WebCoreStatistics.cpp:

(WebCoreStatistics::javaScriptObjectsCount):
(WebCoreStatistics::javaScriptGlobalObjectsCount):
(WebCoreStatistics::javaScriptProtectedObjectsCount):
(WebCoreStatistics::javaScriptProtectedGlobalObjectsCount):
(WebCoreStatistics::javaScriptProtectedObjectTypeCounts):
(WebCoreStatistics::javaScriptObjectTypeCounts):
(WebCoreStatistics::shouldPrintExceptions):
(WebCoreStatistics::setShouldPrintExceptions):
(WebCoreStatistics::memoryStatistics):

  • WebJavaScriptCollector.cpp:

(WebJavaScriptCollector::objectCount):

Source/WebKit2:


Propagate the JSDOMWindowBase::commonVM() -> commonVM() change.

  • Shared/linux/WebMemorySamplerLinux.cpp:

(WebKit::WebMemorySampler::sampleWebKit):

  • Shared/mac/WebMemorySampler.mac.mm:

(WebKit::WebMemorySampler::sampleWebKit):

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::javaScriptObjectsCount):

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::callMethod):
(WebKit::JSNPObject::callObject):
(WebKit::JSNPObject::callConstructor):
(WebKit::JSNPObject::put):
(WebKit::JSNPObject::deleteProperty):
(WebKit::JSNPObject::getOwnPropertyNames):
(WebKit::JSNPObject::propertyGetter):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::runJavaScriptInMainFrame):
(WebKit::WebPage::getBytecodeProfile):
(WebKit::WebPage::getSamplingProfilerOutput):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::getWebCoreStatistics):

10:10 AM Changeset in webkit [209682] by mitz@apple.com
  • 4 edits in trunk

[Cocoa] NSAttributedString representation of text copied from -webkit-nbsp-mode:space element contains non-breaking space characters, but shouldn’t
https://bugs.webkit.org/show_bug.cgi?id=165515
<rdar://problem/4108460>

Reviewed by Darin Adler.

Source/WebCore:

Test: platform/mac/fast/text/attributed-substring-from-range.html

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::_processText): Emit a space instead of a non-breaking space if the text node

is styled with -webkit-nbsp-mode:space.

(WebCore::editingAttributedStringFromRange): Replace all non-breaking spaces with spaces if

they come from a text node with -webkit-nbsp-mode:space.

LayoutTests:

  • platform/mac/fast/text/attributed-substring-from-range-expected.txt: Updated.
4:48 AM Changeset in webkit [209681] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebKit2

Unreviewed build fix for EFL after r209665

  • UIProcess/efl/TextCheckerClientEfl.h:
3:11 AM Changeset in webkit [209680] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebCore

Unreviewed, add KHR include dir to fix ANGLE build after r209665
https://bugs.webkit.org/show_bug.cgi?id=165686

  • CMakeLists.txt:

Dec 10, 2016:

9:14 PM Changeset in webkit [209679] by hyatt@apple.com
  • 2 edits in trunk/Source/WebCore

Rolling out 165737, since it broke layout tests. I need to find a
different place to put the init.

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::isValidSelector):

5:14 PM Changeset in webkit [209678] by commit-queue@webkit.org
  • 105 edits
    13 deletes in trunk

Unreviewed, rolling out r209653, r209654, r209663, and
r209673.
https://bugs.webkit.org/show_bug.cgi?id=165739

speedometer crashes (Requested by pizlo on #webkit).

Reverted changesets:

"JSVALUE64: Pass arguments in platform argument registers when
making JavaScript calls"
https://bugs.webkit.org/show_bug.cgi?id=160355
http://trac.webkit.org/changeset/209653

"Unreviewed build fix for 32 bit builds."
http://trac.webkit.org/changeset/209654

"Unreviewed build fix for the CLOOP after r209653"
http://trac.webkit.org/changeset/209663

"REGRESSION(r209653) Crash in CallFrameShuffler::snapshot()"
https://bugs.webkit.org/show_bug.cgi?id=165728
http://trac.webkit.org/changeset/209673

4:04 PM Changeset in webkit [209677] by Simon Fraser
  • 8 edits in trunk

Support the deprecated dictionary constructor for DOMPointReadOnly and DOMPoint
https://bugs.webkit.org/show_bug.cgi?id=165732

Reviewed by Sam Weinig.
Source/WebCore:

For compatibility with other browsers, support the DOMPointInit constructor to
DOMPoint and DOMPointReadOnly per <https://www.w3.org/TR/geometry-1/#DOMPoint>

Extended geometry/DOMPoint-001.html to test.

  • dom/DOMPoint.h:
  • dom/DOMPoint.idl:
  • dom/DOMPointReadOnly.h:

(WebCore::DOMPointReadOnly::create):

  • dom/DOMPointReadOnly.idl:

LayoutTests:

  • geometry/DOMPoint-001-expected.txt:
  • geometry/DOMPoint-001.html:
3:36 PM Changeset in webkit [209676] by hyatt@apple.com
  • 2 edits in trunk/Source/WebCore

[CSS Parser] Make sure content extensions initialize AtomicString
https://bugs.webkit.org/show_bug.cgi?id=165737

Reviewed by Simon Fraser.

Fixes two broken tests in TestWebkitAPI.

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::isValidSelector):

2:29 PM Changeset in webkit [209675] by Simon Fraser
  • 4 edits
    2 adds in trunk

Animation followed by transition doesn't always fire transitionend event
https://bugs.webkit.org/show_bug.cgi?id=165731
rdar://problem/28471240

Reviewed by Zalan Bujtas.
Source/WebCore:

After r200047, a keyframe animation of an accelerated property followed by a
transition didn't always fire a transitionend event.

This happened if CompositeAnimation::timeToNextService() happend to be called
when the transitions's timeToNextService() returned a positive value, but the
keyframe animation still existed, but its timeToNextService() returned -1. In
this case that -1 would clobber the positing minT.

Fix by just continuing in each loop when the timeToNextService() returns -1.

This code should probably be rewritten to use std::optional<double> rather than
magic values.

Test: animations/animation-followed-by-transition.html

  • page/animation/CompositeAnimation.cpp:

(WebCore::CompositeAnimation::timeToNextService):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::addAnimation):
(WebCore::GraphicsLayerCA::pauseAnimation):
(WebCore::GraphicsLayerCA::removeAnimation):
(WebCore::GraphicsLayerCA::platformCALayerAnimationStarted):
(WebCore::GraphicsLayerCA::platformCALayerAnimationEnded):

LayoutTests:

  • animations/animation-followed-by-transition-expected.txt: Added.
  • animations/animation-followed-by-transition.html: Added.
2:13 PM Changeset in webkit [209674] by weinig@apple.com
  • 11 edits
    2 deletes in trunk/Source/WebCore

[WebIDL] Merge JSDictionary into Dictionary, and remove unused bits
https://bugs.webkit.org/show_bug.cgi?id=165641

Reviewed by Dan Bernstein.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:

Remove JSDictionary.h/cpp

  • Modules/mediastream/RTCDataChannel.cpp:

Remove unused #include of Dictionary.h

  • Modules/mediastream/RTCPeerConnection.cpp:
  • Modules/mediastream/RTCPeerConnection.h:

Replace unnecessary #include of Dictionary in a header with forward declaration.

  • bindings/js/Dictionary.cpp:

(WebCore::Dictionary::Dictionary):
(WebCore::Dictionary::tryGetProperty):
(WebCore::Dictionary::getOwnPropertyNames):
(WebCore::Dictionary::convertValue):
(WebCore::Dictionary::asJSObject<Notification>): Deleted.
(WebCore::Dictionary::getOwnPropertiesAsStringHashMap): Deleted.
(WebCore::Dictionary::getWithUndefinedOrNullCheck): Deleted.

  • bindings/js/Dictionary.h:

(WebCore::Dictionary::isObject):
(WebCore::Dictionary::isUndefinedOrNull):
(WebCore::Dictionary::execState):
(WebCore::Dictionary::initializerObject):
(WebCore::Dictionary::isValid):
(WebCore::Dictionary::convertValue):
(WebCore::Dictionary::get):
(WebCore::Dictionary::tryGetPropertyAndResult):
(WebCore::Dictionary::getEventListener): Deleted.
Merge JSDictionary into Dictionary. Remove all unused functions (some getters, lots
of convertValue overrides). Modernize to taste.

  • bindings/js/JSCryptoAlgorithmDictionary.cpp:

(WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):
(WebCore::getHashAlgorithm):
(WebCore::createHmacParams):
(WebCore::createHmacKeyParams):
(WebCore::createRsaKeyGenParams):
(WebCore::createRsaOaepParams):
(WebCore::createRsaSsaParams):
Update for rename. JSDictionary is now Dictionary.

  • bindings/js/JSDictionary.cpp: Removed.
  • bindings/js/JSDictionary.h: Removed.
  • dom/MutationObserver.cpp:

Remove unused #include of Dictionary.h

1:04 PM Changeset in webkit [209673] by msaboff@apple.com
  • 3 edits
    1 add in trunk

REGRESSION(r209653) Crash in CallFrameShuffler::snapshot()
https://bugs.webkit.org/show_bug.cgi?id=165728

Reviewed by Filip Pizlo.

JSTests:

New regression test.

  • stress/regress-165728.js: Added.

(sum1):
(sum2):
(tailCaller):
(test):

Source/JavaScriptCore:

It can be the case that a JSValueReg's CachedRecovery is the source for mutliple
GPRs. We only store the CachedRecovery in one slot of m_newRegisters to simplify
the recovery process. This is also done for the case where the recovery source
and destination are the same GPR.

In light of this change, snapshot needs to be taught that one CacheRecovery is
the source for multiple registers. This is done by using a two step process.
First find all the argument CachedRecovery's and create a vector mapping all of
the target GPRs and the source recovery. Then use that vector to get the
recovery for each register.

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::snapshot):

12:44 PM Changeset in webkit [209672] by beidson@apple.com
  • 3 edits
    3 adds in trunk/PerformanceTests

More IndexedDB perf tests.
https://bugs.webkit.org/show_bug.cgi?id=165634

Reviewed by Sam Weinig.

  • IndexedDB/index-multientry.html:
  • IndexedDB/large-number-of-inserts-responsiveness.html: Added.
  • IndexedDB/large-number-of-inserts.html: Added.
  • IndexedDB/objectstore-cursor.html: Added.
  • resources/runner.js: Add "track responsiveness" functionality to PerfTestRunner.
12:38 PM Changeset in webkit [209671] by hyatt@apple.com
  • 10 edits
    2 moves in trunk/Source/WebCore

[CSS Parser] Move CSSParserValues.h/.cpp to CSSParserSelector.h/.cpp
https://bugs.webkit.org/show_bug.cgi?id=165730

Reviewed by Simon Fraser.

  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSCustomPropertyValue.cpp:
  • css/CSSPrimitiveValue.cpp:
  • css/CSSSelectorList.cpp:
  • css/makeSelectorPseudoClassAndCompatibilityElementMap.py:
  • css/parser/CSSParserImpl.cpp:
  • css/parser/CSSParserSelector.cpp: Copied from Source/WebCore/css/parser/CSSParserValues.cpp.
  • css/parser/CSSParserSelector.h: Copied from Source/WebCore/css/parser/CSSParserValues.h.
  • css/parser/CSSParserValues.cpp: Removed.
  • css/parser/CSSParserValues.h: Removed.
  • css/parser/CSSSelectorParser.h:
12:24 PM BuildingGtk edited by Michael Catanzaro
(diff)
12:22 PM Changeset in webkit [209670] by hyatt@apple.com
  • 4 edits in trunk/Source/WebCore

[CSS Parser] Remove the pseudoclass/element hacks
https://bugs.webkit.org/show_bug.cgi?id=165729

Reviewed by Sam Weinig.

  • css/SelectorPseudoClassAndCompatibilityElementMap.in:
  • css/SelectorPseudoElementTypeMap.in:
  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumePseudo):

12:21 PM BuildingGtk edited by Michael Catanzaro
(diff)
11:36 AM Changeset in webkit [209669] by weinig@apple.com
  • 17 edits
    1 add
    1 delete in trunk

[WebIDL] Remove custom bindings for Geolocation
https://bugs.webkit.org/show_bug.cgi?id=165625

Reviewed by Alex Christensen.

Source/WebCore:

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

Add/remove files.

  • Modules/geolocation/GeoNotifier.cpp:

(WebCore::GeoNotifier::GeoNotifier):
(WebCore::GeoNotifier::hasZeroTimeout):
(WebCore::GeoNotifier::startTimerIfNeeded):

  • Modules/geolocation/GeoNotifier.h:

(WebCore::GeoNotifier::create):
(WebCore::GeoNotifier::options):
Update to store PositionOptions as a value, and pass the PositionCallback
as a Ref, rather than a RefPtr, since it is not optional.

  • Modules/geolocation/Geolocation.cpp:

(WebCore::createGeoposition):
Use auto, to get the good type for Coordinates (Ref).

(WebCore::Geolocation::getCurrentPosition):
(WebCore::Geolocation::watchPosition):
(WebCore::Geolocation::haveSuitableCachedPosition):
(WebCore::Geolocation::startUpdating):

  • Modules/geolocation/Geolocation.h:

Update to pass PositionOptions itself now that it is a plain struct.

  • Modules/geolocation/Geolocation.idl:

Remove [Custom] extended attribute and add FIXME about nullable annotation.

  • Modules/geolocation/Geoposition.h:

Pass/store Coordinates as a Ref.

  • Modules/geolocation/PositionOptions.h:

Convert to be a simple struct.

  • Modules/geolocation/PositionOptions.idl:

Added.

  • bindings/js/JSGeolocationCustom.cpp:

Removed.

LayoutTests:

  • fast/dom/Geolocation/argument-types-expected.txt:
  • fast/dom/Geolocation/not-enough-arguments-expected.txt:
  • fast/dom/Geolocation/script-tests/argument-types.js:

Update tests for improved error messages / adherence to WebIDL.

11:14 AM Changeset in webkit [209668] by keith_miller@apple.com
  • 3 edits
    1 add in trunk

Fix indirect_call if the result type is used.
https://bugs.webkit.org/show_bug.cgi?id=165727

Reviewed by Michael Saboff.

JSTests:

  • wasm/js-api/call-indirect-results.js: Added.

(const.wasmModuleWhichImportJS):
(MonomorphicImport):

Source/JavaScriptCore:

The patchpoint for indirect_call assumed that the callee would be
in params[0]. This is not the case, however, if the callee returns
a value.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addCallIndirect):

10:32 AM Changeset in webkit [209667] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebKit

Unreviewed attempt to fix cmake build of Mac port after r209665.

  • PlatformMac.cmake: Avoid using relative path in

WebKit_INCLUDE_DIRECTORIES.

10:31 AM Changeset in webkit [209666] by hyatt@apple.com
  • 74 edits
    3 adds
    11 deletes in trunk

[CSS Parser] Remove the old CSS Parser
https://bugs.webkit.org/show_bug.cgi?id=165645

Reviewed by Daniel Bates.

Source/WebCore:

Remove the old CSS parser code. In doing so, code that used documentless
CSSParserContexts is now going through the new parser. This resulted in
some additional changes. These include:

(1) Canvas color parsing switched to new parser's code. This resulted in
progressions on canvas tests.

(2) Support for CSSNamespaceRule in the CSS OM, since the Inspector's
creation of CSS OM wrappers made it necessary to add this in. The old parser
did not create style rules for namespaces, but the new one (and other browsers)
did.

(3) <font face="X"> now uses the new parser's font-family parsing code. This
change was made in createFontFaceValue in CSSValuePool.

(4) FontFace now uses a new function on the new parser called
parseFontFaceDescriptor. This function sets things up so that parsing occurs
as though you are inside a @font-face. The old parser let you call parseValue
to parse "properties", but descriptors need to be handled differently in the
new parser.

(5) Illegal CSS rules in mediaControlsApple/ios.css forced me to add a quirk
to handle chained shadow DOM pseudo-elements. This should not be allowed, but
for now it is.

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

(WebCore::toJSNewlyCreated):

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:
  • css/CSSCalculationValue.cpp:

(WebCore::unitCategory):
(WebCore::hasDoubleValue):
(WebCore::checkDepthAndIndexDeprecated): Deleted.
(WebCore::CSSCalcExpressionNodeParserDeprecated::parseCalc): Deleted.
(WebCore::CSSCalcExpressionNodeParserDeprecated::operatorValue): Deleted.
(WebCore::CSSCalcExpressionNodeParserDeprecated::parseValue): Deleted.
(WebCore::CSSCalcExpressionNodeParserDeprecated::parseValueTerm): Deleted.
(WebCore::CSSCalcExpressionNodeParserDeprecated::parseValueMultiplicativeExpression): Deleted.
(WebCore::CSSCalcExpressionNodeParserDeprecated::parseAdditiveValueExpression): Deleted.
(WebCore::CSSCalcExpressionNodeParserDeprecated::parseValueExpression): Deleted.

  • css/CSSCalculationValue.h:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::specifiedValueForGridTrackSize):

  • css/CSSCustomPropertyValue.cpp:

(WebCore::CSSCustomPropertyValue::checkVariablesForCycles):
(WebCore::CSSCustomPropertyValue::resolveVariableReferences):

  • css/CSSCustomPropertyValue.h:
  • css/CSSFunctionValue.cpp:

(WebCore::CSSFunctionValue::CSSFunctionValue):
(WebCore::CSSFunctionValue::customCSSText):
(WebCore::CSSFunctionValue::append):
(WebCore::CSSFunctionValue::buildParserValueSubstitutingVariables): Deleted.

  • css/CSSFunctionValue.h:
  • css/CSSGrammar.y.in: Removed.
  • css/CSSGrammar.y.includes: Removed.
  • css/CSSGroupingRule.cpp:

(WebCore::CSSGroupingRule::insertRule):

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

(WebCore::CSSKeyframesRule::appendRule):

  • css/CSSNamespaceRule.cpp: Added.

(WebCore::CSSNamespaceRule::CSSNamespaceRule):
(WebCore::CSSNamespaceRule::~CSSNamespaceRule):
(WebCore::CSSNamespaceRule::namespaceURI):
(WebCore::CSSNamespaceRule::prefix):
(WebCore::CSSNamespaceRule::cssText):
(WebCore::CSSNamespaceRule::reattach):

  • css/CSSNamespaceRule.h: Added.
  • css/CSSNamespaceRule.idl: Added.
  • css/CSSPrimitiveValue.cpp:

(WebCore::isValidCSSUnitTypeForDoubleConversion):
(WebCore::isStringType):
(WebCore::CSSPrimitiveValue::cleanup):
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText):
(WebCore::CSSPrimitiveValue::cloneForCSSOM):
(WebCore::CSSPrimitiveValue::equals):
(WebCore::CSSPrimitiveValue::buildParserValue): Deleted.

  • css/CSSPrimitiveValue.h:
  • css/CSSRule.h:
  • css/CSSRule.idl:
  • css/CSSStyleSheet.cpp:

(WebCore::CSSStyleSheet::insertRule):

  • css/CSSValue.cpp:

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

  • css/CSSValue.h:

(WebCore::CSSValue::isCustomPropertyValue):
(WebCore::CSSValue::hasVariableReferences):
(WebCore::CSSValue::isVariableDependentValue): Deleted.
(WebCore::CSSValue::isVariableValue): Deleted.

  • css/CSSValueList.cpp:

(WebCore::CSSValueList::customCSSText):
(WebCore::CSSValueList::containsVariables): Deleted.
(WebCore::CSSValueList::checkVariablesForCycles): Deleted.
(WebCore::CSSValueList::buildParserValueSubstitutingVariables): Deleted.
(WebCore::CSSValueList::buildParserValueListSubstitutingVariables): Deleted.

  • css/CSSValueList.h:

(WebCore::CSSValueList::createSlashSeparated):
(WebCore::CSSValueList::createFromParserValueList): Deleted.

  • css/CSSValuePool.cpp:

(WebCore::CSSValuePool::createFontFaceValue):

  • css/CSSVariableData.cpp:
  • css/CSSVariableDependentValue.cpp: Removed.
  • css/CSSVariableDependentValue.h: Removed.
  • css/CSSVariableValue.cpp: Removed.
  • css/CSSVariableValue.h: Removed.
  • css/DOMCSSNamespace.cpp:
  • css/FontFace.cpp:

(WebCore::FontFace::parseString):

  • css/InspectorCSSOMWrappers.cpp:
  • css/MediaQueryExp.cpp:

(WebCore::isFeatureValidWithIdentifier): Deleted.
(WebCore::isFeatureValidWithNonNegativeLengthOrNumber): Deleted.
(WebCore::isFeatureValidWithDensity): Deleted.
(WebCore::isFeatureValidWithNonNegativeInteger): Deleted.
(WebCore::isFeatureValidWithNonNegativeNumber): Deleted.
(WebCore::isFeatureValidWithZeroOrOne): Deleted.
(WebCore::isFeatureValidWithNumberWithUnit): Deleted.
(WebCore::isFeatureValidWithNumber): Deleted.
(WebCore::isSlash): Deleted.
(WebCore::isPositiveIntegerValue): Deleted.

  • css/MediaQueryExp.h:
  • css/PropertySetCSSStyleDeclaration.cpp:

(WebCore::PropertySetCSSStyleDeclaration::setCssText):
(WebCore::PropertySetCSSStyleDeclaration::setProperty):

  • css/SelectorPseudoTypeMap.h:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue):
(WebCore::StyleProperties::getPropertyCSSValue):
(WebCore::MutableStyleProperties::setCustomProperty):
(WebCore::MutableStyleProperties::parseDeclaration):
(WebCore::StyleProperties::asText):

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

(WebCore::StyleResolver::applyProperty):

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

(WebCore::StyleRuleBase::createCSSOMWrapper):

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):
(WebCore::StyleSheetContents::parseString):
(WebCore::StyleSheetContents::completeURL):
(WebCore::StyleSheetContents::parseStringAtPosition): Deleted.

  • css/StyleSheetContents.h:
  • css/WebKitCSSMatrix.cpp:
  • css/makeSelectorPseudoClassAndCompatibilityElementMap.py:
  • css/parser/CSSParser.cpp:

(WebCore::CSSParserContext::CSSParserContext):
(WebCore::CSSParser::CSSParser):
(WebCore::CSSParser::parseSheet):
(WebCore::CSSParser::parseRule):
(WebCore::CSSParser::parseKeyframeRule):
(WebCore::CSSParser::parseSupportsCondition):
(WebCore::CSSParser::parseColor):
(WebCore::CSSParser::parseSystemColor):
(WebCore::CSSParser::parseSingleValue):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseCustomPropertyValue):
(WebCore::CSSParser::parseSelector):
(WebCore::CSSParser::parseInlineStyleDeclaration):
(WebCore::CSSParser::parseDeclaration):
(WebCore::CSSParser::parseValueWithVariableReferences):
(WebCore::CSSParser::parseKeyframeKeyList):
(WebCore::CSSParser::parseFontFaceDescriptor):
(WebCore::equalLettersIgnoringASCIICase): Deleted.
(WebCore::hasPrefix): Deleted.
(WebCore::createPrimitiveValuePair): Deleted.
(WebCore::AnimationParseContext::commitFirstAnimation): Deleted.
(WebCore::AnimationParseContext::hasCommittedFirstAnimation): Deleted.
(WebCore::AnimationParseContext::commitAnimationPropertyKeyword): Deleted.
(WebCore::AnimationParseContext::animationPropertyKeywordAllowed): Deleted.
(WebCore::AnimationParseContext::hasSeenAnimationPropertyKeyword): Deleted.
(WebCore::AnimationParseContext::sawAnimationPropertyKeyword): Deleted.
(): Deleted.
(WebCore::convertToASCIILowercaseInPlace): Deleted.
(WebCore::CSSParserString::convertToASCIILowercaseInPlace): Deleted.
(WebCore::CSSParser::setupParser): Deleted.
(WebCore::isColorPropertyID): Deleted.
(WebCore::CSSParser::isValidSystemColorValue): Deleted.
(WebCore::validPrimitiveValueColor): Deleted.
(WebCore::parseColorValue): Deleted.
(WebCore::isSimpleLengthPropertyID): Deleted.
(WebCore::parseSimpleLength): Deleted.
(WebCore::parseSimpleLengthValue): Deleted.
(WebCore::isValidKeywordPropertyAndValue): Deleted.
(WebCore::isUniversalKeyword): Deleted.
(WebCore::isKeywordPropertyID): Deleted.
(WebCore::parseKeywordValue): Deleted.
(WebCore::parseTransformTranslateArguments): Deleted.
(WebCore::parseTranslateTransformValue): Deleted.
(WebCore::CSSParser::parseFontFaceValue): Deleted.
(WebCore::CSSParser::parseColorFromString): Deleted.
(WebCore::CSSParser::parseDeclarationDeprecated): Deleted.
(WebCore::filterProperties): Deleted.
(WebCore::CSSParser::createStyleProperties): Deleted.
(WebCore::CSSParser::addProperty): Deleted.
(WebCore::CSSParser::rollbackLastProperties): Deleted.
(WebCore::CSSParser::clearProperties): Deleted.
(WebCore::CSSParser::completeURL): Deleted.
(WebCore::CSSParser::validateCalculationUnit): Deleted.
(WebCore::CSSParser::shouldAcceptUnitLessValues): Deleted.
(WebCore::CSSParser::validateUnit): Deleted.
(WebCore::CSSParser::createPrimitiveNumericValue): Deleted.
(WebCore::CSSParser::createPrimitiveStringValue): Deleted.
(WebCore::isComma): Deleted.
(WebCore::isForwardSlashOperator): Deleted.
(WebCore::CSSParser::isValidSize): Deleted.
(WebCore::CSSParser::parseValidPrimitive): Deleted.
(WebCore::CSSParser::addExpandedPropertyForValue): Deleted.
(WebCore::isImageSetFunctionValue): Deleted.
(WebCore::CSSParser::addFillValue): Deleted.
(WebCore::isContentDistributionKeyword): Deleted.
(WebCore::isContentPositionKeyword): Deleted.
(WebCore::isBaselinePositionKeyword): Deleted.
(WebCore::isAlignmentOverflowKeyword): Deleted.
(WebCore::isItemPositionKeyword): Deleted.
(WebCore::CSSParser::parseLegacyPosition): Deleted.
(WebCore::CSSParser::parseContentDistributionOverflowPosition): Deleted.
(WebCore::CSSParser::parseItemPositionOverflowPosition): Deleted.
(WebCore::parseBackgroundClip): Deleted.
(WebCore::CSSParser::useLegacyBackgroundSizeShorthandBehavior): Deleted.
(WebCore::CSSParser::parseNonElementSnapPoints): Deleted.
(WebCore::CSSParser::parseScrollSnapPositions): Deleted.
(WebCore::CSSParser::parseScrollSnapDestination): Deleted.
(WebCore::CSSParser::parseScrollSnapCoordinate): Deleted.
(WebCore::CSSParser::parseFillShorthand): Deleted.
(WebCore::CSSParser::addAnimationValue): Deleted.
(WebCore::CSSParser::parseAnimationShorthand): Deleted.
(WebCore::CSSParser::parseColumnWidth): Deleted.
(WebCore::CSSParser::parseColumnCount): Deleted.
(WebCore::CSSParser::parseColumnsShorthand): Deleted.
(WebCore::CSSParser::parseTransitionShorthand): Deleted.
(WebCore::CSSParser::parseShorthand): Deleted.
(WebCore::CSSParser::parse4Values): Deleted.
(WebCore::CSSParser::parsePage): Deleted.
(WebCore::CSSParser::parseSize): Deleted.
(WebCore::CSSParser::parseSizeParameter): Deleted.
(WebCore::CSSParser::parseQuotes): Deleted.
(WebCore::CSSParser::parseAlt): Deleted.
(WebCore::CSSParser::parseCustomPropertyDeclaration): Deleted.
(WebCore::CSSParser::parseContent): Deleted.
(WebCore::CSSParser::parseAttr): Deleted.
(WebCore::CSSParser::parseBackgroundColor): Deleted.
(WebCore::CSSParser::parseFillImage): Deleted.
(WebCore::CSSParser::parsePositionX): Deleted.
(WebCore::CSSParser::parsePositionY): Deleted.
(WebCore::CSSParser::parseFillPositionComponent): Deleted.
(WebCore::isValueConflictingWithCurrentEdge): Deleted.
(WebCore::isFillPositionKeyword): Deleted.
(WebCore::CSSParser::parse4ValuesFillPosition): Deleted.
(WebCore::CSSParser::parse3ValuesFillPosition): Deleted.
(WebCore::CSSParser::isPotentialPositionValue): Deleted.
(WebCore::CSSParser::parseFillPosition): Deleted.
(WebCore::CSSParser::parse2ValuesFillPosition): Deleted.
(WebCore::CSSParser::parseFillRepeat): Deleted.
(WebCore::CSSParser::parseFillSize): Deleted.
(WebCore::CSSParser::parseFillProperty): Deleted.
(WebCore::CSSParser::parseAnimationDelay): Deleted.
(WebCore::CSSParser::parseAnimationDirection): Deleted.
(WebCore::CSSParser::parseAnimationDuration): Deleted.
(WebCore::CSSParser::parseAnimationFillMode): Deleted.
(WebCore::CSSParser::parseAnimationIterationCount): Deleted.
(WebCore::CSSParser::parseAnimationName): Deleted.
(WebCore::CSSParser::parseAnimationPlayState): Deleted.
(WebCore::CSSParser::parseAnimationTrigger): Deleted.
(WebCore::CSSParser::parseAnimationProperty): Deleted.
(WebCore::CSSParser::parseTransformOriginShorthand): Deleted.
(WebCore::CSSParser::isSpringTimingFunctionEnabled): Deleted.
(WebCore::CSSParser::parseCubicBezierTimingFunctionValue): Deleted.
(WebCore::CSSParser::parseSpringTimingFunctionValue): Deleted.
(WebCore::CSSParser::parseAnimationTimingFunction): Deleted.
(WebCore::isValidGridPositionCustomIdent): Deleted.
(WebCore::CSSParser::parseIntegerOrCustomIdentFromGridPosition): Deleted.
(WebCore::CSSParser::parseGridPosition): Deleted.
(WebCore::gridMissingGridPositionValue): Deleted.
(WebCore::CSSParser::parseGridItemPositionShorthand): Deleted.
(WebCore::CSSParser::parseGridGapShorthand): Deleted.
(WebCore::CSSParser::parseGridTemplateColumns): Deleted.
(WebCore::CSSParser::parseGridTemplateRowsAndAreasAndColumns): Deleted.
(WebCore::CSSParser::parseGridTemplateShorthand): Deleted.
(WebCore::parseImplicitAutoFlow): Deleted.
(WebCore::CSSParser::parseGridShorthand): Deleted.
(WebCore::CSSParser::parseGridAreaShorthand): Deleted.
(WebCore::CSSParser::parseSingleGridAreaLonghand): Deleted.
(WebCore::CSSParser::parseGridLineNames): Deleted.
(WebCore::isGridTrackFixedSized): Deleted.
(WebCore::CSSParser::parseGridTrackList): Deleted.
(WebCore::CSSParser::parseGridTrackRepeatFunction): Deleted.
(WebCore::CSSParser::parseGridTrackSize): Deleted.
(WebCore::CSSParser::parseGridBreadth): Deleted.
(WebCore::isValidGridAutoFlowId): Deleted.
(WebCore::CSSParser::parseGridAutoFlow): Deleted.
(WebCore::skipCommaInDashboardRegion): Deleted.
(WebCore::CSSParser::parseDashboardRegions): Deleted.
(WebCore::parseGridTemplateAreasColumnNames): Deleted.
(WebCore::CSSParser::parseGridTemplateAreasRow): Deleted.
(WebCore::CSSParser::parseGridTemplateAreas): Deleted.
(WebCore::CSSParser::parseCounterContent): Deleted.
(WebCore::CSSParser::parseClipShape): Deleted.
(WebCore::completeBorderRadii): Deleted.
(WebCore::CSSParser::parseInsetRoundedCorners): Deleted.
(WebCore::CSSParser::parseBasicShapeInset): Deleted.
(WebCore::CSSParser::parseShapeRadius): Deleted.
(WebCore::CSSParser::parseBasicShapeCircle): Deleted.
(WebCore::CSSParser::parseBasicShapeEllipse): Deleted.
(WebCore::CSSParser::parseBasicShapePolygon): Deleted.
(WebCore::CSSParser::parseBasicShapePath): Deleted.
(WebCore::isBoxValue): Deleted.
(WebCore::CSSParser::parseBasicShapeAndOrBox): Deleted.
(WebCore::CSSParser::parseShapeProperty): Deleted.
(WebCore::CSSParser::parseClipPath): Deleted.
(WebCore::CSSParser::parseBasicShape): Deleted.
(WebCore::CSSParser::parseFont): Deleted.
(WebCore::CSSParser::parseSystemFont): Deleted.
(WebCore::FontFamilyValueBuilder::FontFamilyValueBuilder): Deleted.
(WebCore::FontFamilyValueBuilder::add): Deleted.
(WebCore::FontFamilyValueBuilder::commit): Deleted.
(WebCore::valueIsCSSKeyword): Deleted.
(WebCore::CSSParser::parseFontFamily): Deleted.
(WebCore::CSSParser::parseLineHeight): Deleted.
(WebCore::CSSParser::parseFontSize): Deleted.
(WebCore::createFontWeightValueKeyword): Deleted.
(WebCore::CSSParser::parseFontWeight): Deleted.
(WebCore::CSSParser::parseFontSynthesis): Deleted.
(WebCore::CSSParser::parseFontFaceSrcURI): Deleted.
(WebCore::CSSParser::parseFontFaceSrcLocal): Deleted.
(WebCore::CSSParser::parseFontFaceSrc): Deleted.
(WebCore::CSSParser::parseFontFaceUnicodeRange): Deleted.
(WebCore::checkForValidDouble): Deleted.
(WebCore::parseDouble): Deleted.
(WebCore::parseColorIntOrPercentage): Deleted.
(WebCore::isTenthAlpha): Deleted.
(WebCore::parseAlphaValue): Deleted.
(WebCore::mightBeRGBA): Deleted.
(WebCore::mightBeRGB): Deleted.
(WebCore::fastParseColorInternal): Deleted.
(WebCore::CSSParser::fastParseColor): Deleted.
(WebCore::CSSParser::parsedDouble): Deleted.
(WebCore::CSSParser::isCalculation): Deleted.
(WebCore::isPercent): Deleted.
(WebCore::CSSParser::parseColorInt): Deleted.
(WebCore::CSSParser::parseColorDouble): Deleted.
(WebCore::CSSParser::parseRGBParameters): Deleted.
(WebCore::CSSParser::parseColorFunctionParameters): Deleted.
(WebCore::CSSParser::parseHSLParameters): Deleted.
(WebCore::CSSParser::parseColorFromValue): Deleted.
(WebCore::ShadowParseContext::ShadowParseContext): Deleted.
(WebCore::ShadowParseContext::allowLength): Deleted.
(WebCore::ShadowParseContext::commitValue): Deleted.
(WebCore::ShadowParseContext::commitLength): Deleted.
(WebCore::ShadowParseContext::commitColor): Deleted.
(WebCore::ShadowParseContext::commitStyle): Deleted.
(WebCore::CSSParser::parseShadow): Deleted.
(WebCore::CSSParser::parseReflect): Deleted.
(WebCore::CSSParser::parseFlex): Deleted.
(WebCore::BorderImageParseContext::BorderImageParseContext): Deleted.
(WebCore::BorderImageParseContext::canAdvance): Deleted.
(WebCore::BorderImageParseContext::setCanAdvance): Deleted.
(WebCore::BorderImageParseContext::allowCommit): Deleted.
(WebCore::BorderImageParseContext::allowImage): Deleted.
(WebCore::BorderImageParseContext::allowImageSlice): Deleted.
(WebCore::BorderImageParseContext::allowRepeat): Deleted.
(WebCore::BorderImageParseContext::allowForwardSlashOperator): Deleted.
(WebCore::BorderImageParseContext::requireWidth): Deleted.
(WebCore::BorderImageParseContext::requireOutset): Deleted.
(WebCore::BorderImageParseContext::commitImage): Deleted.
(WebCore::BorderImageParseContext::commitImageSlice): Deleted.
(WebCore::BorderImageParseContext::commitForwardSlashOperator): Deleted.
(WebCore::BorderImageParseContext::commitBorderWidth): Deleted.
(WebCore::BorderImageParseContext::commitBorderOutset): Deleted.
(WebCore::BorderImageParseContext::commitRepeat): Deleted.
(WebCore::BorderImageParseContext::commitWebKitBorderImage): Deleted.
(WebCore::BorderImageParseContext::commitBorderImage): Deleted.
(WebCore::BorderImageParseContext::commitBorderImageProperty): Deleted.
(WebCore::CSSParser::parseBorderImage): Deleted.
(WebCore::isBorderImageRepeatKeyword): Deleted.
(WebCore::CSSParser::parseBorderImageRepeat): Deleted.
(WebCore::BorderImageSliceParseContext::BorderImageSliceParseContext): Deleted.
(WebCore::BorderImageSliceParseContext::allowNumber): Deleted.
(WebCore::BorderImageSliceParseContext::allowFill): Deleted.
(WebCore::BorderImageSliceParseContext::allowFinalCommit): Deleted.
(WebCore::BorderImageSliceParseContext::top): Deleted.
(WebCore::BorderImageSliceParseContext::commitNumber): Deleted.
(WebCore::BorderImageSliceParseContext::commitFill): Deleted.
(WebCore::BorderImageSliceParseContext::commitBorderImageSlice): Deleted.
(WebCore::CSSParser::parseBorderImageSlice): Deleted.
(WebCore::BorderImageQuadParseContext::BorderImageQuadParseContext): Deleted.
(WebCore::BorderImageQuadParseContext::allowNumber): Deleted.
(WebCore::BorderImageQuadParseContext::allowFinalCommit): Deleted.
(WebCore::BorderImageQuadParseContext::top): Deleted.
(WebCore::BorderImageQuadParseContext::commitNumber): Deleted.
(WebCore::BorderImageQuadParseContext::setAllowFinalCommit): Deleted.
(WebCore::BorderImageQuadParseContext::setTop): Deleted.
(WebCore::BorderImageQuadParseContext::commitBorderImageQuad): Deleted.
(WebCore::CSSParser::parseBorderImageQuad): Deleted.
(WebCore::CSSParser::parseBorderImageWidth): Deleted.
(WebCore::CSSParser::parseBorderImageOutset): Deleted.
(WebCore::CSSParser::parseBorderRadius): Deleted.
(WebCore::CSSParser::parseAspectRatio): Deleted.
(WebCore::CSSParser::parseCounter): Deleted.
(WebCore::parseDeprecatedGradientPoint): Deleted.
(WebCore::parseDeprecatedGradientColorStop): Deleted.
(WebCore::CSSParser::parseDeprecatedGradient): Deleted.
(WebCore::valueFromSideKeyword): Deleted.
(WebCore::parseGradientColorOrKeyword): Deleted.
(WebCore::CSSParser::parseDeprecatedLinearGradient): Deleted.
(WebCore::CSSParser::parseDeprecatedRadialGradient): Deleted.
(WebCore::CSSParser::parseLinearGradient): Deleted.
(WebCore::CSSParser::parseRadialGradient): Deleted.
(WebCore::CSSParser::parseGradientColorStops): Deleted.
(WebCore::CSSParser::isGeneratedImageValue): Deleted.
(WebCore::CSSParser::parseGeneratedImage): Deleted.
(WebCore::CSSParser::parseFilterImage): Deleted.
(WebCore::CSSParser::parseCrossfade): Deleted.
(WebCore::CSSParser::parseCanvas): Deleted.
(WebCore::CSSParser::parseNamedImage): Deleted.
(WebCore::CSSParser::parseImageResolution): Deleted.
(WebCore::CSSParser::parseImageSet): Deleted.
(WebCore::TransformOperationInfo::TransformOperationInfo): Deleted.
(WebCore::TransformOperationInfo::type): Deleted.
(WebCore::TransformOperationInfo::argCount): Deleted.
(WebCore::TransformOperationInfo::unit): Deleted.
(WebCore::TransformOperationInfo::unknown): Deleted.
(WebCore::TransformOperationInfo::hasCorrectArgCount): Deleted.
(WebCore::CSSParser::parseTransform): Deleted.
(WebCore::CSSParser::parseTransformValue): Deleted.
(WebCore::CSSParser::isBlendMode): Deleted.
(WebCore::CSSParser::isCompositeOperator): Deleted.
(WebCore::isValidPrimitiveFilterFunction): Deleted.
(WebCore::CSSParser::parseBuiltinFilterArguments): Deleted.
(WebCore::cssValueKeywordIDForFunctionName): Deleted.
(WebCore::CSSParser::parseFilter): Deleted.
(WebCore::validFlowName): Deleted.
(WebCore::CSSParser::isTextAutosizingEnabled): Deleted.
(WebCore::CSSParser::isCSSGridLayoutEnabled): Deleted.
(WebCore::CSSParser::parseFlowThread): Deleted.
(WebCore::CSSParser::parseRegionThread): Deleted.
(WebCore::CSSParser::parseTransformOrigin): Deleted.
(WebCore::CSSParser::parsePerspectiveOrigin): Deleted.
(WebCore::CSSParser::addTextDecorationProperty): Deleted.
(WebCore::CSSParser::parseTextDecoration): Deleted.
(WebCore::CSSParser::parseTextDecorationSkip): Deleted.
(WebCore::CSSParser::parseTextUnderlinePosition): Deleted.
(WebCore::CSSParser::parseTextEmphasisStyle): Deleted.
(WebCore::CSSParser::parseTextEmphasisPosition): Deleted.
(WebCore::CSSParser::parseTextIndent): Deleted.
(WebCore::CSSParser::parseHangingPunctuation): Deleted.
(WebCore::CSSParser::parseLineBoxContain): Deleted.
(WebCore::CSSParser::parseFontFeatureTag): Deleted.
(WebCore::CSSParser::parseFontFeatureSettings): Deleted.
(WebCore::CSSParser::parseFontVariationTag): Deleted.
(WebCore::CSSParser::parseFontVariationSettings): Deleted.
(WebCore::CSSParser::parseFontVariantLigatures): Deleted.
(WebCore::CSSParser::parseFontVariantNumeric): Deleted.
(WebCore::CSSParser::parseFontVariantEastAsian): Deleted.
(WebCore::CSSParser::parseFontVariant): Deleted.
(WebCore::isValidWillChangeAnimatableFeature): Deleted.
(WebCore::CSSParser::parseWillChange): Deleted.
(WebCore::CSSParser::parseCalculation): Deleted.
(WebCore::isCSSLetter): Deleted.
(WebCore::isCSSEscape): Deleted.
(WebCore::isURILetter): Deleted.
(WebCore::isIdentifierStartAfterDash): Deleted.
(WebCore::isCustomPropertyIdentifier): Deleted.
(WebCore::isEqualToCSSIdentifier): Deleted.
(WebCore::isEqualToCSSCaseSensitiveIdentifier): Deleted.
(WebCore::checkAndSkipEscape): Deleted.
(WebCore::skipWhiteSpace): Deleted.
(WebCore::CSSParserString::characters<LChar>): Deleted.
(WebCore::CSSParserString::characters<UChar>): Deleted.
(WebCore::CSSParser::currentCharacter<LChar>): Deleted.
(WebCore::CSSParser::currentCharacter<UChar>): Deleted.
(WebCore::CSSParser::currentCharacter16): Deleted.
(WebCore::CSSParser::tokenStart<LChar>): Deleted.
(WebCore::CSSParser::tokenStart<UChar>): Deleted.
(WebCore::CSSParser::currentLocation): Deleted.
(WebCore::CSSParser::isIdentifierStart): Deleted.
(WebCore::checkAndSkipString): Deleted.
(WebCore::CSSParser::parseEscape): Deleted.
(WebCore::CSSParser::UnicodeToChars<LChar>): Deleted.
(WebCore::CSSParser::UnicodeToChars<UChar>): Deleted.
(WebCore::CSSParser::parseIdentifierInternal): Deleted.
(WebCore::CSSParser::parseIdentifier): Deleted.
(WebCore::CSSParser::parseStringInternal): Deleted.
(WebCore::CSSParser::parseString): Deleted.
(WebCore::CSSParser::findURI): Deleted.
(WebCore::CSSParser::parseURIInternal): Deleted.
(WebCore::CSSParser::parseURI): Deleted.
(WebCore::CSSParser::parseUnicodeRange): Deleted.
(WebCore::CSSParser::parseNthChild): Deleted.
(WebCore::CSSParser::parseNthChildExtra): Deleted.
(WebCore::CSSParser::detectFunctionTypeToken): Deleted.
(WebCore::CSSParser::detectMediaQueryToken): Deleted.
(WebCore::CSSParser::detectNumberToken): Deleted.
(WebCore::CSSParser::detectDashToken): Deleted.
(WebCore::CSSParser::detectAtToken): Deleted.
(WebCore::CSSParser::detectSupportsToken): Deleted.
(WebCore::CSSParser::realLex): Deleted.
(WebCore::CSSParser::createImportRule): Deleted.
(WebCore::CSSParser::createMediaRule): Deleted.
(WebCore::CSSParser::createEmptyMediaRule): Deleted.
(WebCore::CSSParser::createSupportsRule): Deleted.
(WebCore::CSSParser::markSupportsRuleHeaderStart): Deleted.
(WebCore::CSSParser::markSupportsRuleHeaderEnd): Deleted.
(WebCore::CSSParser::popSupportsRuleData): Deleted.
(WebCore::CSSParser::processAndAddNewRuleToSourceTreeIfNeeded): Deleted.
(WebCore::CSSParser::addNewRuleToSourceTree): Deleted.
(WebCore::CSSParser::popRuleData): Deleted.
(WebCore::CSSParser::syntaxError): Deleted.
(WebCore::CSSParser::isLoggingErrors): Deleted.
(WebCore::CSSParser::logError): Deleted.
(WebCore::CSSParser::createKeyframesRule): Deleted.
(WebCore::CSSParser::createStyleRule): Deleted.
(WebCore::CSSParser::createFontFaceRule): Deleted.
(WebCore::CSSParser::addNamespace): Deleted.
(WebCore::CSSParser::determineNameInNamespace): Deleted.
(WebCore::CSSParser::rewriteSpecifiersWithNamespaceIfNeeded): Deleted.
(WebCore::CSSParser::rewriteSpecifiersWithElementName): Deleted.
(WebCore::CSSParser::rewriteSpecifiers): Deleted.
(WebCore::CSSParser::createPageRule): Deleted.
(WebCore::CSSParser::createSelectorVector): Deleted.
(WebCore::CSSParser::recycleSelectorVector): Deleted.
(WebCore::CSSParser::createRegionRule): Deleted.
(WebCore::CSSParser::createMarginAtRule): Deleted.
(WebCore::CSSParser::startDeclarationsForMarginBox): Deleted.
(WebCore::CSSParser::endDeclarationsForMarginBox): Deleted.
(WebCore::CSSParser::createKeyframe): Deleted.
(WebCore::CSSParser::invalidBlockHit): Deleted.
(WebCore::CSSParser::updateLastMediaLine): Deleted.
(WebCore::fixUnparsedProperties): Deleted.
(WebCore::CSSParser::fixUnparsedPropertyRanges): Deleted.
(WebCore::CSSParser::markRuleHeaderStart): Deleted.
(WebCore::CSSParser::setRuleHeaderEnd): Deleted.
(WebCore::CSSParser::markRuleHeaderEnd): Deleted.
(WebCore::CSSParser::markSelectorStart): Deleted.
(WebCore::CSSParser::markSelectorEnd): Deleted.
(WebCore::CSSParser::markRuleBodyStart): Deleted.
(WebCore::CSSParser::markRuleBodyEnd): Deleted.
(WebCore::CSSParser::markPropertyStart): Deleted.
(WebCore::CSSParser::markPropertyEnd): Deleted.
(WebCore::CSSParser::createViewportRule): Deleted.
(WebCore::CSSParser::parseViewportProperty): Deleted.
(WebCore::CSSParser::parseViewportShorthand): Deleted.
(WebCore::isAppleLegacyCSSPropertyKeyword): Deleted.
(WebCore::cssPropertyID): Deleted.
(WebCore::cssPropertyNameIOSAliasing): Deleted.
(WebCore::isAppleLegacyCSSValueKeyword): Deleted.
(WebCore::cssValueKeywordID): Deleted.
(WebCore::isValidNthToken): Deleted.

  • css/parser/CSSParser.h:

(): Deleted.
(WebCore::CSSParser::ValueWithCalculation::ValueWithCalculation): Deleted.
(WebCore::CSSParser::ValueWithCalculation::value): Deleted.
(WebCore::CSSParser::ValueWithCalculation::operator CSSParserValue&): Deleted.
(WebCore::CSSParser::ValueWithCalculation::calculation): Deleted.
(WebCore::CSSParser::ValueWithCalculation::setCalculation): Deleted.
(WebCore::CSSParser::hasProperties): Deleted.
(WebCore::CSSParser::startNestedSelectorList): Deleted.
(WebCore::CSSParser::endNestedSelectorList): Deleted.
(WebCore::CSSParser::resetPropertyRange): Deleted.
(WebCore::CSSParser::isExtractingSourceData): Deleted.
(WebCore::CSSParser::lex): Deleted.
(WebCore::CSSParser::token): Deleted.
(WebCore::CSSParser::markViewportRuleBodyStart): Deleted.
(WebCore::CSSParser::markViewportRuleBodyEnd): Deleted.
(WebCore::CSSParser::setCustomPropertyName): Deleted.
(WebCore::CSSParser::is8BitSource): Deleted.
(WebCore::CSSParser::setStyleSheet): Deleted.
(WebCore::CSSParser::inStrictMode): Deleted.
(WebCore::CSSParser::inQuirksMode): Deleted.
(WebCore::CSSParser::setupParser): Deleted.
(WebCore::CSSParser::inShorthand): Deleted.
(WebCore::CSSParser::inViewport): Deleted.
(WebCore::CSSParser::operator|): Deleted.
(WebCore::CSSParser::validateUnit): Deleted.
(WebCore::ShorthandScope::ShorthandScope): Deleted.
(WebCore::ShorthandScope::~ShorthandScope): Deleted.
(WebCore::CSSParser::setTokenStart<LChar>): Deleted.
(WebCore::CSSParser::setTokenStart<UChar>): Deleted.
(WebCore::CSSParser::tokenStartOffset): Deleted.
(WebCore::CSSParser::currentCharacterOffset): Deleted.
(WebCore::CSSParser::tokenStartChar): Deleted.
(WebCore::isCustomPropertyName): Deleted.
(WebCore::cssyylex): Deleted.

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):

  • css/parser/CSSParserMode.h:

(WebCore::CSSParserContextHash::hash):

  • css/parser/CSSParserValues.cpp:

(WebCore::CSSParserSelector::setSelectorList):
(WebCore::destroy): Deleted.
(WebCore::CSSParserValueList::~CSSParserValueList): Deleted.
(WebCore::CSSParserValueList::addValue): Deleted.
(WebCore::CSSParserValueList::insertValueAt): Deleted.
(WebCore::CSSParserValueList::extend): Deleted.
(WebCore::CSSParserValueList::containsVariables): Deleted.
(WebCore::CSSParserValue::createCSSValue): Deleted.
(WebCore::CSSParserSelector::parsePseudoElementSelector): Deleted.
(WebCore::CSSParserSelector::parsePseudoElementCueFunctionSelector): Deleted.
(WebCore::CSSParserSelector::parsePseudoElementSlottedFunctionSelector): Deleted.
(WebCore::CSSParserSelector::parsePseudoClassHostFunctionSelector): Deleted.
(WebCore::CSSParserSelector::parsePseudoClassAndCompatibilityElementSelector): Deleted.
(WebCore::CSSParserSelector::setPseudoClassValue): Deleted.

  • css/parser/CSSParserValues.h:

(WebCore::CSSParserString::init): Deleted.
(WebCore::CSSParserString::clear): Deleted.
(WebCore::CSSParserString::is8Bit): Deleted.
(WebCore::CSSParserString::characters8): Deleted.
(WebCore::CSSParserString::characters16): Deleted.
(WebCore::CSSParserString::length): Deleted.
(WebCore::CSSParserString::setLength): Deleted.
(WebCore::CSSParserString::operator[]): Deleted.
(WebCore::CSSParserString::operator String): Deleted.
(WebCore::CSSParserString::operator AtomicString): Deleted.
(WebCore::CSSParserString::toStringView): Deleted.
(): Deleted.
(WebCore::CSSParserValueList::CSSParserValueList): Deleted.
(WebCore::CSSParserValueList::size): Deleted.
(WebCore::CSSParserValueList::currentIndex): Deleted.
(WebCore::CSSParserValueList::current): Deleted.
(WebCore::CSSParserValueList::next): Deleted.
(WebCore::CSSParserValueList::previous): Deleted.
(WebCore::CSSParserValueList::setCurrentIndex): Deleted.
(WebCore::CSSParserValueList::valueAt): Deleted.
(WebCore::CSSParserValueList::clear): Deleted.
(WebCore::CSSParserValue::setFromValueList): Deleted.
(WebCore::equalLettersIgnoringASCIICase): Deleted.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::isCustomPropertyName):
(WebCore::cssPropertyNameIOSAliasing):

  • css/parser/CSSPropertyParser.h:
  • css/parser/SVGCSSParser.cpp: Removed.
  • dom/InlineStyleSheetOwner.cpp:

(WebCore::InlineStyleSheetOwner::createSheet):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::InspectorStyleSheet::ensureSourceData):
(WebCore::InspectorStyleSheetForInlineStyle::ruleSourceData):

  • page/animation/AnimationController.cpp:
  • rendering/style/RenderStyle.cpp:
  • svg/SVGAnimateElementBase.cpp:
  • svg/SVGAnimationElement.cpp:
  • svg/SVGElement.cpp:

Source/WebKit/mac:

  • DOM/DOMCSS.mm:

(kitClass):

  • DOM/DOMCSSRule.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/CSSParser.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

Some canvas tests pass now that they use the new parser's color parsing.

  • fast/dom/HTMLFontElement/face-attribute-expected.txt:
  • fast/dom/HTMLFontElement/face-attribute.html:

Converted font face parsing over to just use the CSS parser's font-family
parsing. This matches other browsers, so removing cases that we used to
accept now that we're more strict.

  • platform/mac/canvas/philip/tests/2d.fillStyle.parse.rgb-eof-expected.txt:
  • platform/mac/canvas/philip/tests/2d.fillStyle.parse.rgba-eof-expected.txt:

These tests pass now that canvas uses the new parser's color parsing.

  • platform/ios-simulator/svg/custom/fill-SVGPaint-interface-expected.txt: Removed.
  • platform/mac/svg/custom/fill-SVGPaint-interface-expected.png: Removed.
  • platform/mac/svg/custom/fill-SVGPaint-interface-expected.txt: Removed.
  • svg/custom/fill-SVGPaint-interface.svg: Removed.

Remove another test of the SVG CSS OM, since the SVG CSS OM for SVGPaint etc.
is gone now.

  • platform/mac/js/dom/global-constructors-attributes-expected.txt:

Rebaselined because of CSSNamespaceRule.

10:16 AM Changeset in webkit [209665] by Konstantin Tokarev
  • 40 edits in trunk

[cmake] Include WTF, JSC, and WebCore headers automatically to targers using them
https://bugs.webkit.org/show_bug.cgi?id=165686

Reviewed by Michael Catanzaro.

This change reduces duplication of include path lists between modules,
and reduces future need for fixes like r209605 (broken build because of
WebCore header suddenly becoming used in WebKit2).

.:

  • Source/cmake/WebKitMacros.cmake:

Source/JavaScriptCore:

  • CMakeLists.txt:
  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • PlatformJSCOnly.cmake:
  • PlatformMac.cmake:

Source/ThirdParty:

  • gtest/CMakeLists.txt:

Source/WebCore:

No new tests needed.

  • CMakeLists.txt:
  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • PlatformMac.cmake:
  • PlatformWinCairo.cmake:

Source/WebKit:

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • PlatformWin.cmake:

Source/WebKit2:

  • CMakeLists.txt:
  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • PlatformMac.cmake:

Tools:

  • DumpRenderTree/CMakeLists.txt:
  • DumpRenderTree/PlatformMac.cmake:
  • ImageDiff/CMakeLists.txt:
  • MiniBrowser/gtk/CMakeLists.txt:
  • MiniBrowser/mac/CMakeLists.txt:
  • MiniBrowser/win/CMakeLists.txt:
  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/PlatformEfl.cmake:
  • TestWebKitAPI/PlatformJSCOnly.cmake:
  • TestWebKitAPI/PlatformMac.cmake:
  • TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
  • WebKitTestRunner/CMakeLists.txt:
  • WebKitTestRunner/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformMac.cmake:
10:04 AM Changeset in webkit [209664] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Avoid calling shrink() in the Vector destructor
https://bugs.webkit.org/show_bug.cgi?id=165675

Reviewed by Daniel Bates.

Avoid calling shrink() in the Vector destructor to avoid function call
overhead and unnecessarily reseting m_size to 0.

  • wtf/Vector.h:

(WTF::Vector::~Vector):
(WTF::Vector::asanSetBufferSizeToFullCapacity):
(WTF::minCapacity>::asanSetBufferSizeToFullCapacity):

6:13 AM Changeset in webkit [209663] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed build fix for the CLOOP after r209653

  • jit/GPRInfo.h:

Provided a definition for NUMBER_OF_JS_FUNCTION_ARGUMENT_REGISTERS when the JIT is disabled.

  • jit/JITEntryPoints.h:

Removed #if ENABLE(JIT) protection around contents.

3:56 AM Changeset in webkit [209662] by Yusuke Suzuki
  • 3 edits
    2 adds in trunk

[JSC] Module namespace object behaves like immutable prototype exotic object
https://bugs.webkit.org/show_bug.cgi?id=165598

Reviewed by Mark Lam.

JSTests:

  • modules/namespace-prototype-assignment.js: Added.

(else):
(reportError):
(shouldEqual):
(shouldThrow):
(stringify):
(makeTestID):
(doInternalSetPrototypeOf):
(ordinarySetPrototypeOf):
(setImmutablePrototype):
(windowProxySetPrototypeOf):
(initSetterExpectation):
(throwIfNoExceptionPending):
(objectSetPrototypeOf):
(setUnderscoreProto):
(reflectSetPrototypeOf):
(setPrototypeOf):
(newObjectProto.toString):
(Symbol):
(test):
(runTests):

  • modules/namespace-set-prototype-of.js: Added.

(shouldThrow):
(TypeError.Cannot.set prototype):

Source/JavaScriptCore:

In the latest ECMA262 draft, the module namespace object behaves like immutable prototype exotic object.
https://tc39.github.io/ecma262/#sec-module-namespace-exotic-objects-setprototypeof-v

  • runtime/JSModuleNamespaceObject.h:
2:19 AM Changeset in webkit [209661] by rniwa@webkit.org
  • 5 edits in trunk/Source/WebCore

Replace isUnclosedNode by isClosedShadowHidden
https://bugs.webkit.org/show_bug.cgi?id=165722

Reviewed by Antti Koivisto.

Replaced Node::isUnclosedNode by Node::isClosedShadowHidden and negated the semantics as done in the spec:
https://dom.spec.whatwg.org/#concept-closed-shadow-hidden
https://github.com/whatwg/dom/pull/306

Also added a version which follows the spec text for a debug assertion.

No new tests since this has no behavioral change.

  • dom/EventContext.h:

(WebCore::EventContext::isUnreachableNode):

  • dom/EventPath.cpp:

(WebCore::EventPath::computePathUnclosedToTarget):
(WebCore::RelatedNodeRetargeter::checkConsistency):

  • dom/Node.cpp:

(WebCore::isClosedShadowHiddenUsingSpecDefinition): Added to assert our implementation matches the spec text.
(WebCore::Node::isClosedShadowHidden): Renamed from Node::isUnclosedNode and negated the return value.

  • dom/Node.h:
2:00 AM Changeset in webkit [209660] by Antti Koivisto
  • 4 edits in trunk/Source/WebKit2

CrashTracer: com.apple.WebKit.Networking at WTF::ThreadSafeRefCounted<WebKit::NetworkCache::IOChannel>::deref
https://bugs.webkit.org/show_bug.cgi?id=165659
<rdar://problem/27077977>

Reviewed by Darin Adler.

  • NetworkProcess/cache/NetworkCacheIOChannel.h:
  • NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:

(WebKit::NetworkCache::IOChannel::~IOChannel):

Add non-inlined destructor and release assert against double deletion to narrow down this crash.

1:58 AM Changeset in webkit [209659] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

CrashTracer: com.apple.WebKit.WebContent.Development at com.apple.WebCore: WTF::match_constness<WebCore::CSSValue, WebCore::CSSContentDistributionValue>::type& WTF::downcast<WebCore::CSSContentDistributionValue, WebCore::CSSValue> + 65
https://bugs.webkit.org/show_bug.cgi?id=165652
rdar://problem/28465278

Reviewed by Darin Adler.

No, test don't know how to get here.

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertContentAlignmentData):

Add type checks.

1:29 AM Changeset in webkit [209658] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r208791): Assertion in testb3
https://bugs.webkit.org/show_bug.cgi?id=165651

Reviewed by Saam Barati.

Accidentally we always use edx/rdx for the result of UDiv/UMod.
But it is incorrect. We should use eax/rax for the result of UDiv.

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::lowerX86UDiv):

12:57 AM Changeset in webkit [209657] by jiewen_tan@apple.com
  • 7 edits
    12 adds in trunk

[WebCrypto] RSA algorithms should allow importing keys without usages
https://bugs.webkit.org/show_bug.cgi?id=165680
<rdar://problem/29601354>

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • WebCryptoAPI/encrypt_decrypt/test_rsa_oaep-expected.txt:

Source/WebCore:

Tests: crypto/subtle/rsa-oaep-import-jwk-public-key-empty-usages.html

crypto/subtle/rsa-oaep-import-spki-key-empty-usages.html
crypto/subtle/rsaes-pkcs1-v1_5-import-jwk-public-key-empty-usages.html
crypto/subtle/rsaes-pkcs1-v1_5-import-spki-key-empty-usages.html
crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-public-key-empty-usages.html
crypto/subtle/rsassa-pkcs1-v1_5-import-spki-key-empty-usages.html

  • crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:

(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):

  • crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:

(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):

  • crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:

(WebCore::CryptoAlgorithmRSA_OAEP::importKey):

LayoutTests:

  • crypto/subtle/rsa-oaep-import-jwk-public-key-empty-usages-expected.txt: Added.
  • crypto/subtle/rsa-oaep-import-jwk-public-key-empty-usages.html: Added.
  • crypto/subtle/rsa-oaep-import-spki-key-empty-usages-expected.txt: Added.
  • crypto/subtle/rsa-oaep-import-spki-key-empty-usages.html: Added.
  • crypto/subtle/rsaes-pkcs1-v1_5-import-jwk-public-key-empty-usages-expected.txt: Added.
  • crypto/subtle/rsaes-pkcs1-v1_5-import-jwk-public-key-empty-usages.html: Added.
  • crypto/subtle/rsaes-pkcs1-v1_5-import-spki-key-empty-usages-expected.txt: Added.
  • crypto/subtle/rsaes-pkcs1-v1_5-import-spki-key-empty-usages.html: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-public-key-empty-usages-expected.txt: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-public-key-empty-usages.html: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-import-spki-key-empty-usages-expected.txt: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-import-spki-key-empty-usages.html: Added.
12:43 AM Changeset in webkit [209656] by fred.wang@free.fr
  • 2 edits in trunk/Source/WebCore

Add STIX Two Math to the list of math fonts in mathml.css
https://bugs.webkit.org/show_bug.cgi?id=165676

Reviewed by Darin Adler.

No new tests, this is just changing default style.

  • css/mathml.css:

(math):

12:04 AM Changeset in webkit [209655] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

Unreviewed buildfix after r209630.

  • Scripts/build-jsc: Remove building the non-existing testWASM.

Dec 9, 2016:

11:43 PM Changeset in webkit [209654] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed build fix for 32 bit builds.

  • dfg/DFGMinifiedNode.h:

(JSC::DFG::MinifiedNode::argumentIndex): Added a static_cast<unsigned>().

11:32 PM Changeset in webkit [209653] by msaboff@apple.com
  • 105 edits
    12 adds in trunk

JSVALUE64: Pass arguments in platform argument registers when making JavaScript calls
https://bugs.webkit.org/show_bug.cgi?id=160355

Reviewed by Filip Pizlo.

JSTests:

New microbenchmarks to measure call type performance.

  • microbenchmarks/calling-computed-args.js: Added.
  • microbenchmarks/calling-many-callees.js: Added.
  • microbenchmarks/calling-one-callee-fixed.js: Added.
  • microbenchmarks/calling-one-callee.js: Added.
  • microbenchmarks/calling-poly-callees.js: Added.
  • microbenchmarks/calling-poly-extra-arity-callees.js: Added.
  • microbenchmarks/calling-tailcall.js: Added.
  • microbenchmarks/calling-virtual-arity-fixup-callees.js: Added.
  • microbenchmarks/calling-virtual-arity-fixup-stackargs.js: Added.
  • microbenchmarks/calling-virtual-callees.js: Added.
  • microbenchmarks/calling-virtual-extra-arity-callees.js: Added.

Source/JavaScriptCore:

This patch implements passing JavaScript function arguments in registers for 64 bit platforms.

The implemented convention follows the ABI conventions for the associated platform.
The first two arguments are the callee and argument count, the rest of the argument registers
contain "this" and following argument until all platform argument registers are exhausted.
Arguments beyond what fit in registers are placed on the stack in the same location as
before this patch.

For X86-64 non-Windows platforms, there are 6 argument registers specified in the related ABI.
ARM64 has had argument registers. This allows for 4 or 6 parameter values to be placed in
registers on these respective platforms. This patch doesn't implement passing arguments in
registers for 32 bit platform, since most platforms have at most 4 argument registers
specified and 32 bit platforms use two 32 bit registers/memory locations to store one JSValue.

The call frame on the stack in unchanged in format and the arguments that are passed in
registers use the corresponding call frame location as a spill location. Arguments can
also be passed on the stack. The LLInt, baseline JIT'ed code as well as the initial entry
from C++ code base arguments on the stack. DFG s and FTL generated code pass arguments
via registers. All callees can accept arguments either in registers or on the stack.
The callee is responsible for moving argument to its preferred location.

The multiple entry points to JavaSCript code is now handled via the JITEntryPoints class and
related code. That class now has entries for StackArgsArityCheckNotRequired,
StackArgsMustCheckArity and for platforms that support registers arguments,
RegisterArgsArityCheckNotRequired, RegisterArgsMustCheckArity as well as and additional
RegisterArgsPossibleExtraArgs entry point when extra registers argument are passed.
This last case is needed to spill those extra arguments to the corresponding call frame
slots.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • b3/B3ArgumentRegValue.h:
  • b3/B3Validate.cpp:
  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::CallLinkInfo):

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::setUpCall):
(JSC::CallLinkInfo::argumentsLocation):
(JSC::CallLinkInfo::argumentsInRegisters):

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::generateImpl):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGCPSRethreadingPhase.cpp:

(JSC::DFG::CPSRethreadingPhase::canonicalizeLocalsInBlock):
(JSC::DFG::CPSRethreadingPhase::specialCaseArguments):
(JSC::DFG::CPSRethreadingPhase::computeIsFlushed):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGCommon.h:
  • dfg/DFGDCEPhase.cpp:

(JSC::DFG::DCEPhase::run):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGDriver.cpp:

(JSC::DFG::compileImpl):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGGenerationInfo.h:

(JSC::DFG::GenerationInfo::initArgumentRegisterValue):

  • dfg/DFGGraph.cpp:

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

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::needsFlushedThis):
(JSC::DFG::Graph::addImmediateShouldSpeculateInt32):

  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::InPlaceAbstractState::initialize):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
(JSC::DFG::JITCompiler::compileEntry): Deleted.

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::addJSDirectCall):
(JSC::DFG::JITCompiler::JSDirectCallRecord::JSDirectCallRecord):
(JSC::DFG::JITCompiler::JSDirectCallRecord::hasSlowCall):

  • dfg/DFGJITFinalizer.cpp:

(JSC::DFG::JITFinalizer::JITFinalizer):
(JSC::DFG::JITFinalizer::finalize):
(JSC::DFG::JITFinalizer::finalizeFunction):

  • dfg/DFGJITFinalizer.h:
  • dfg/DFGLiveCatchVariablePreservationPhase.cpp:

(JSC::DFG::LiveCatchVariablePreservationPhase::handleBlock):

  • dfg/DFGMaximalFlushInsertionPhase.cpp:

(JSC::DFG::MaximalFlushInsertionPhase::treatRegularBlock):
(JSC::DFG::MaximalFlushInsertionPhase::treatRootBlock):

  • dfg/DFGMayExit.cpp:
  • dfg/DFGMinifiedNode.cpp:

(JSC::DFG::MinifiedNode::fromNode):

  • dfg/DFGMinifiedNode.h:

(JSC::DFG::belongsInMinifiedGraph):

  • dfg/DFGNode.cpp:

(JSC::DFG::Node::hasVariableAccessData):

  • dfg/DFGNode.h:

(JSC::DFG::Node::accessesStack):
(JSC::DFG::Node::setVariableAccessData):
(JSC::DFG::Node::hasArgumentRegisterIndex):
(JSC::DFG::Node::argumentRegisterIndex):

  • dfg/DFGNodeType.h:
  • dfg/DFGOSRAvailabilityAnalysisPhase.cpp:

(JSC::DFG::LocalOSRAvailabilityCalculator::executeNode):

  • dfg/DFGOSREntrypointCreationPhase.cpp:

(JSC::DFG::OSREntrypointCreationPhase::run):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • dfg/DFGPreciseLocalClobberize.h:

(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

  • dfg/DFGPredictionInjectionPhase.cpp:

(JSC::DFG::PredictionInjectionPhase::run):

  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGPutStackSinkingPhase.cpp:
  • dfg/DFGRegisterBank.h:

(JSC::DFG::RegisterBank::iterator::unlock):
(JSC::DFG::RegisterBank::unlockAtIndex):

  • dfg/DFGSSAConversionPhase.cpp:

(JSC::DFG::SSAConversionPhase::run):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::clearGenerationInfo):
(JSC::DFG::dumpRegisterInfo):
(JSC::DFG::SpeculativeJIT::dump):
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::checkArgumentTypes):
(JSC::DFG::SpeculativeJIT::setupArgumentRegistersForEntry):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::allocate):
(JSC::DFG::SpeculativeJIT::spill):
(JSC::DFG::SpeculativeJIT::generationInfoFromVirtualRegister):
(JSC::DFG::JSValueOperand::JSValueOperand):
(JSC::DFG::JSValueOperand::gprUseSpecific):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::fillJSValue):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • dfg/DFGThunks.cpp:

(JSC::DFG::osrEntryThunkGenerator):

  • dfg/DFGVariableEventStream.cpp:

(JSC::DFG::VariableEventStream::reconstruct):

  • dfg/DFGVirtualRegisterAllocationPhase.cpp:

(JSC::DFG::VirtualRegisterAllocationPhase::allocateRegister):
(JSC::DFG::VirtualRegisterAllocationPhase::run):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLJITCode.cpp:

(JSC::FTL::JITCode::~JITCode):
(JSC::FTL::JITCode::initializeEntrypointThunk):
(JSC::FTL::JITCode::setEntryFor):
(JSC::FTL::JITCode::addressForCall):
(JSC::FTL::JITCode::executableAddressAtOffset):
(JSC::FTL::JITCode::initializeAddressForCall): Deleted.
(JSC::FTL::JITCode::initializeArityCheckEntrypoint): Deleted.

  • ftl/FTLJITCode.h:
  • ftl/FTLJITFinalizer.cpp:

(JSC::FTL::JITFinalizer::finalizeFunction):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower):
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileGetArgumentRegister):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileCallEval):

  • ftl/FTLOSREntry.cpp:

(JSC::FTL::prepareOSREntry):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::argumentRegister):
(JSC::FTL::Output::argumentRegisterInt32):

  • ftl/FTLOutput.h:
  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::update):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitDumbVirtualCall):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::spillArgumentRegistersToFrameBeforePrologue):
(JSC::AssemblyHelpers::spillArgumentRegistersToFrame):
(JSC::AssemblyHelpers::fillArgumentRegistersFromFrameBeforePrologue):
(JSC::AssemblyHelpers::emitPutArgumentToCallFrameBeforePrologue):
(JSC::AssemblyHelpers::emitPutArgumentToCallFrame):
(JSC::AssemblyHelpers::emitGetFromCallFrameHeaderBeforePrologue):
(JSC::AssemblyHelpers::emitGetFromCallFrameArgumentBeforePrologue):
(JSC::AssemblyHelpers::emitGetPayloadFromCallFrameHeaderBeforePrologue):
(JSC::AssemblyHelpers::incrementCounter):

  • jit/CachedRecovery.cpp:

(JSC::CachedRecovery::addTargetJSValueRegs):

  • jit/CachedRecovery.h:

(JSC::CachedRecovery::gprTargets):
(JSC::CachedRecovery::setWantedFPR):
(JSC::CachedRecovery::wantedJSValueRegs):
(JSC::CachedRecovery::setWantedJSValueRegs): Deleted.

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

(JSC::CallFrameShuffler::CallFrameShuffler):
(JSC::CallFrameShuffler::dump):
(JSC::CallFrameShuffler::tryWrites):
(JSC::CallFrameShuffler::prepareAny):

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::snapshot):
(JSC::CallFrameShuffler::addNew):
(JSC::CallFrameShuffler::initDangerFrontier):
(JSC::CallFrameShuffler::updateDangerFrontier):
(JSC::CallFrameShuffler::findDangerFrontierFrom):

  • jit/CallFrameShuffler64.cpp:

(JSC::CallFrameShuffler::emitDisplace):

  • jit/GPRInfo.h:

(JSC::JSValueRegs::operator==):
(JSC::JSValueRegs::operator!=):
(JSC::GPRInfo::toArgumentIndex):
(JSC::argumentRegisterFor):
(JSC::argumentRegisterForCallee):
(JSC::argumentRegisterForArgumentCount):
(JSC::argumentRegisterIndexForJSFunctionArgument):
(JSC::jsFunctionArgumentForArgumentRegister):
(JSC::argumentRegisterForFunctionArgument):
(JSC::numberOfRegisterArgumentsFor):

  • jit/JIT.cpp:

(JSC::JIT::compileWithoutLinking):
(JSC::JIT::link):
(JSC::JIT::compileCTINativeCall): Deleted.

  • jit/JIT.h:

(JSC::JIT::compileNativeCallEntryPoints):

  • jit/JITCall.cpp:

(JSC::JIT::compileSetupVarargsFrame):
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITCode.cpp:

(JSC::JITCode::execute):
(JSC::DirectJITCode::DirectJITCode):
(JSC::DirectJITCode::initializeEntryPoints):
(JSC::DirectJITCode::addressForCall):
(JSC::NativeJITCode::addressForCall):
(JSC::DirectJITCode::initializeCodeRef): Deleted.

  • jit/JITCode.h:

(JSC::JITCode::executableAddress): Deleted.

  • jit/JITEntryPoints.h: Added.

(JSC::JITEntryPoints::JITEntryPoints):
(JSC::JITEntryPoints::entryFor):
(JSC::JITEntryPoints::setEntryFor):
(JSC::JITEntryPoints::offsetOfEntryFor):
(JSC::JITEntryPoints::registerEntryTypeForArgumentCount):
(JSC::JITEntryPoints::registerEntryTypeForArgumentType):
(JSC::JITEntryPoints::clearEntries):
(JSC::JITEntryPoints::operator=):
(JSC::JITEntryPointsWithRef::JITEntryPointsWithRef):
(JSC::JITEntryPointsWithRef::codeRef):
(JSC::argumentsLocationFor):
(JSC::registerEntryPointTypeFor):
(JSC::entryPointTypeFor):
(JSC::thunkEntryPointTypeFor):
(JSC::JITJSCallThunkEntryPointsWithRef::JITJSCallThunkEntryPointsWithRef):
(JSC::JITJSCallThunkEntryPointsWithRef::entryFor):
(JSC::JITJSCallThunkEntryPointsWithRef::setEntryFor):
(JSC::JITJSCallThunkEntryPointsWithRef::offsetOfEntryFor):
(JSC::JITJSCallThunkEntryPointsWithRef::clearEntries):
(JSC::JITJSCallThunkEntryPointsWithRef::codeRef):
(JSC::JITJSCallThunkEntryPointsWithRef::operator=):

  • jit/JITOpcodes.cpp:

(JSC::JIT::privateCompileJITEntryNativeCall):
(JSC::JIT::privateCompileCTINativeCall): Deleted.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::privateCompileJITEntryNativeCall):
(JSC::JIT::privateCompileCTINativeCall): Deleted.

  • jit/JITOperations.cpp:
  • jit/JITThunks.cpp:

(JSC::JITThunks::jitEntryNativeCall):
(JSC::JITThunks::jitEntryNativeConstruct):
(JSC::JITThunks::jitEntryStub):
(JSC::JITThunks::jitCallThunkEntryStub):
(JSC::JITThunks::hostFunctionStub):
(JSC::JITThunks::ctiNativeCall): Deleted.
(JSC::JITThunks::ctiNativeConstruct): Deleted.

  • jit/JITThunks.h:
  • jit/JSInterfaceJIT.h:

(JSC::JSInterfaceJIT::emitJumpIfNotInt32):
(JSC::JSInterfaceJIT::emitLoadInt32):

  • jit/RegisterSet.cpp:

(JSC::RegisterSet::argumentRegisters):

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

(JSC::linkSlowFor):
(JSC::revertCall):
(JSC::unlinkFor):
(JSC::linkVirtualFor):
(JSC::linkPolymorphicCall):

  • jit/SpecializedThunkJIT.h:

(JSC::SpecializedThunkJIT::SpecializedThunkJIT):
(JSC::SpecializedThunkJIT::checkJSStringArgument):
(JSC::SpecializedThunkJIT::linkFailureHere):
(JSC::SpecializedThunkJIT::finalize):

  • jit/ThunkGenerator.h:
  • jit/ThunkGenerators.cpp:

(JSC::createRegisterArgumentsSpillEntry):
(JSC::slowPathFor):
(JSC::linkCallThunkGenerator):
(JSC::linkDirectCallThunkGenerator):
(JSC::linkPolymorphicCallThunkGenerator):
(JSC::virtualThunkFor):
(JSC::nativeForGenerator):
(JSC::nativeCallGenerator):
(JSC::nativeTailCallGenerator):
(JSC::nativeTailCallWithoutSavedTagsGenerator):
(JSC::nativeConstructGenerator):
(JSC::stringCharLoadRegCall):
(JSC::charCodeAtThunkGenerator):
(JSC::charAtThunkGenerator):
(JSC::fromCharCodeThunkGenerator):
(JSC::clz32ThunkGenerator):
(JSC::sqrtThunkGenerator):
(JSC::floorThunkGenerator):
(JSC::ceilThunkGenerator):
(JSC::truncThunkGenerator):
(JSC::roundThunkGenerator):
(JSC::expThunkGenerator):
(JSC::logThunkGenerator):
(JSC::absThunkGenerator):
(JSC::imulThunkGenerator):
(JSC::randomThunkGenerator):
(JSC::boundThisNoArgsFunctionCallGenerator):

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

(jscmain):

  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::entryOSR):
(JSC::LLInt::setUpCall):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::functionForRegisterCallEntryThunkGenerator):
(JSC::LLInt::functionForStackCallEntryThunkGenerator):
(JSC::LLInt::functionForRegisterConstructEntryThunkGenerator):
(JSC::LLInt::functionForStackConstructEntryThunkGenerator):
(JSC::LLInt::functionForRegisterCallArityCheckThunkGenerator):
(JSC::LLInt::functionForStackCallArityCheckThunkGenerator):
(JSC::LLInt::functionForRegisterConstructArityCheckThunkGenerator):
(JSC::LLInt::functionForStackConstructArityCheckThunkGenerator):
(JSC::LLInt::functionForCallEntryThunkGenerator): Deleted.
(JSC::LLInt::functionForConstructEntryThunkGenerator): Deleted.
(JSC::LLInt::functionForCallArityCheckThunkGenerator): Deleted.
(JSC::LLInt::functionForConstructArityCheckThunkGenerator): Deleted.

  • llint/LLIntThunks.h:
  • runtime/ArityCheckMode.h:
  • runtime/ExecutableBase.cpp:

(JSC::ExecutableBase::clearCode):

  • runtime/ExecutableBase.h:

(JSC::ExecutableBase::entrypointFor):
(JSC::ExecutableBase::offsetOfEntryFor):
(JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.

  • runtime/JSBoundFunction.cpp:

(JSC::boundThisNoArgsFunctionCall):

  • runtime/NativeExecutable.cpp:

(JSC::NativeExecutable::finishCreation):

  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::installCode):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::thunkGeneratorForIntrinsic):
(JSC::VM::clearCounters):
(JSC::VM::dumpCounters):

  • runtime/VM.h:

(JSC::VM::getJITEntryStub):
(JSC::VM::getJITCallThunkEntryStub):
(JSC::VM::addressOfCounter):
(JSC::VM::counterFor):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::importStubGenerator):

Source/WTF:

Added a new build option ENABLE_VM_COUNTERS to enable JIT'able counters.
The default is for the option to be off.

  • wtf/Platform.h:

Added ENABLE_VM_COUNTERS

11:12 PM Changeset in webkit [209652] by keith_miller@apple.com
  • 16 edits
    3 adds in trunk

Wasm should support call_indirect
https://bugs.webkit.org/show_bug.cgi?id=165718

Reviewed by Filip Pizlo.

JSTests:

  • wasm/Builder.js:
  • wasm/function-tests/call-indirect-params.js: Added.
  • wasm/function-tests/call-indirect.js: Added.
  • wasm/js-api/call-indirect.js: Added.

(const.wasmModuleWhichImportJS):
(MonomorphicImport):
(Polyphic2Import):
(VirtualImport):

  • wasm/wasm.json:

Source/JavaScriptCore:

This patch adds support for call_indirect. The basic framework for
an indirect call is that the module holds a buffer containing a
stub for each function in the index space. Whenever a function
needs to do an indirect call it gets a index into that table. In
order to ensure call_indirect is calling a valid function the
functionIndexSpace also needs a pointer to a canonicalized
signature. When making an indirect call, we first check the index
is in range, then check the signature matches the value we were given.

This patch also differentiates between FunctionIndexSpaces and
ImmutableFunctionIndexSpaces. Since we don't know the size of the
FunctionIndexSpace when we start parsing we need to be able to
resize the IndexSpace. However, once we have finished parsing all
the sections we want to prevent an relocation of the function
index space pointer.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::addCall):
(JSC::Wasm::B3IRGenerator::addCallIndirect):
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::parseAndCompile):

  • wasm/WasmB3IRGenerator.h:
  • wasm/WasmCallingConvention.h:

(JSC::Wasm::CallingConvention::setupCall):

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

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

  • wasm/WasmPlan.cpp:

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

  • wasm/WasmPlan.h:

(JSC::Wasm::Plan::takeFunctionIndexSpace):

  • wasm/WasmValidate.cpp:

(JSC::Wasm::Validate::addCallIndirect):
(JSC::Wasm::validateFunction):

  • wasm/WasmValidate.h:
  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::create):
(JSC::JSWebAssemblyModule::JSWebAssemblyModule):

  • wasm/js/JSWebAssemblyModule.h:

(JSC::JSWebAssemblyModule::signatureForFunctionIndexSpace):
(JSC::JSWebAssemblyModule::offsetOfFunctionIndexSpace):

11:08 PM Changeset in webkit [209651] by jfbastien@apple.com
  • 8 edits
    1 add in trunk

WebAssembly: implement data section
https://bugs.webkit.org/show_bug.cgi?id=165696

Reviewed by Keith Miller.

As specified in https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md#data-section
Note that some of the interesting corner cases are ill-defined by the spec: https://github.com/WebAssembly/design/issues/897

JSTests:

  • wasm/Builder.js: create a data section from JavaScript
  • wasm/Builder_WebAssemblyBinary.js: assemble the data section into the proper binary encoding

(const.emitters.Data):

  • wasm/js-api/test_Data.js: Added.

(DataSection):
(DataSectionOffTheEnd):
(DataSectionPartlyOffTheEnd):
(DataSectionEmptyOffTheEnd):
(DataSectionSeenByStart):

  • wasm/self-test/test_BuilderJSON.js: make sure the JSON structure is fine (this sanity checks before going to binary)

Source/JavaScriptCore:

  • wasm/WasmFormat.h: segments are what represent sections of memory to initialize (similar to ELF's non-zero intializer data / rodata)

(JSC::Wasm::Segment::make):
(JSC::Wasm::Segment::destroy):
(JSC::Wasm::Segment::byte):
(JSC::Wasm::Segment::makePtr):

  • wasm/WasmModuleParser.cpp: parse the data section, and prevent a few overflows if a user passes in UINT_MAX (the loops would overflow)

(JSC::Wasm::ModuleParser::parseType):
(JSC::Wasm::ModuleParser::parseImport):
(JSC::Wasm::ModuleParser::parseFunction):
(JSC::Wasm::ModuleParser::parseExport):
(JSC::Wasm::ModuleParser::parseCode):
(JSC::Wasm::ModuleParser::parseData):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::evaluate): the only sensible time to initialize the data section is after linking, but before calling start, I test for this but the spec isn't clear it's correct yet

10:04 PM Changeset in webkit [209650] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

It is okay to turn undefined into null because we are producing values for a
JSON representation (InspectorValue) and JSON has a null value and no
undefined value.
https://bugs.webkit.org/show_bug.cgi?id=165506

Patch by Karim H <karim@karhm.com> on 2016-12-09
Reviewed by Darin Adler.

  • bindings/ScriptValue.cpp:

(Inspector::jsToInspectorValue):

9:56 PM Changeset in webkit [209649] by commit-queue@webkit.org
  • 6 edits in trunk

[Readable Streams API] Implement ReadableByteStreamController desiredSize
https://bugs.webkit.org/show_bug.cgi?id=165599

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2016-12-09
Reviewed by Darin Adler.

Source/WebCore:

Implemented ReadableByteStreamController attribute desiredSize.

Added test to check desiredSize value.

  • Modules/streams/ReadableByteStreamController.js:

(desiredSize):

  • Modules/streams/ReadableByteStreamInternals.js:

(readableByteStreamControllerGetDesiredSize):

LayoutTests:

Added test to check ReadableByteStreamController desiredSize value.

  • streams/readable-byte-stream-controller-expected.txt: Added expectation for new test.
  • streams/readable-byte-stream-controller.js: Added new test for desiredSize.
9:18 PM Changeset in webkit [209648] by rniwa@webkit.org
  • 11 edits
    4 adds in trunk

document.pointerLockElement exposes a node inside a shadow tree
https://bugs.webkit.org/show_bug.cgi?id=165702

Reviewed by Simon Fraser.

Source/WebCore:

Expose pointerLockElement on ShadowRoot as spec'ed (DocumentOrShadowRoot):
https://w3c.github.io/pointerlock/#extensions-to-the-documentorshadowroot-mixin

Use ancestorElementInThisScope to find the correct node in pointerLockElement.

Tests: fast/shadow-dom/pointerlockelement-in-shadow-tree.html

fast/shadow-dom/pointerlockelement-in-slot.html

  • dom/Document.cpp:

(WebCore::Document::pointerLockElement): Moved to TreeScope.

  • dom/Document.h:
  • dom/Document.idl: Moved ointerLockElement to DocumentOrShadowRoot.idl.
  • dom/DocumentOrShadowRoot.idl: Ditto.
  • dom/TreeScope.cpp:

(WebCore::TreeScope::focusedElementInScope): Use documentScope instead of acessing it via m_rootNode.
(WebCore::TreeScope::pointerLockElement): Moved from Document.

  • dom/TreeScope.h:

LayoutTests:

Added tests for pointer locks inside a shadow root as well as one assigned to a slot.

  • fast/shadow-dom/pointerlockelement-in-shadow-tree-expected.txt: Added.
  • fast/shadow-dom/pointerlockelement-in-shadow-tree.html: Added.
  • fast/shadow-dom/pointerlockelement-in-slot-expected.txt: Added.
  • fast/shadow-dom/pointerlockelement-in-slot.html: Added.
  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
8:27 PM Changeset in webkit [209647] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

REGRESSION (r209554-209571): stress/poly-setter-combo crashing
https://bugs.webkit.org/show_bug.cgi?id=165669

Reviewed by Geoffrey Garen.

We now rely on objects being zero-filled in a bunch of places, not just concurrent GC.
So, we need 32-bit to do it too.

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_new_object):

7:25 PM Changeset in webkit [209646] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit2

WebCore::Timer is not compatible with UIProcess
https://bugs.webkit.org/show_bug.cgi?id=165706
<rdar://problem/29360564>

Reviewed by Andy Estes.

Anders has explained to me (at least twice) that WebCore::Timer must not
be used in UIProcess code. A recent bug fix introduced a WebCore::Timer,
which led to another crash.

This patch switches from WebCore::Timer to WTF::RunLoop::Timer to avoid
the problem.

  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationState):

7:07 PM Changeset in webkit [209645] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests/imported/w3c

Ignore LayoutTests/imported/w3c/web-platform-tests/config.json
https://bugs.webkit.org/show_bug.cgi?id=165685

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-12-09
Reviewed by Ryosuke Niwa.

  • web-platform-tests/.gitignore:

Ignore generated user-specific config.json file.

6:53 PM Changeset in webkit [209644] by dbates@webkit.org
  • 3 edits
    2 adds in trunk

Add reflected nonce attribute to HTML Link element IDL
https://bugs.webkit.org/show_bug.cgi?id=165709

Reviewed by Ryosuke Niwa.

Source/WebCore:

Add the reflected nonce attribute to the HTML Link element IDL definition
as per the HTML standard <https://html.spec.whatwg.org/multipage/semantics.html#the-link-element> (9 December 2016).

Test: fast/dom/nonce-attribute-reflection.html

  • html/HTMLLinkElement.idl:

LayoutTests:

Add a test to ensure that we reflect the nonce attribute for the HTML link, script,
and style elements.

  • fast/dom/nonce-attribute-reflection-expected.txt: Added.
  • fast/dom/nonce-attribute-reflection.html: Added.
6:46 PM Changeset in webkit [209643] by eric.carlson@apple.com
  • 32 edits in trunk

Annotate MediaStream and WebRTC idl with EnabledAtRuntime flag
https://bugs.webkit.org/show_bug.cgi?id=165251

Reviewed by Dean Jackson.

Based on a patch by Dr Alex Gouaillard <Dr Alex Gouaillard>
Source/JavaScriptCore:

  • runtime/CommonIdentifiers.h: Add WebRTC and MediaStream identifiers.

Source/WebCore:

No new tests, covered by existing tests.

  • Modules/mediastream/MediaStreamEvent.idl: Add "EnabledAtRuntime".
  • Modules/mediastream/NavigatorMediaDevices.idl: Ditto.
  • Modules/mediastream/NavigatorUserMedia.idl: Ditto.
  • Modules/mediastream/RTCDTMFToneChangeEvent.idl: Ditto.
  • Modules/mediastream/RTCIceCandidate.idl: Ditto.
  • Modules/mediastream/RTCPeerConnection.idl: Ditto.
  • Modules/mediastream/RTCRtpReceiver.idl: Ditto.
  • Modules/mediastream/RTCRtpSender.idl: Ditto.
  • Modules/mediastream/RTCRtpTransceiver.idl: Ditto.
  • Modules/mediastream/RTCSessionDescription.idl: Ditto.
  • Modules/mediastream/RTCTrackEvent.idl: Ditto.
  • bindings/generic/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures): Set m_isMediaStreamEnabled in the

constructor instead of in reset() because the later is called by the Internals constructor,
making it impossible to override the runtime flag from WTR or DRT.

(WebCore::RuntimeEnabledFeatures::reset): Don't set m_isMediaStreamEnabled.

  • page/Settings.in: Add peerConnectionEnabled.

Source/WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h: Add MediaStream and PeerConnection preferences.
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences mediaStreamEnabled]):
(-[WebPreferences setMediaStreamEnabled:]):
(-[WebPreferences peerConnectionEnabled]):
(-[WebPreferences setPeerConnectionEnabled:]):

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

(-[WebView _preferencesChanged:]):

Source/WebKit2:

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

(WKPreferencesSetPeerConnectionEnabled): Added.
(WKPreferencesGetPeerConnectionEnabled): Added.

  • UIProcess/API/C/WKPreferencesRef.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Add WebKitMediaStreamEnabled

and WebKitPeerConnectionEnabled.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences): Initialize the peerConnection preference.

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues): Enable MediaStream and PeerConnection.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting): Ditto.

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setMediaStreamEnabled): New.
(WTR::TestRunner::setPeerConnectionEnabled): New.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
6:34 PM Changeset in webkit [209642] by jfbastien@apple.com
  • 12 edits
    1 add in trunk

WebAssembly JS API: implement start function
https://bugs.webkit.org/show_bug.cgi?id=165150

Reviewed by Saam Barati.

JSTests:

  • wasm/Builder.js: allow building a .Start()
  • wasm/Builder_WebAssemblyBinary.js:
  • wasm/js-api/test_Start.js: Added.

(const.emitters.Start): serialize a start section

  • wasm/self-test/test_BuilderJSON.js: validate the start section's content

Source/JavaScriptCore:

  • wasm/WasmFormat.h: pass the start function around
  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parseTable): mark unreachable code
(JSC::Wasm::ModuleParser::parseGlobal): mark unreachable code
(JSC::Wasm::ModuleParser::parseStart): mark unreachable code
(JSC::Wasm::ModuleParser::parseElement): mark unreachable code
(JSC::Wasm::ModuleParser::parseData): mark unreachable code

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::callWebAssemblyFunction): NFC: call the new function below
(JSC::WebAssemblyFunction::call): separate this out so that the start function can use it

  • wasm/js/WebAssemblyFunction.h:
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::visitChildren): visit the start function
(JSC::WebAssemblyModuleRecord::link): handle start function
(JSC::WebAssemblyModuleRecord::evaluate): call the start function, if present

  • wasm/js/WebAssemblyModuleRecord.h:
6:03 PM Changeset in webkit [209641] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Remove QuickLook scheme from the list of secure schemes
https://bugs.webkit.org/show_bug.cgi?id=165699

Reviewed by Andy Estes.

Following r207155 we use a unique origin for QuickLook documents. Unique origins are not
subject to mixed content restrictions. Prior to r207155 QuickLook documents used the
origin from which they were served. We added the QuickLook scheme to the list of secure
schemes as a workaround to avoid mixed content errors when loading subresources in a
QuickLook document served over HTTPS. Now that we use a unique origin for QuickLook
documents we no longer need this workaround.

  • platform/SchemeRegistry.cpp:

(WebCore::secureSchemes):

5:25 PM Changeset in webkit [209640] by beidson@apple.com
  • 25 edits
    6 copies
    1 add in trunk

Re-landing:
Source/WebCore:

Add _WKIconLoadingDelegate SPI.
https://bugs.webkit.org/show_bug.cgi?id=164894

Reviewed by Alex Christensen.

No new tests (Manual testing possible in MiniBrowser now, WKTR tests coming soon in https://bugs.webkit.org/show_bug.cgi?id=164895).

With this client, WebCore will ask the FrameLoaderClient about each icon found in the <head>.

WebKit2 will then ask the embedding app - for each icon - if it wants that icon to load.

For icons the app decides to load, WebKit will pass the data to the app without storing locally.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::implicitClose):

  • html/LinkIconCollector.cpp:

(WebCore::iconSize):
(WebCore::compareIcons):

  • html/LinkIconCollector.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startIconLoading):
(WebCore::DocumentLoader::didGetLoadDecisionForIcon):
(WebCore::DocumentLoader::finishedLoadingIcon):

  • loader/DocumentLoader.h:
  • loader/FrameLoaderClient.h:
  • loader/icon/IconLoader.cpp:

(WebCore::IconLoader::IconLoader):
(WebCore::IconLoader::startLoading):
(WebCore::IconLoader::notifyFinished):

  • loader/icon/IconLoader.h:
  • platform/LinkIcon.h: Copied from Source/WebCore/html/LinkIconCollector.h.

(WebCore::LinkIcon::encode):
(WebCore::LinkIcon::decode):

Source/WebKit2:

Add _WKIconLoadingDelegate SPI.
https://bugs.webkit.org/show_bug.cgi?id=164894

Reviewed by Alex Christensen.

With this client, WebCore will ask the FrameLoaderClient about each icon found in the <head>.

WebKit2 will then ask the embedding app - for each icon - if it wants that icon to load.

For icons the app decides to load, WebKit will pass the data to the app without storing locally.

  • UIProcess/API/APIIconLoadingClient.h: Copied from Source/WebCore/html/LinkIconCollector.h.

(API::IconLoadingClient::~IconLoadingClient):
(API::IconLoadingClient::getLoadDecisionForIcon):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _iconLoadingDelegate]):
(-[WKWebView _setIconLoadingDelegate:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKIconLoadingDelegate.h: Copied from Source/WebCore/html/LinkIconCollector.h.
  • UIProcess/API/Cocoa/_WKLinkIconParameters.h: Copied from Source/WebCore/html/LinkIconCollector.h.
  • UIProcess/API/Cocoa/_WKLinkIconParameters.mm: Copied from Source/WebCore/html/LinkIconCollector.h.

(-[_WKLinkIconParameters _initWithLinkIcon:]):
(-[_WKLinkIconParameters url]):
(-[_WKLinkIconParameters mimeType]):
(-[_WKLinkIconParameters size]):
(-[_WKLinkIconParameters iconType]):

  • UIProcess/API/Cocoa/_WKLinkIconParametersInternal.h: Copied from Source/WebCore/html/LinkIconCollector.h.
  • UIProcess/Cocoa/IconLoadingDelegate.h: Copied from Source/WebCore/html/LinkIconCollector.h.
  • UIProcess/Cocoa/IconLoadingDelegate.mm: Added.

(WebKit::IconLoadingDelegate::IconLoadingDelegate):
(WebKit::IconLoadingDelegate::~IconLoadingDelegate):
(WebKit::IconLoadingDelegate::createIconLoadingClient):
(WebKit::IconLoadingDelegate::delegate):
(WebKit::IconLoadingDelegate::setDelegate):
(WebKit::IconLoadingDelegate::IconLoadingClient::IconLoadingClient):
(WebKit::IconLoadingDelegate::IconLoadingClient::~IconLoadingClient):
(WebKit::IconLoadingDelegate::IconLoadingClient::getLoadDecisionForIcon):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setIconLoadingClient):
(WebKit::WebPageProxy::getLoadDecisionForIcon):
(WebKit::WebPageProxy::finishedLoadingIcon):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::iconLoadingClient):

  • UIProcess/WebPageProxy.messages.in:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::useIconLoadingClient):
(WebKit::WebFrameLoaderClient::getLoadDecisionForIcon):
(WebKit::WebFrameLoaderClient::finishedLoadingIcon):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

(WebKit::WebFrameLoaderClient::setUseIconLoadingClient):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didGetLoadDecisionForIcon):
(WebKit::WebPage::setUseIconLoadingClient):

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

Tools:

Add _WKIconLoadingDelegate SPI.
https://bugs.webkit.org/show_bug.cgi?id=164894

Reviewed by Alex Christensen.

Add MiniBrowser support for this new SPI, configurable with a setting.

  • MiniBrowser/mac/SettingsController.h:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController loadsAllSiteIcons]):
(-[SettingsController toggleLoadsAllSiteIcons:]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController awakeFromNib]):
(-[WK2BrowserWindowController webView:shouldLoadIconWithParameters:completionHandler:]):

5:24 PM Changeset in webkit [209639] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

Fix initialization of contentUpdateFrequency
https://bugs.webkit.org/show_bug.cgi?id=165705
rdar://problem/29602039

Reviewed by Tim Horton.

The value that controls web content update frequency was not being initialized.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):

5:22 PM Changeset in webkit [209638] by fpizlo@apple.com
  • 24 edits in trunk/Source/JavaScriptCore

GC might be forced to look at a nuked object due to ordering of AllocatePropertyStorage, MaterializeNewObject, and PutStructure
https://bugs.webkit.org/show_bug.cgi?id=165672

Reviewed by Geoffrey Garen.

We need to make sure that the shady stuff in a property put happens after the
PutByOffset, since the PutByOffset is the place where we materialize. More generally, we
should strive to not have any fenceposts between Nodes where a GC would be illegal.

This gets us most of the way there by separating NukeStructureAndSetButterfly from
[Re]AllocatePropertyStorage. A transitioning put will now look something like:

GetButterfly
ReallocatePropertyStorage
PutByOffset
NukeStructureAndSetButterfly
PutStructure


Previously the structure would get nuked by ReallocatePropertyStorage, so if we placed
an object materialization just after it (before the PutByOffset) then any GC that
completed at that safepoint would encounter an unresolved visit race due to seeing a
nuked structure. We cannot have nuked structures at safepoints, and this change makes
sure that we don't - at least until someone tries to sink to the PutStructure. We will
eventually have to create a combined SetStructureAndButterfly node, but we don't need it
yet.

This also fixes a goof where the DFG's AllocatePropertyStorage was nulling the structure
instead of nuking it. This could easily have caused many crashes in GC.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handlePutById):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGClobbersExitState.cpp:

(JSC::DFG::clobbersExitState):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::emitPutByOffset):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileNukeStructureAndSetButterfly):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNukeStructureAndSetButterfly):
(JSC::FTL::DFG::LowerDFGToB3::storageForTransition):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl):

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h: Fix a bug - make it possible to turn on concurrent GC optionally again.
4:06 PM Changeset in webkit [209637] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebKit/mac

Don’t expose pointer lock in WebKit1 Objective-C API
https://bugs.webkit.org/show_bug.cgi?id=165692

Reviewed by Simon Fraser.

  • DOM/DOMDocument.mm:

(-[DOMDocument pointerLockElement]): Deleted.
(-[DOMDocument exitPointerLock]): Deleted.

  • DOM/DOMElement.mm:

(-[DOMElement requestPointerLock]): Deleted.

  • DOM/DOMMouseEvent.mm:

(-[DOMMouseEvent movementX]): Deleted.
(-[DOMMouseEvent movementY]): Deleted.

3:37 PM Changeset in webkit [209636] by Chris Dumez
  • 4 edits in trunk/Source/JavaScriptCore

Inline JSCell::toObject()
https://bugs.webkit.org/show_bug.cgi?id=165679

Reviewed by Geoffrey Garen.

Inline JSCell::toObject() as it shows on Speedometer profiles.

  • runtime/JSCell.cpp:

(JSC::JSCell::toObjectSlow):
(JSC::JSCell::toObject): Deleted.

  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::toObject):

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

Once we can send Mach messages again, make sure to send any pending outgoing messages
https://bugs.webkit.org/show_bug.cgi?id=165693

Reviewed by Brady Eidson.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::initializeSendSource):

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

Marking inspector/debugger/csp-exceptions.html as flaky on mac-wk2.
https://bugs.webkit.org/show_bug.cgi?id=165292

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:05 PM Changeset in webkit [209633] by jiewen_tan@apple.com
  • 19 edits
    3 copies
    21 adds in trunk

[Part 2 of 2] Add support for PKCS8 format while doing SubtleCrypto.importKey/exportKey
https://bugs.webkit.org/show_bug.cgi?id=129978
<rdar://problem/21799829>

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

  • WebCryptoAPI/encrypt_decrypt/test_rsa_oaep-expected.txt:

Source/WebCore:

This is part 2 of Bug 129978. In this patch, it adds the PKCS8 format support for
SubtleCrypto.importKey/exportKey. Currently support algorithms are RSAES-PKCS1-v1_5,
RSASSA-PKCS1-v1_5 and RSA-OAEP.

Tests: crypto/subtle/rsa-import-jwk-key-export-pkcs8-key.html

crypto/subtle/rsa-import-pkcs8-key-export-jwk-key.html
crypto/subtle/rsa-import-pkcs8-key-export-pkcs8-key.html
crypto/subtle/rsa-oaep-generate-export-key-pkcs8.html
crypto/subtle/rsa-oaep-import-pkcs8-key.html
crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-pkcs8.html
crypto/subtle/rsaes-pkcs1-v1_5-import-pkcs8-key.html
crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-pkcs8.html
crypto/subtle/rsassa-pkcs1-v1_5-import-pkcs8-key.html
crypto/workers/subtle/rsa-export-pkcs8-key.html
crypto/workers/subtle/rsa-import-pkcs8-key.html

  • bindings/js/JSSubtleCryptoCustom.cpp:

(WebCore::toKeyData):

  • crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:

(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::exportKey):

  • crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:

(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::exportKey):

  • crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:

(WebCore::CryptoAlgorithmRSA_OAEP::importKey):
(WebCore::CryptoAlgorithmRSA_OAEP::exportKey):

  • crypto/gnutls/CryptoKeyRSAGnuTLS.cpp:

(WebCore::CryptoKeyRSA::importPkcs8):
(WebCore::CryptoKeyRSA::exportPkcs8):

  • crypto/keys/CryptoKeyRSA.h:
  • crypto/mac/CryptoKeyRSAMac.cpp:

(WebCore::CryptoKeyRSA::importSpki):
(WebCore::CryptoKeyRSA::importPkcs8):
(WebCore::CryptoKeyRSA::exportPkcs8):

LayoutTests:

  • crypto/subtle/import-key-malformed-parameters-expected.txt:
  • crypto/subtle/import-key-malformed-parameters.html:
  • crypto/subtle/rsa-export-key-malformed-parameters-expected.txt:
  • crypto/subtle/rsa-export-key-malformed-parameters.html:
  • crypto/subtle/rsa-import-jwk-key-export-pkcs8-key-expected.txt: Added.
  • crypto/subtle/rsa-import-jwk-key-export-pkcs8-key.html: Added.
  • crypto/subtle/rsa-import-jwk-key-export-spki-key-expected.txt:
  • crypto/subtle/rsa-import-jwk-key-export-spki-key.html:
  • crypto/subtle/rsa-import-key-malformed-parameters-expected.txt:
  • crypto/subtle/rsa-import-key-malformed-parameters.html:
  • crypto/subtle/rsa-import-pkcs8-key-export-jwk-key-expected.txt: Added.
  • crypto/subtle/rsa-import-pkcs8-key-export-jwk-key.html: Added.
  • crypto/subtle/rsa-import-pkcs8-key-export-pkcs8-key-expected.txt: Added.
  • crypto/subtle/rsa-import-pkcs8-key-export-pkcs8-key.html: Added.
  • crypto/subtle/rsa-oaep-generate-export-key-pkcs8-expected.txt: Added.
  • crypto/subtle/rsa-oaep-generate-export-key-pkcs8.html: Added.
  • crypto/subtle/rsa-oaep-import-pkcs8-key-expected.txt: Added.
  • crypto/subtle/rsa-oaep-import-pkcs8-key.html: Added.
  • crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-pkcs8-expected.txt: Added.
  • crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-pkcs8.html: Added.
  • crypto/subtle/rsaes-pkcs1-v1_5-import-pkcs8-key-expected.txt: Added.
  • crypto/subtle/rsaes-pkcs1-v1_5-import-pkcs8-key.html: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-pkcs8-expected.txt: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-pkcs8.html: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-import-pkcs8-key-expected.txt: Added.
  • crypto/subtle/rsassa-pkcs1-v1_5-import-pkcs8-key.html: Added.
  • crypto/workers/subtle/resources/rsa-export-pkcs8-key.js: Added.
  • crypto/workers/subtle/resources/rsa-import-pkcs8-key.js: Added.
  • crypto/workers/subtle/rsa-export-pkcs8-key-expected.txt: Added.
  • crypto/workers/subtle/rsa-export-pkcs8-key.html: Added.
  • crypto/workers/subtle/rsa-import-pkcs8-key-expected.txt: Added.
  • crypto/workers/subtle/rsa-import-pkcs8-key.html: Added.
2:59 PM Changeset in webkit [209632] by ggaren@apple.com
  • 16 edits in trunk/Source

Deploy OrdinalNumber in JSC::SourceCode
https://bugs.webkit.org/show_bug.cgi?id=165687

Reviewed by Michael Saboff.

Source/JavaScriptCore:

We have a lot of confusion between 1-based and 0-based counting in line
and column numbers. Let's use OrdinalNumber to clear up the confusion.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
(JSC::UnlinkedFunctionExecutable::link):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::emitExpressionInfo):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::functionDetails):

  • parser/Lexer.cpp:

(JSC::Lexer<T>::setCode):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):

  • parser/Parser.h:

(JSC::Parser<LexerType>::parse):

  • parser/SourceCode.h:

(JSC::SourceCode::SourceCode):
(JSC::SourceCode::firstLine):
(JSC::SourceCode::startColumn):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getUnlinkedGlobalCodeBlock):

  • runtime/ScriptExecutable.h:

(JSC::ScriptExecutable::firstLine):
(JSC::ScriptExecutable::startColumn):

  • tools/CodeProfile.h:

(JSC::CodeProfile::CodeProfile):

Source/WebCore:

Updated for interface changes.

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::evaluateModule):

  • bindings/js/ScriptSourceCode.h:

(WebCore::ScriptSourceCode::startLine):

Source/WTF:

  • wtf/text/OrdinalNumber.h:

(WTF::OrdinalNumber::operator>): Added a >.

2:43 PM Changeset in webkit [209631] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Frontend should not be resetting TypeProfiler state when switching between ContentViews
https://bugs.webkit.org/show_bug.cgi?id=165648

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-12-09
Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

(WebInspector.loaded):
Update all backends when the state changes.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
(WebInspector.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled):
Moved this code to when the global Setting (which affects all editors) changes.

2:38 PM Changeset in webkit [209630] by sbarati@apple.com
  • 34 edits
    5 adds
    1 delete in trunk

WebAssembly JS API: implement importing and defining Memory
https://bugs.webkit.org/show_bug.cgi?id=164134

Reviewed by Keith Miller.

JSTests:

  • wasm/Builder.js:

(const._importMemoryContinuation.section):
(const._importMemoryContinuation.assert):
(const._importMemoryContinuation):
(const._exportFunctionContinuation.const): Deleted.
(const._exportFunctionContinuation): Deleted.

  • wasm/Builder_WebAssemblyBinary.js:

(const.emitters.Import):

  • wasm/js-api/test_basic_api.js:

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

  • wasm/js-api/test_memory.js: Added.

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

  • wasm/js-api/test_memory_constructor.js: Added.

(assert):
(throw.new.Error):
(testInvalidSize):
(assert.testInvalidInitial):
(testInvalidInitial.testInvalidMaximum):
(testInvalidInitial):
(testInvalidMaximum):

  • wasm/self-test/test_BuilderJSON.js:

Source/JavaScriptCore:

This patch implements the WebAssembly.Memory object. It refactors
the code to now associate a Memory with the instance instead of
the Module.

(functionTestWasmModuleFunctions):

  • runtime/VM.h:
  • shell/CMakeLists.txt:
  • testWasm.cpp: Removed.

This has bitrotted. I'm removing it.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::sizeOfLoadOp):
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::parseAndCompile):

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

(JSC::Wasm::ModuleInformation::~ModuleInformation): Deleted.

  • wasm/WasmFormat.h:
  • wasm/WasmMemory.cpp:

(JSC::Wasm::Memory::Memory):

  • wasm/WasmMemory.h:

(JSC::Wasm::Memory::size):
(JSC::Wasm::Memory::initial):
(JSC::Wasm::Memory::maximum):
(JSC::Wasm::Memory::pinnedRegisters): Deleted.

  • wasm/WasmMemoryInformation.cpp: Added.

(JSC::Wasm::MemoryInformation::MemoryInformation):

  • wasm/WasmMemoryInformation.h: Added.

(JSC::Wasm::MemoryInformation::MemoryInformation):
(JSC::Wasm::MemoryInformation::pinnedRegisters):
(JSC::Wasm::MemoryInformation::initial):
(JSC::Wasm::MemoryInformation::maximum):
(JSC::Wasm::MemoryInformation::isImport):
(JSC::Wasm::MemoryInformation::operator bool):

  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parseImport):
(JSC::Wasm::ModuleParser::parseMemoryHelper):
(JSC::Wasm::ModuleParser::parseMemory):
(JSC::Wasm::ModuleParser::parseExport):

  • wasm/WasmModuleParser.h:
  • wasm/WasmPageCount.h: Added. Implement a new way of describing Wasm

pages and then asking for how many bytes a quantity of pages is. This
class also makes it clear when we're talking about bytes or pages.

(JSC::Wasm::PageCount::PageCount):
(JSC::Wasm::PageCount::bytes):
(JSC::Wasm::PageCount::isValid):
(JSC::Wasm::PageCount::max):
(JSC::Wasm::PageCount::operator bool):
(JSC::Wasm::PageCount::operator<):
(JSC::Wasm::PageCount::operator>):
(JSC::Wasm::PageCount::operator>=):

  • wasm/WasmPlan.cpp:

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

  • wasm/WasmPlan.h:

(JSC::Wasm::Plan::memory): Deleted.

  • wasm/WasmValidate.cpp:

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

  • wasm/WasmValidate.h:
  • wasm/generateWasmValidateInlinesHeader.py:
  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::visitChildren):

  • wasm/js/JSWebAssemblyInstance.h:

(JSC::JSWebAssemblyInstance::memory):
(JSC::JSWebAssemblyInstance::setMemory):
(JSC::JSWebAssemblyInstance::offsetOfImportFunctions):
(JSC::JSWebAssemblyInstance::allocationSize):

  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::create):
(JSC::JSWebAssemblyMemory::JSWebAssemblyMemory):
(JSC::JSWebAssemblyMemory::buffer):
(JSC::JSWebAssemblyMemory::visitChildren):

  • wasm/js/JSWebAssemblyMemory.h:

(JSC::JSWebAssemblyMemory::memory):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::callWebAssemblyFunction):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

Handle importing and creating of memory according
to the spec. This also does the needed validation
of making sure the memory defined in the module
is compatible with the imported memory.

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::constructJSWebAssemblyMemory):
(JSC::callJSWebAssemblyMemory):

  • wasm/js/WebAssemblyMemoryPrototype.cpp:

(JSC::webAssemblyMemoryProtoFuncBuffer):
(JSC::WebAssemblyMemoryPrototype::create):
(JSC::WebAssemblyMemoryPrototype::finishCreation):

  • wasm/js/WebAssemblyMemoryPrototype.h:
  • wasm/js/WebAssemblyModuleRecord.cpp:

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

2:12 PM Changeset in webkit [209629] by Joseph Pecoraro
  • 27 edits
    10 adds in trunk

Web Inspector: Some resources fetched via Fetch API do not have data
https://bugs.webkit.org/show_bug.cgi?id=165230
<rdar://problem/29449220>

Reviewed by Alex Christensen.

Source/JavaScriptCore:

  • inspector/protocol/Page.json:

Add new Fetch Page.ResourceType.

Source/WebCore:

Tests: http/tests/inspector/network/fetch-response-body.html

http/tests/inspector/network/xhr-response-body.html

  • platform/network/ResourceRequestBase.h:

Distinguish Fetch requests.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::initializeWith):
Set the requester type as Fetch.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::didReceiveResponse):

  • loader/DocumentThreadableLoader.h:
  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didReceiveThreadableLoaderResponseImpl):
(WebCore::InspectorInstrumentation::didReceiveXHRResponseImpl): Deleted.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didReceiveResourceResponse):
(WebCore::InspectorInstrumentation::didReceiveThreadableLoaderResponse):
(WebCore::InspectorInstrumentation::didReceiveXHRResponse): Deleted.

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::didReceiveThreadableLoaderResponse):
(WebCore::InspectorNetworkAgent::didFinishXHRLoading):
(WebCore::InspectorNetworkAgent::didReceiveXHRResponse): Deleted.
Add a generic way for a ThreadableLoader load to update the type of a network request.
This will include both XHR and Fetch requests.

  • inspector/InspectorPageAgent.cpp:

(WebCore::hasTextContent):
(WebCore::createXHRTextDecoder):
(WebCore::InspectorPageAgent::resourceTypeJson):
(WebCore::InspectorPageAgent::cachedResourceType):
(WebCore::InspectorPageAgent::createTextDecoder):
(WebCore::textContentForCachedResource):

  • inspector/InspectorPageAgent.h:
  • inspector/NetworkResourcesData.cpp:

(WebCore::createOtherResourceTextDecoder): Deleted.
Share the logic that creates a Text Decoders for XHR with other non-buffered requests
(like Fetch). This moves us to identical behavior for now.

  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::isSupportedJSONMIMEType):
(WebCore::MIMETypeRegistry::isTextMIMEType):

  • platform/MIMETypeRegistry.h:

Better detect different JSON content based on MIME Type.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:

New "Fetch" and "Fetches" localized strings.

  • UserInterface/Models/Resource.js:

(WebInspector.Resource.displayNameForType):

  • UserInterface/Models/ResourceCollection.js:

(WebInspector.ResourceCollection.verifierForType):

  • UserInterface/Views/CollectionContentView.js:

(WebInspector.CollectionContentView):

  • UserInterface/Views/ResourceClusterContentView.js:

(WebInspector.ResourceClusterContentView.prototype.get responseContentView):

  • UserInterface/Views/ResourceTreeElement.js:

(WebInspector.ResourceTreeElement.compareResourceTreeElements):
New ResourceType.Fetch. Behave like XHR in most places.

LayoutTests:

  • http/tests/inspector/network/fetch-response-body-expected.txt: Added.
  • http/tests/inspector/network/fetch-response-body.html: Added.
  • http/tests/inspector/network/resources/data.html: Added.
  • http/tests/inspector/network/resources/data.json: Added.
  • http/tests/inspector/network/resources/data.svg: Added.
  • http/tests/inspector/network/resources/data.txt: Added.
  • http/tests/inspector/network/resources/echo.php: Added.
  • http/tests/inspector/network/xhr-response-body-expected.txt: Added.
  • http/tests/inspector/network/xhr-response-body.html: Added.

Tests for viewing content of XHR and Fetch requested resources
with different kinds of content.

2:06 PM Changeset in webkit [209628] by rniwa@webkit.org
  • 16 edits
    12 adds in trunk

document.webkitFullscreenElement leaks elements inside a shadow tree
https://bugs.webkit.org/show_bug.cgi?id=158471

Reviewed by Chris Dumez.

Source/WebCore:

Fixed the bug by calling the newly added ancestorElementInThisScope in webkitCurrentFullScreenElementForBindings
and webkitFullscreenElementForBinding.

The specification (https://fullscreen.spec.whatwg.org/#dom-document-fullscreenelement) uses "the result of
retargeting fullscreen element" and returns null if the result is not in the same tree as the context object.

This is equivalent to the algorithm implemented by ancestorElementInThisScope. Observe that the retargeting
algorithm (https://dom.spec.whatwg.org/#retarget) finds the lowest common tree scope of the retargetee and
the context object. There are two cases to consider.

  1. The context object's tree scope is the lowest common tree scope: In this case, an ancestor shadow host or

the retargetee itself is in this tree scope. It's sufficient traverse every shadow host to find the one that
resides in the same tree scope as the context object. This is precisely what ancestorElementInThisScope does.

  1. The context object's tree scope is not the lowest common tree scope: In this case, the context object is

inside a shadow tree whose ancestor shadow host is in the lowest common tree scope. In this case, retargeting
algorithm finds a node which is not in the same tree as the context object. Thus, the result is null.
ancestorElementInThisScope traveres ancestor shadow hosts and returns null if no shadow host's tree scope
matches that of the context object's tree scope. Thus, it would return null in this case as desired.

Also renamed TreeScope::focusedElement to focusedElementInScope for clarity since Document which inherits
from TreeScope also has a distinct member function named focusedElement called by TreeScope::focusedElement,
and used ancestorElementInThisScope since it uses the same algorithm.

Tests: fast/shadow-dom/activeElement-for-focused-element-in-another-shadow.html

fast/shadow-dom/blur-on-shadow-host-with-focused-shadow-content.html
fast/shadow-dom/fullscreen-in-shadow-fullscreenElement.html
fast/shadow-dom/fullscreen-in-shadow-webkitCurrentFullScreenElement.html
fast/shadow-dom/fullscreen-in-slot-fullscreenElement.html
fast/shadow-dom/fullscreen-in-slot-webkitCurrentFullScreenElement.html

  • dom/Document.cpp:

(WebCore::Document::removeFocusedNodeOfSubtree):
(WebCore::Document::activeElement):

  • dom/Document.h:

(WebCore::Document::webkitCurrentFullScreenElementForBindings): Added.
(WebCore::Document::webkitFullscreenElementForBindings): Added.

  • dom/Document.idl:
  • dom/Element.cpp:

(WebCore::Element::blur):

  • dom/ShadowRoot.h:

(WebCore::ShadowRoot::activeElement):

  • dom/TreeScope.cpp:

(WebCore::TreeScope::ancestorNodeInThisScope): Renamed from ancestorInThisScope for clarity.
(WebCore::TreeScope::ancestorElementInThisScope):
(WebCore::TreeScope::focusedElementInScope): Renamed from focusedElement to disambiguate it from Document's
focusedElement.

  • dom/TreeScope.h:
  • editing/VisibleSelection.cpp:

(WebCore::adjustPositionForEnd):
(WebCore::adjustPositionForStart):

  • editing/htmlediting.cpp:

(WebCore::comparePositions):
(WebCore::firstEditablePositionAfterPositionInRoot):
(WebCore::lastEditablePositionBeforePositionInRoot):

  • page/DOMSelection.cpp:

(WebCore::selectionShadowAncestor):
(WebCore::DOMSelection::shadowAdjustedNode):
(WebCore::DOMSelection::shadowAdjustedOffset):

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::addNodeToRectBasedTestResult): Added a FIXME here since this is clearly wrong for
shadow trees created by author scripts.

Source/WebKit/mac:

Use the API for bindings to avoid exposing nodes inside a shadow tree.

  • DOM/DOMDocument.mm:

(-[DOMDocument webkitCurrentFullScreenElement]):
(-[DOMDocument webkitFullscreenElement]):

LayoutTests:

Added tests for calling webkitFullscreenElement and webkitCurrentFullScreenElement on a fullscreened element
to make sure they return the shadow host instead.

Also added two unrelated test cases for temporal regressions I introduced while working on this patch.

Skip the fullscreen tests on iOS WK2 since eventSender doesn't work there.

  • fast/shadow-dom/activeElement-for-focused-element-in-another-shadow-expected.txt: Added.
  • fast/shadow-dom/activeElement-for-focused-element-in-another-shadow.html: Added.
  • fast/shadow-dom/blur-on-shadow-host-with-focused-shadow-content-expected.txt: Added.
  • fast/shadow-dom/blur-on-shadow-host-with-focused-shadow-content.html: Added.
  • fast/shadow-dom/fullscreen-in-shadow-fullscreenElement-expected.txt: Added.
  • fast/shadow-dom/fullscreen-in-shadow-fullscreenElement.html: Added.
  • fast/shadow-dom/fullscreen-in-shadow-webkitCurrentFullScreenElement-expected.txt: Added.
  • fast/shadow-dom/fullscreen-in-shadow-webkitCurrentFullScreenElement.html: Added.
  • fast/shadow-dom/fullscreen-in-slot-fullscreenElement-expected.txt: Added.
  • fast/shadow-dom/fullscreen-in-slot-fullscreenElement.html: Added.
  • fast/shadow-dom/fullscreen-in-slot-webkitCurrentFullScreenElement-expected.txt: Added.
  • fast/shadow-dom/fullscreen-in-slot-webkitCurrentFullScreenElement.html: Added.
  • platform/ios-simulator-wk2/TestExpectations:
2:04 PM Changeset in webkit [209627] by ggaren@apple.com
  • 27 edits in trunk/Source

TextPosition and OrdinalNumber should be more like idiomatic numbers
https://bugs.webkit.org/show_bug.cgi?id=165678

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Adopt default constructor.

  • API/JSBase.cpp:

(JSEvaluateScript):
(JSCheckScriptSyntax):

  • API/JSObjectRef.cpp:

(JSObjectMakeFunction):

  • API/JSScriptRef.cpp:

(OpaqueJSScript::OpaqueJSScript):

  • jsc.cpp:

(functionCheckModuleSyntax):

  • parser/SourceCode.h:

(JSC::makeSource):

  • parser/SourceProvider.h:

(JSC::StringSourceProvider::create):
(JSC::WebAssemblySourceProvider::WebAssemblySourceProvider):

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunction):

  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeParseModule):

Source/WebCore:

  • bindings/js/CachedScriptSourceProvider.h:

(WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider):

  • bindings/js/JSEventListener.h:

(WebCore::JSEventListener::sourcePosition):

  • bindings/js/JSLazyEventListener.cpp:

(WebCore::JSLazyEventListener::JSLazyEventListener):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::eventHandlerPosition):

  • bindings/js/ScriptSourceCode.h:

(WebCore::ScriptSourceCode::ScriptSourceCode):

  • css/CSSStyleSheet.cpp:

(WebCore::CSSStyleSheet::create):

  • dom/ScriptElement.h:
  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::uninitializedPositionValue1):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::InspectorStyleSheet::buildObjectForStyleSheetInfo): Adopt
default construtor.

  • xml/XMLErrors.cpp:

(WebCore::XMLErrors::XMLErrors):
(WebCore::XMLErrors::handleError):

  • xml/XMLErrors.h: Use std::optional instead of belowRangePosition()

because in-band signaling is harder to reason about.

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::textPosition): Adopt default constructor.

Source/WebKit/win:

Adopt default constructor.

  • Plugins/PluginPackage.cpp:

(WebCore::makeSource):

Source/WTF:

  • wtf/text/TextPosition.h:

(WTF::TextPosition::minimumPosition): Deleted. Just use the default
constructor. Other numbers use their default constructors to mean zero.

Any time you need a comment that says "used as a default value", that's
a pretty good indicator that it should be the default constructor.

2:00 PM Changeset in webkit [209626] by Beth Dakin
  • 6 edits in trunk/Source

Password fields should not show the emoji button in TouchBar
https://bugs.webkit.org/show_bug.cgi?id=165673
-and corresponding-
rdar://problem/29235739

Reviewed by Wenson Hsieh.

Source/WebKit/mac:

This patch adds a new ivar for the password touch bar and password
candidateListTouchBarItem. Since this TouchBar will actually have a different set
of identifiers than the plain text TouchBar, it should just have its own variable.

The candidate list should be the only item for passwords.

  • WebView/WebView.mm:

(-[WebView _passwordTextTouchBarDefaultItemIdentifiers]):

Account for _passwordTextTouchBar.
(-[WebView didChangeAutomaticTextCompletion:]):
(-[WebView setUpTextTouchBar:]):
(-[WebView textTouchBar]):

The empty candidates array is not needed. We can just set @[ ] as the candidates
for the _passwordTextCandidateListTouchBarItem. Safe guards already exist in the
other parts of the code to prevent us from requesting or setting other candidates
when in a password field.
(-[WebView updateTextTouchBar]):

Account for _passwordTextTouchBar.
(-[WebView candidateList]):

  • WebView/WebViewData.h:

Source/WebKit2:

This patch adds a new member variable for the password touch bar and password
candidateListTouchBarItem. Since this TouchBar will actually have a different set
of identifiers than the plain text TouchBar, it should just have its own variable.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

Return m_passwordTextCandidateListTouchBarItem when appropriate.
(WebKit::WebViewImpl::candidateListTouchBarItem):

The candidate list should be the only item for passwords.
(WebKit::passwordTextTouchBarDefaultItemIdentifiers):

Account for m_passwordTextTouchBar.
(WebKit::WebViewImpl::updateTouchBarAndRefreshTextBarIdentifiers):
(WebKit::WebViewImpl::setUpTextTouchBar):
(WebKit::WebViewImpl::textTouchBar):

The empty candidates array is not needed. We can just set @[ ] as the candidates
for the m_passwordTextCandidateListTouchBarItem. Safe guards already exist in the
other parts of the code to prevent us from requesting or setting other candidates
when in a password field.
(WebKit::WebViewImpl::updateTextTouchBar):

1:59 PM Changeset in webkit [209625] by Keith Rollin
  • 6 edits in trunk/Source/WebKit2

Fix string specification in print format
https://bugs.webkit.org/show_bug.cgi?id=165650

Reviewed by Alex Christensen.

Change "%{public}s" string specifier to something that can be changed
to "%s" at compile time when the build environment doesn't support the
former.

  • NetworkProcess/capture/NetworkCaptureLogging.h:
  • NetworkProcess/capture/NetworkCaptureManager.cpp:

(WebKit::NetworkCapture::Manager::initialize):
(WebKit::NetworkCapture::Manager::findMatch):
(WebKit::NetworkCapture::Manager::findExactMatch):
(WebKit::NetworkCapture::Manager::findBestFuzzyMatch):
(WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
(WebKit::NetworkCapture::Manager::logPlayedBackResource):
(WebKit::NetworkCapture::Manager::openCacheFile):
(WebKit::NetworkCapture::Manager::getLine):

  • NetworkProcess/capture/NetworkCaptureRecorder.cpp:

(WebKit::NetworkCapture::Recorder::recordRequestSent):
(WebKit::NetworkCapture::Recorder::recordResponseReceived):
(WebKit::NetworkCapture::Recorder::recordRedirectReceived):
(WebKit::NetworkCapture::Recorder::recordRedirectSent):
(WebKit::NetworkCapture::Recorder::writeEvents):

  • NetworkProcess/capture/NetworkCaptureResource.cpp:

(WebKit::NetworkCapture::Resource::url):
(WebKit::NetworkCapture::Resource::EventStream::nextEvent):

  • NetworkProcess/capture/NetworkDataTaskReplay.cpp:

(WebKit::NetworkCapture::NetworkDataTaskReplay::NetworkDataTaskReplay):
(WebKit::NetworkCapture::NetworkDataTaskReplay::~NetworkDataTaskReplay):
(WebKit::NetworkCapture::NetworkDataTaskReplay::resume):
(WebKit::NetworkCapture::NetworkDataTaskReplay::suspend):
(WebKit::NetworkCapture::NetworkDataTaskReplay::complete):
(WebKit::NetworkCapture::NetworkDataTaskReplay::invalidateAndCancel):
(WebKit::NetworkCapture::NetworkDataTaskReplay::enqueueEventHandler):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayRequestSent):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayResponseReceived):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayRedirectReceived):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayRedirectSent):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayDataReceived):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayFinished):
(WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):

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

WebView doesn't become first responder in element fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=165664
rdar://problem/28927252

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-12-09
Reviewed by Tim Horton.

WebView was being set as the first responder while the contentView was still hidden.
A view can not become first responder while it or its ancestor is hidden.

This change waits until after the contentView is visible to make the web view the first responder.

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController enterFullScreen:]):
(-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]):

11:49 AM Changeset in webkit [209623] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, disable concurrent GC for real.

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

11:49 AM Changeset in webkit [209622] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, disable concurrent GC while crashes get investigated.

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

11:48 AM Changeset in webkit [209621] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

JSSegmentedVariableObject should keep its state private

Rubber stamped by Michael Saboff.

Its state fields were protected for no reason. They really should be private because
you have to know to obey a particular concurrency protocol when accessing them.

  • runtime/JSSegmentedVariableObject.h:
11:42 AM Changeset in webkit [209620] by Chris Dumez
  • 9 edits in trunk

[Cocoa] Validation message for required checkbox doesn’t conform the the Apple Style Guide
https://bugs.webkit.org/show_bug.cgi?id=165661

Reviewed by Dan Bernstein.

Source/WebCore:

Update validation message as per Apple Style Guide.

  • English.lproj/Localizable.strings:
  • platform/LocalizedStrings.cpp:

(WebCore::validationMessageValueMissingForCheckboxText):

LayoutTests:

Update / rebaseline tests.

  • fast/forms/ios/validation-bubble-dismiss-on-tap-expected.txt:
  • fast/forms/ios/validation-bubble-dismiss-on-tap.html:
  • fast/forms/validation-messages-expected.txt:
  • fast/forms/validation-messages.html:
  • platform/ios-simulator-wk2/fast/forms/validation-messages-expected.txt:
11:41 AM Changeset in webkit [209619] by jiewen_tan@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed, followup after r209598.

  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
11:22 AM Changeset in webkit [209618] by ggaren@apple.com
  • 3 edits
    1 copy in trunk/Source/WTF

Moved OrdinalNumber into its own file
https://bugs.webkit.org/show_bug.cgi?id=165663

Reviewed by Saam Barati.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/text/OrdinalNumber.h: Copied from Source/WTF/wtf/text/TextPosition.h.

(WTF::TextPosition::TextPosition): Deleted.
(WTF::TextPosition::operator==): Deleted.
(WTF::TextPosition::operator!=): Deleted.
(WTF::TextPosition::minimumPosition): Deleted.
(WTF::TextPosition::belowRangePosition): Deleted.

  • wtf/text/TextPosition.h:

(WTF::OrdinalNumber::fromZeroBasedInt): Deleted.
(WTF::OrdinalNumber::fromOneBasedInt): Deleted.
(WTF::OrdinalNumber::OrdinalNumber): Deleted.
(WTF::OrdinalNumber::zeroBasedInt): Deleted.
(WTF::OrdinalNumber::oneBasedInt): Deleted.
(WTF::OrdinalNumber::operator==): Deleted.
(WTF::OrdinalNumber::operator!=): Deleted.
(WTF::OrdinalNumber::first): Deleted.
(WTF::OrdinalNumber::beforeFirst): Deleted.

10:50 AM Changeset in webkit [209617] by Alan Bujtas
  • 3 edits
    2 adds in trunk

ASSERTION FAILED: !beforeChild->isRubyRun() in WebCore::RenderRubyAsBlock::addChild
https://bugs.webkit.org/show_bug.cgi?id=141433
<rdar://problem/27711351>

Reviewed by Dean Jackson.

Source/WebCore:

Do not try to inject the list marker into a block ruby subtree. Have it as the sibling
of the ruby instead (with an anonymous block wrapper ofc).

Test: fast/ruby/assert-with-listitem-and-block-ruby.html

  • rendering/RenderListItem.cpp:

(WebCore::getParentOfFirstLineBox):

LayoutTests:

  • fast/ruby/assert-with-listitem-and-block-ruby-expected.txt: Added.
  • fast/ruby/assert-with-listitem-and-block-ruby.html: Added.
10:29 AM Changeset in webkit [209616] by Ryan Haddad
  • 2 edits in trunk/Tools

Fix the 32-bit build.

Unreviewed build fix.

  • MiniBrowser/mac/SettingsController.h:
10:28 AM Changeset in webkit [209615] by graouts@webkit.org
  • 6 edits
    2 adds in trunk

[Modern Media Controls] Implement the pageScaleFactor property
https://bugs.webkit.org/show_bug.cgi?id=165660

Reviewed by Dean Jackson.

Source/WebCore:

We implement the pageScaleFactor property on MediaController. This property is set
by the HTMLMediaElement when the page scale factor changes, and we only choose to handle
it on iOS by setting controlsDependOnPageScaleFactor to true on the MediaControlsHost.

To do so, we now size the media controls by multiplying the layout size of the media by
the page scale factor, and apply an inverse CSS zoom on the media controls themselves.

Test: media/modern-media-controls/media-controller/media-controller-scale-factor.html

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

(.media-controls-container,):

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

(MediaControls.prototype.get scaleFactor):
(MediaControls.prototype.set scaleFactor):
(MediaControls.prototype.commitProperty):

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

(MediaController):
(MediaController.prototype.set pageScaleFactor):
(MediaController.prototype._updateControlsSize):

  • html/HTMLMediaElement.cpp:

(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::setControllerJSProperty):

We no longer hit a JSC assertion when trying to set the pageScaleFactor property before
the JS controller was actually created.

LayoutTests:

Add a new test to check that we correctly zoom and size the media controls when the page
scale factor is a value other than 1.

  • media/modern-media-controls/media-controller/media-controller-scale-factor-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-scale-factor.html: Added.
10:27 AM Changeset in webkit [209614] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Attempt to fix the Mac CMake build following <http://trac.webkit.org/changeset/209549>
(https://bugs.webkit.org/show_bug.cgi?id=165572)

Add directory html/canvas to the list of forwarding headers directories so that
the Legacy WebKit Objective-C DOM binding DOMHTMLCanvasElement.mm can ultimately
include header WebGLContextAttributes.h.

  • PlatformMac.cmake:
10:21 AM Changeset in webkit [209613] by beidson@apple.com
  • 4 edits
    1 copy in trunk/Source/WebCore

LinkIconCollector refactoring.
https://bugs.webkit.org/show_bug.cgi?id=165657

Reviewed by Dean Jackson.

No new tests (Refactor, no behavior change)

  • WebCore.xcodeproj/project.pbxproj:
  • html/LinkIconCollector.cpp:

(WebCore::iconSize):
(WebCore::compareIcons):

  • html/LinkIconCollector.h:
  • platform/LinkIcon.h: Move outside of LinkIconCollector for future expandability.
10:12 AM Changeset in webkit [209612] by Ryan Haddad
  • 17 edits
    1 add
    1 delete in trunk

Unreviewed, rolling out r209574.

This change broke the Windows build.

Reverted changeset:

"[WebIDL] Remove custom bindings for Geolocation"
https://bugs.webkit.org/show_bug.cgi?id=165625
http://trac.webkit.org/changeset/209574

9:57 AM Changeset in webkit [209611] by commit-queue@webkit.org
  • 3 edits
    1 add in trunk

Fedora also needs a PHP7 config file alternative
https://bugs.webkit.org/show_bug.cgi?id=165606

Patch by Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> on 2016-12-09
Reviewed by Michael Catanzaro.

Tools:

  • Scripts/webkitpy/port/base.py:

(Port._is_fedora_php_version_7): check for the php7 library.
(Port._fedora_php_version): get the appropriate filename for Fedora.
(Port._apache_config_file_name_for_platform):

LayoutTests:

  • http/conf/fedora-httpd-2.4-php7.conf: Added.
9:54 AM Changeset in webkit [209610] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

Custom Elements from a different document are not customized when created with innerHTML
https://bugs.webkit.org/show_bug.cgi?id=165617

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was caused by a superflous null check on window in createHTMLElementOrFindCustomElementInterface.
Removed the nullcheck to fix the bug.

Test: fast/custom-elements/adopting-from-frameless-document.html

  • html/parser/HTMLConstructionSite.cpp:

(WebCore::HTMLConstructionSite::createHTMLElementOrFindCustomElementInterface):

LayoutTests:

Added a W3C style testharness.js test.

  • fast/custom-elements/adopting-from-frameless-document-expected.txt: Added.
  • fast/custom-elements/adopting-from-frameless-document.html: Added.
9:45 AM Changeset in webkit [209609] by Ryan Haddad
  • 4 edits in trunk/Tools

Complete the revert of r208865.
https://bugs.webkit.org/show_bug.cgi?id=164894

Unreviewed build fix.

  • MiniBrowser/mac/SettingsController.h:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController loadsAllSiteIcons]): Deleted.
(-[SettingsController toggleLoadsAllSiteIcons:]): Deleted.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController awakeFromNib]):
(-[WK2BrowserWindowController webView:shouldLoadIconWithParameters:completionHandler:]): Deleted.

9:27 AM Changeset in webkit [209608] by dbates@webkit.org
  • 7 edits
    2 adds in trunk

[CSP] Policy of window opener not applied to about:blank window
https://bugs.webkit.org/show_bug.cgi?id=165531
<rdar://problem/29426639>

Reviewed by Brent Fulgham.

Source/WebCore:

Fixes an issue where the content security policy of the opener document was not applied to
an about:blank window.

An about:blank window inherits its security origin from its opener document. It should also
copy (inherit) the ContentSecurityPolicy from its opener document. When copying the ContentSecurityPolicy
state from the opener document to the about:blank document we must take care to avoid copying
any upgrade-insecure-request directive because new windows should not inherit it by definition.
With respect to upgrade-insecure-requests, new windows should only inherit the insecure navigation set
from their opener document.

Test: http/tests/security/contentSecurityPolicy/image-blocked-in-about-blank-window.html

  • dom/Document.cpp:

(WebCore::Document::initContentSecurityPolicy): Copy the ContentSecurityPolicy state from the
owner document to this document when it inherits its security origin from its owner. An about:blank
window is one example of a document that inherits its security origin from its owner.

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge): Call ContentSecurityPolicy::copyUpgradeInsecureRequestStateFrom()
to copy the upgrade insecure requests state from the owner document to the worker now that
ContentSecurityPolicy::copyStateFrom() no longer does this.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::copyStateFrom): Do not copy the upgrade insecure request state.
Callers are now responsible for calling ContentSecurityPolicy::copyUpgradeInsecureRequestStateFrom()
to copy this state.

  • page/csp/ContentSecurityPolicyDirectiveList.cpp:

(WebCore::ContentSecurityPolicyDirectiveList::parse): Ignore directive upgrade-insecure-requests when
inheriting ContentSecurityPolicy state as this directive as the Upgrade Insecure Requests feature has
its own inheritance semantics that differ from the semantics of copying a ContentSecurityPolicy object.

  • xml/XSLTProcessor.cpp:

(WebCore::XSLTProcessor::createDocumentFromSource): Call ContentSecurityPolicy::copyUpgradeInsecureRequestStateFrom()
to copy the upgrade insecure requests state from the original document to the transformed document now
that ContentSecurityPolicy::copyStateFrom() no longer does this.

LayoutTests:

Add a test to ensure that an about:blank window inherits the CSP policy of its
opener document.

  • http/tests/security/contentSecurityPolicy/image-blocked-in-about-blank-window-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/image-blocked-in-about-blank-window-blocked.html: Added.
7:31 AM Changeset in webkit [209607] by graouts@webkit.org
  • 3 edits
    2 adds in trunk

[Modern Media Controls] Remaining time label first appears way to the left
https://bugs.webkit.org/show_bug.cgi?id=165637

Reviewed by Dean Jackson.

Source/WebCore:

We would sometimes see the remaining time label be laid out in an incorrect position
when a video would start playing. This happened because the time label was being committed
from a previous value before, in the same frame, we would call the layout() function
of MacOSInlineMediaControls. This would set the newly computed location for the
remaining time label, but because we would reset the list of dirty properties after
calling all layout functions, the new value set in MacOSInlineMediaControls.layout()
would be disregarded and the wrong, committed value would persist until it was reset
in a much later frame.

We now correctly clear the list of dirty nodes before laying them out, giving all nodes
a chance to become dirty again during layout, and updated again in the next frame.

Test: media/modern-media-controls/layout-node/node-made-dirty-during-layout.html

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

(performScheduledLayout):

LayoutTests:

Add a new test that checks that marking a property as dirty during a layout correctly commits
that property on the next frame.

  • media/modern-media-controls/layout-node/node-made-dirty-during-layout-expected.txt: Added.
  • media/modern-media-controls/layout-node/node-made-dirty-during-layout.html: Added.
7:30 AM Changeset in webkit [209606] by Gustavo Noronha Silva
  • 2 edits in trunk/Tools

[GTK] Force GDK backend to x11 when running with XvfbDriver
https://bugs.webkit.org/show_bug.cgi?id=165612

Reviewed by Michael Catanzaro.

When the developer is running a Wayland session, GDK may get confused
and try to use its Wayland backend (which is higher priority) instead.
This ensures it will use the appropriate backend when running under
Xvfb.

  • Scripts/webkitpy/port/gtk.py:

(GtkPort.setup_environ_for_server): when running with XvfbDriver,
force GDK_BACKEND to x11.

7:23 AM Changeset in webkit [209605] by Gustavo Noronha Silva
  • 2 edits in trunk/Source/WebKit2

Unreviewed build fix. Thanks to Konstantin Tokarev and Csaba Osztrogonác
for pointing out the fix.

  • CMakeLists.txt: add WebCore/html/canvas to include paths.
6:05 AM Changeset in webkit [209604] by Gustavo Noronha Silva
  • 4 edits in trunk/Source/WebKit2

[GTK] Fix build after r209558
https://bugs.webkit.org/show_bug.cgi?id=165653

Unreviewed build fix.

  • UIProcess/API/APIPolicyClient.h: include WebsitePolicies.h.
  • UIProcess/API/gtk/WebKitPolicyClient.cpp: ditto.
  • UIProcess/API/gtk/WebKitPolicyDecision.cpp:

(webkit_policy_decision_use): pass empty structure to new required argument.

3:13 AM Changeset in webkit [209603] by pvollan@apple.com
  • 4 edits in trunk/Source/WebCore

Fix compile errors on Windows when building with .proj files.

Unreviewed build fix.

Fix include paths.

  • platform/graphics/win/IntPointWin.cpp:
  • platform/graphics/win/IntRectWin.cpp:
  • platform/graphics/win/IntSizeWin.cpp:
2:50 AM Changeset in webkit [209602] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

Unreviewed buildfix after r209570.

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::addBuiltinGlobals):

2:32 AM Changeset in webkit [209601] by svillar@igalia.com
  • 3 edits in trunk/Source/WebCore

[css-grid] Pass Grid as argument to items' placement methods
https://bugs.webkit.org/show_bug.cgi?id=165250

Reviewed by Darin Adler.

In order to constify computeIntrinsicLogicalWidths() it is required to constify
placeItemsOnGrid() first, which is the base method of the grid items' positioning logic. The
first step is to constify all the methods invoked by the latter, which basically means to
pass the Grid as argument to all of them instead of directly using the m_grid attribute from
RenderGrid. As this is an intermediate step, a new const_cast<> was required in the
intrinsic size computation. However it will be promptly removed after the const-ification of
placeItemsOnGrid().

After this, only the methods used by the track sizing algorithm will directly access
m_grid. All those would get a reference to the Grid via GridSizingData, but that's a matter
of a follow up patch.

Apart from that, m_gridIsDirty was removed because it was always too confusing. It was
replaced by Grid's m_needsItemsPlacement which is much more concise. The clearGrid() call
was indeed only forcing a new placement of the grid items.

No new tests as this is a refactoring.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::Grid::setNeedsItemsPlacement): New method to flag the Grid whenever
grid items' placement algorithm needs to be run.
(WebCore::RenderGrid::canPerformSimplifiedLayout):
(WebCore::RenderGrid::layoutBlock):
(WebCore::RenderGrid::computeIntrinsicLogicalWidths):
(WebCore::RenderGrid::computeEmptyTracksForAutoRepeat):
(WebCore::RenderGrid::placeItemsOnGrid):
(WebCore::RenderGrid::populateExplicitGridAndOrderIterator): Constified. Got Grid as
argument.
(WebCore::RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid): Ditto.
(WebCore::RenderGrid::placeSpecifiedMajorAxisItemsOnGrid): Ditto.
(WebCore::RenderGrid::placeAutoMajorAxisItemsOnGrid): Ditto.
(WebCore::RenderGrid::placeAutoMajorAxisItemOnGrid): Ditto.
(WebCore::RenderGrid::clearGrid):
(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
(WebCore::RenderGrid::numTracks):

  • rendering/RenderGrid.h:
1:50 AM Changeset in webkit [209600] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed ARM buildfix after 209570.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::or32): Added.

12:08 AM Changeset in webkit [209599] by barraclough@apple.com
  • 23 edits
    8 deletes in trunk/Source

Revert - Add _WKIconLoadingDelegate SPI
https://bugs.webkit.org/show_bug.cgi?id=164894

Unreviewed rollout due to performance regression.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::implicitClose):

  • html/LinkIconCollector.cpp:

(WebCore::iconSize):
(WebCore::compareIcons):

  • html/LinkIconCollector.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startIconLoading): Deleted.
(WebCore::DocumentLoader::didGetLoadDecisionForIcon): Deleted.
(WebCore::DocumentLoader::finishedLoadingIcon): Deleted.

  • loader/DocumentLoader.h:
  • loader/FrameLoaderClient.h:
  • loader/icon/IconLoader.cpp:

(WebCore::IconLoader::IconLoader):
(WebCore::IconLoader::startLoading):
(WebCore::IconLoader::notifyFinished):

  • loader/icon/IconLoader.h:
  • platform/LinkIcon.h: Removed.

Source/WebKit2:

  • PlatformMac.cmake:
  • UIProcess/API/APIIconLoadingClient.h: Removed.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _iconLoadingDelegate]): Deleted.
(-[WKWebView _setIconLoadingDelegate:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKIconLoadingDelegate.h: Removed.
  • UIProcess/API/Cocoa/_WKLinkIconParameters.h: Removed.
  • UIProcess/API/Cocoa/_WKLinkIconParameters.mm: Removed.
  • UIProcess/API/Cocoa/_WKLinkIconParametersInternal.h: Removed.
  • UIProcess/Cocoa/IconLoadingDelegate.h: Removed.
  • UIProcess/Cocoa/IconLoadingDelegate.mm: Removed.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setIconLoadingClient): Deleted.
(WebKit::WebPageProxy::getLoadDecisionForIcon): Deleted.
(WebKit::WebPageProxy::finishedLoadingIcon): Deleted.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::iconLoadingClient): Deleted.

  • UIProcess/WebPageProxy.messages.in:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::useIconLoadingClient): Deleted.
(WebKit::WebFrameLoaderClient::getLoadDecisionForIcon): Deleted.
(WebKit::WebFrameLoaderClient::finishedLoadingIcon): Deleted.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

(WebKit::WebFrameLoaderClient::setUseIconLoadingClient): Deleted.
(): Deleted.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didGetLoadDecisionForIcon): Deleted.
(WebKit::WebPage::setUseIconLoadingClient): Deleted.

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

Dec 8, 2016:

11:45 PM Changeset in webkit [209598] by jiewen_tan@apple.com
  • 8 edits in trunk

[WebCrypto] Remove NoInterfaceObject attribute from SubtleCrypto Interface
https://bugs.webkit.org/show_bug.cgi?id=165629
<rdar://problem/29586203>

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • WebCryptoAPI/idlharness-expected.txt:

Source/WebCore:

Covered by existing tests.

  • crypto/SubtleCrypto.idl:

LayoutTests:

  • js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
10:52 PM Changeset in webkit [209597] by jfbastien@apple.com
  • 8 edits in trunk

WebAssembly: JSC::link* shouldn't need a CodeBlock
https://bugs.webkit.org/show_bug.cgi?id=165591

Reviewed by Keith Miller.

JSTests:

test that wasm -> JS works, including the IC

  • wasm/js-api/test_Instance.js:

(const.wasmModuleWhichImportJS):
(MonomorphicImport):
(Polyphic2Import):
(Polyphic3Import):
(VirtualImport):

Source/JavaScriptCore:

Allow linking without a CodeBlock, which WebAssembly's wasm -> JS stubs does. This needs to work for polymorphic and virtual calls. This patch adds corresponding tests for this.

  • assembler/LinkBuffer.cpp:

(JSC::shouldDumpDisassemblyFor): don't look at the tier option if there isn't a CodeBlock, only look at the global one. This is a WebAssembly function, so the tier information is irrelevant.

  • jit/Repatch.cpp:

(JSC::isWebAssemblyToJSCallee): this is used in the link* functions below
(JSC::linkFor):
(JSC::linkVirtualFor):
(JSC::linkPolymorphicCall):

  • runtime/Options.h: add an option to change the maximum number of polymorphic calls in stubs from wasm to JS, which will come in handy when we try to tune performance or try merging some of the WebAssembly stubs
  • wasm/WasmBinding.cpp:

(JSC::Wasm::importStubGenerator): remove the breakpoint since the code now works

  • wasm/js/WebAssemblyToJSCallee.h:
9:10 PM Changeset in webkit [209596] by fpizlo@apple.com
  • 2 edits in trunk/JSTests

Green the cloop bot by raising this threshold.

  • mozilla/js1_5/Array/regress-101964.js:
8:53 PM Changeset in webkit [209595] by fpizlo@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

MultiPutByOffset should get a barrier if it transitions
https://bugs.webkit.org/show_bug.cgi?id=165646

Reviewed by Keith Miller.

Previously, if we knew that we were storing a non-cell but we needed to transition, we
would fail to add the barrier but the FTL's lowering expected the barrier to be there.

Strictly, we need to "consider" the barrier on MultiPutByOffset if the value is
possibly a cell or if the MultiPutByOffset may transition. Then "considering" the
barrier implies checking if the base is possibly old.

But because the barrier is so cheap anyway, this patch implements something safer: we
just consider the barrier on MultiPutByOffset unconditionally, which opts it out of any
barrier optimizations other than those based on the predicted state of the base. Those
optimizations are already sound - for example they use doesGC() to detect safepoints
and that function correctly predicts when MultiPutByOffset could GC.

Because the barrier optimizations are only a very small speed-up, I think it's great to
fix bugs by weakening the optimizer without cleverness.

  • dfg/DFGFixupPhase.cpp:
  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::assertValidCell):

7:30 PM Changeset in webkit [209594] by fpizlo@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

Enable concurrent GC on ARM64
https://bugs.webkit.org/show_bug.cgi?id=165643

Reviewed by Saam Barati.

It looks stable enough to enable.

  • assembler/CPU.h:

(JSC::useGCFences): Deleted.

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::generateImpl):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::mutatorFence):
(JSC::AssemblyHelpers::storeButterfly):
(JSC::AssemblyHelpers::nukeStructureAndStoreButterfly):
(JSC::AssemblyHelpers::emitInitializeInlineStorage):
(JSC::AssemblyHelpers::emitInitializeOutOfLineStorage):

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

7:10 PM Changeset in webkit [209593] by Keith Rollin
  • 2 edits in trunk/Source/WebCore

FileHandle::printf doesn't build on Windows
https://bugs.webkit.org/show_bug.cgi?id=165642

Reviewed by Ryosuke Niwa.

Fix the build -- vasprintf does not exist on Windows, so make
FileHandle::printf a no-op on that platform.

No new tests -- affected facility is currently only used in testing
code and is not user reachable.

  • platform/FileHandle.cpp:

(WebCore::FileHandle::printf):

6:37 PM Changeset in webkit [209592] by commit-queue@webkit.org
  • 5 edits in trunk

[Modern Media Controls] Exiting fullscreen with paused media shows the start button
https://bugs.webkit.org/show_bug.cgi?id=165640

Patch by Antoine Quint <Antoine Quint> on 2016-12-08
Reviewed by Dean Jackson.

Source/WebCore:

Like all supporting objects, the StartSupport instance gets recreated when creating controls
for new layout traits, which happens when going from fullscreen to inline. Due to this, the
"_isPlayed" property is not longer set to true, even if the media has played prior to being
paused in fullscreen. We now also check the media's played range to identify whether media
has been played.

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

(StartSupport.prototype._shouldShowStartButton):
(StartSupport):

LayoutTests:

Modify the existing test that enters fullscreen and returns to inline controls with paused media
to check that the start button is not shown upon returning to inline controls.

  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline-expected.txt:
  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html:
6:06 PM Changeset in webkit [209591] by mmaxfield@apple.com
  • 4 edits
    2 adds in trunk

ASSERTION FAILED: locale in WebCore::lastHyphenLocation
https://bugs.webkit.org/show_bug.cgi?id=164182

Reviewed by Zalan Bujtas.

Source/WebCore:

Our hyphenation code assumes the locale is in a small set of known locales.
However, web content can put whatever string it wants in the locale field.

Test: fast/text/hyphenation-unknown-locale.html

  • platform/text/cf/HyphenationCF.cpp:

(WebCore::lastHyphenLocation):

  • rendering/RenderText.cpp:

(WebCore::maxWordFragmentWidth): When computing the minimum preferred width of
an element, we want to know the size of the widest nonbreakable unit. When
hyphenation is enabled, we have to measure the width of each fragment of each
word (where "fragment" is determined by a substring between two successive
hyphenation points, appended with a hyphen character). A hyphenation point at
string offset 0 is irrelevant for this purpose, because it would lead to an
empty fragment. Therefore, skip this situation.

LayoutTests:

  • fast/text/hyphenation-unknown-locale-expected.txt: Added.
  • fast/text/hyphenation-unknown-locale.html: Added.
5:54 PM Changeset in webkit [209590] by ddkilzer@apple.com
  • 6 edits in trunk/Source

Always check the return value of pthread_key_create()
<https://webkit.org/b/165274>

Reviewed by Darin Adler.

Source/bmalloc:

  • bmalloc/PerThread.h:

(bmalloc::PerThreadStorage::init): Call BCRASH() if
pthread_key_create() returns an error. The error code will be
stored in a register available in a crash log, so no need to log
the value explicitly.

Source/WebCore:

  • platform/ios/wak/WebCoreThread.mm:

(InitThreadContextKey): Call CRASH() if pthread_key_create()
returns an error. The error code will be stored in a register
available in a crash log, so no need to log the value
explicitly.

Source/WTF:

  • wtf/ThreadIdentifierDataPthreads.cpp:

(WTF::ThreadIdentifierData::initializeOnce): Make the code more
readable by assigning a variable to the result of
pthread_key_create(). This matches the idiom used elsewhere.

5:51 PM Changeset in webkit [209589] by bshafiei@apple.com
  • 2 edits in tags/Safari-603.1.14.3/Source/WebCore

Merged r209415. rdar://problem/29509424

5:48 PM Changeset in webkit [209588] by bshafiei@apple.com
  • 5 edits in tags/Safari-603.1.14.3/Source

Versioning.

5:44 PM Changeset in webkit [209587] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.14.3

New tag.

5:34 PM Changeset in webkit [209586] by keith_miller@apple.com
  • 4 edits in trunk

Add 64-bit signed LEB decode method
https://bugs.webkit.org/show_bug.cgi?id=165630

Reviewed by Ryosuke Niwa.

Source/WTF:

Add int64 LEB decode and fix some 64-bit specific issues
with the decoder. There is also a fix where we would allow
LEBs with canonical length + 1 size that is fixed by this
patch.

  • wtf/LEBDecoder.h:

(WTF::LEBDecoder::decodeUInt):
(WTF::LEBDecoder::decodeInt):
(WTF::LEBDecoder::decodeUInt32):
(WTF::LEBDecoder::decodeUInt64):
(WTF::LEBDecoder::decodeInt32):
(WTF::LEBDecoder::decodeInt64):

Tools:

Add tests for LEB int64 and uint64 decode since I guess
I forgot to add tests before.

  • TestWebKitAPI/Tests/WTF/LEBDecoder.cpp:

(TestWebKitAPI::testUInt32LEBDecode):
(TestWebKitAPI::TEST):
(TestWebKitAPI::testUInt64LEBDecode):
(TestWebKitAPI::testInt32LEBDecode):
(TestWebKitAPI::testInt64LEBDecode):
(TestWebKitAPI::testUnsignedLEBDecode): Deleted.

5:21 PM Changeset in webkit [209585] by fpizlo@apple.com
  • 2 edits in trunk/Tools

Make it easy to enable --force-collectContinuously
https://bugs.webkit.org/show_bug.cgi?id=165638

Reviewed by Keith Miller.

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

5:21 PM Changeset in webkit [209584] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Reduce PassRefPtr use in platform/graphics
https://bugs.webkit.org/show_bug.cgi?id=165636

Reviewed by Dean Jackson.

No change in behavior.

  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/mac/DisplayRefreshMonitorMac.h:

(WebCore::DisplayRefreshMonitorMac::create):

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::createForCurrentGLContext):
(WebCore::GraphicsContext3D::paintRenderingResultsToImageData):

4:56 PM Changeset in webkit [209583] by Keith Rollin
  • 10 edits
    2 adds
    1 delete in trunk/Source

Move FileHandle to WebCore FileHandle.h
https://bugs.webkit.org/show_bug.cgi?id=165562

Reviewed by Alex Christensen.

Source/WebCore:

Add FileHandle, a small wrapper around FileSystem facilities to manage
the lifetime of an open file and give the facilities a C++ interface.

No new tests -- affected facility is currently only used in testing
code and is not user reachable.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/FileHandle.cpp: Added.

(WebCore::FileHandle::FileHandle):
(WebCore::FileHandle::~FileHandle):
(WebCore::FileHandle::operator=):
(WebCore::FileHandle::operator bool):
(WebCore::FileHandle::open):
(WebCore::FileHandle::read):
(WebCore::FileHandle::write):
(WebCore::FileHandle::printf):
(WebCore::FileHandle::close):

  • platform/FileHandle.h: Added.

Source/WebKit2:

Move FileHandle from NetworkCaptureTypes.h (which can now be deleted)
to WebCore. Update client code to use the new version.

  • NetworkProcess/capture/NetworkCaptureEvent.cpp:
  • NetworkProcess/capture/NetworkCaptureEvent.h:
  • NetworkProcess/capture/NetworkCaptureManager.cpp:

(WebKit::NetworkCapture::Manager::initialize):
(WebKit::NetworkCapture::Manager::terminate):
(WebKit::NetworkCapture::Manager::logRecordedResource):
(WebKit::NetworkCapture::Manager::logLoadedResource):
(WebKit::NetworkCapture::Manager::logPlayedBackResource):
(WebKit::NetworkCapture::Manager::openCacheFile):
(WebKit::NetworkCapture::Manager::ensureFileHandle): Deleted.
(WebKit::NetworkCapture::Manager::printToFile): Deleted.

  • NetworkProcess/capture/NetworkCaptureManager.h:
  • NetworkProcess/capture/NetworkCaptureRecorder.cpp:

(WebKit::NetworkCapture::Recorder::writeEvents):

  • NetworkProcess/capture/NetworkCaptureTypes.h: Removed.
  • WebKit2.xcodeproj/project.pbxproj:
4:53 PM Changeset in webkit [209582] by rniwa@webkit.org
  • 3 edits
    4 adds in trunk

ASSERTION FAILED: m_items.isEmpty() in CustomElementReactionQueue destructor
https://bugs.webkit.org/show_bug.cgi?id=162029
<rdar://problem/28945851>

Reviewed by Chris Dumez.

Source/WebCore:

The bug was caused by Document::removedLastRef enqueuing disconnectedCallback during a tear down.
Don't enqueue a disconnectedCallback while a document is getting torn down since that should not be
observable to author scripts. The connected, adopted, and attributeChanged callbacks are immune from
this problem since they don't happen during a document destruction.

Note that this was also the case prior to this patch since the disconnectedCallback would have been
added to the current CustomElementReactionQueue which will be destructed without invoking callbacks
(or hit a release assertion added in r208785 and r209426 for now).

Tests: fast/custom-elements/disconnected-callback-in-detached-iframe.html

fast/custom-elements/element-queue-during-document-destruction.html

  • dom/CustomElementReactionQueue.cpp:

(WebCore::CustomElementReactionQueue::enqueueConnectedCallbackIfNeeded): Added an assertion that
document's refCount hasn't reached zero yet.
(WebCore::CustomElementReactionQueue::enqueueDisconnectedCallbackIfNeeded): Fixed the bug.
(WebCore::CustomElementReactionQueue::enqueueAdoptedCallbackIfNeeded): Added the same assertion.
(WebCore::CustomElementReactionQueue::enqueueAttributeChangedCallbackIfNeeded): Ditto.

LayoutTests:

Added a regression test that reliably reproduces the crash in DumpRenderTree / WebKitTestRunner.

Also added a W3C style testharness.js test for the behavior I broke in an earlier iteration of the patch.

  • fast/custom-elements/disconnected-callback-in-detached-iframe-expected.txt: Added.
  • fast/custom-elements/disconnected-callback-in-detached-iframe.html: Added.
  • fast/custom-elements/element-queue-during-document-destruction-expected.txt: Added.
  • fast/custom-elements/element-queue-during-document-destruction.html: Added.
4:44 PM Changeset in webkit [209581] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Attempt to fix the iOS build.

  • Platform/IPC/mac/MachMessage.cpp:
4:36 PM Changeset in webkit [209580] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking compositing/rtl/rtl-fixed-overflow.html as failing on mac-wk1.
https://bugs.webkit.org/show_bug.cgi?id=165541

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:32 PM Changeset in webkit [209579] by fpizlo@apple.com
  • 2 edits in trunk/Tools

Disable the collectContinuously mode until I investigate failures.

Rubber stamped by Keith Miller.

I'm seeing collectContinuously crashes on some platforms. Disabling that testing mode
while I investigate.

  • Scripts/run-jsc-stress-tests:
4:24 PM Changeset in webkit [209578] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Add Strict Mixed Content Checking and Upgrade Insecure Requests to WebKit Feature Status dashboard
https://bugs.webkit.org/show_bug.cgi?id=165635

Rubber-stamped by Ryosuke Niwa.

  • features.json:
3:54 PM Changeset in webkit [209577] by dbates@webkit.org
  • 17 edits
    71 adds in trunk

Implement Strict Mixed Content Checking
https://bugs.webkit.org/show_bug.cgi?id=165438
<rdar://problem/26103867>

Reviewed by Brent Fulgham and Andy Estes.

Source/WebCore:

Add support for the CSP directive block-all-mixed-content to enable strict mixed content checking
as per <https://www.w3.org/TR/2016/CR-mixed-content-20160802/#strict-checking> (2 August 2016).

Currently WebKit only blocks blockable content as such content can contaminate the security origin
that loaded it. Optionally-blockable content, including images, would be allowed to load as mixed
content. When strict mixed content checking is enabled all mixed content is blocked. That is, both
blockable and optionally-blockable content will be blocked. A web site can opt into strict mixed
content checking by adding the directive block-all-mixed-content to their content security policy.

Tests: http/tests/security/contentSecurityPolicy/block-all-mixed-content/data-url-iframe-in-main-frame.html

http/tests/security/contentSecurityPolicy/block-all-mixed-content/duplicate-directive.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-main-frame.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-blob-url-iframe-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-inherited-policy.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-javascript-url-iframe-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-main-frame.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-xslt-document-in-iframe-with-inherited-policy.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-main-frame.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe-with-inherited-policy.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-main-frame.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-main-frame.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-main-frame.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/secure-image-after-upgrade-in-iframe.html
http/tests/security/contentSecurityPolicy/block-all-mixed-content/secure-image-after-upgrade-redirect-in-iframe.html

  • dom/Document.cpp:

(WebCore::Document::initSecurityContext): Inherit strict mixed content checking mode from parent document.

  • dom/SecurityContext.h:

(WebCore::SecurityContext::isStrictMixedContentMode): Added.
(WebCore::SecurityContext::setStrictMixedContentMode): Added.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::willSendRequest): Check mixed content policy with respect to the current frame.
The document in the current frame may have opted into strict mixed content checking or inherited it from
its parent document.

  • loader/DocumentWriter.cpp:

(WebCore::DocumentWriter::begin): Inherit the strict mixed content checking mode from the owner document
when loading a JavaScript URL in a frame (e.g. <iframe src="javascript:...">) because such URLs inherit
the security origin of their parent document.

  • loader/MixedContentChecker.cpp:

(WebCore::MixedContentChecker::canDisplayInsecureContent): Check the content security policy of the document
and the strict mixed content checking mode bit on the document (in that order) to determine if we are in
strict mode. Block display of insecure content when in strict mode. Modified to take enum AlwaysDisplayInNonStrictMode (defaults
to AlwaysDisplayInNonStrictMode::No) as to whether to allow our current relaxed behavior of displaying insecure
content in non-strict mode.
(WebCore::MixedContentChecker::canRunInsecureContent): Check the content security policy of the document
and the strict mixed content checking mode bit on the document (in that order) to determine if we are in
strict mode. Block running of insecure content when in strict mode.

  • loader/MixedContentChecker.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::checkInsecureContent): Always check mixed content policy with respect to
the current frame. The document in the current frame may have opted into strict mixed content checking or
inherited it from its parent document. Also renamed a local variable f to frame to better describe its
purpose.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allowRunningOrDisplayingInsecureContent): Added. Iterate through all the
policies and report violations with respect to policies that have directive block-all-mixed-content.
(WebCore::ContentSecurityPolicy::didReceiveHeader): Move logic to set eval() error message from here...
(WebCore::ContentSecurityPolicy::applyPolicyToScriptExecutionContext): ...to here so that we only perform
it once we are ready to apply the CSP policy to the script execution context. Additionally, enable
strict mixed content checking on the script execution context if applicable.
(WebCore::ContentSecurityPolicy::reportViolation): Added overrides that take a string and a directive list
object (ContentSecurityPolicyDirectiveList) for the effective violated directive and its associated directive
list, respectively. We make use of these overrides so as to support reporting block-all-mixed-content
violations, which are not implemented using a ContentSecurityPolicyDirective object as it seemed sufficient
to implement it as a boolean on ContentSecurityPolicyDirectiveList.

  • page/csp/ContentSecurityPolicy.h:
  • page/csp/ContentSecurityPolicyDirectiveList.cpp:

(WebCore::ContentSecurityPolicyDirectiveList::setBlockAllMixedContentEnabled): Added.
(WebCore::ContentSecurityPolicyDirectiveList::addDirective): Parse the directive block-all-mixed-content.

  • page/csp/ContentSecurityPolicyDirectiveList.h:

(WebCore::ContentSecurityPolicyDirectiveList::hasBlockAllMixedContentDirective): Added.

  • page/csp/ContentSecurityPolicyDirectiveNames.cpp:
  • page/csp/ContentSecurityPolicyDirectiveNames.h: Add constant for "block-all-mixed-content".

LayoutTests:

Add tests to ensure that we do not regress strict mixed content checking.

  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/data-url-iframe-in-main-frame-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/data-url-iframe-in-main-frame.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/duplicate-directive-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/duplicate-directive.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-main-frame-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-main-frame.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-blob-url-iframe-in-iframe-expected.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-blob-url-iframe-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-enforced-and-report-policies.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-inherited-policy-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe-with-inherited-policy.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-javascript-url-iframe-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-javascript-url-iframe-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-main-frame-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-main-frame.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-xslt-document-in-iframe-with-inherited-policy-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-image-in-xslt-document-in-iframe-with-inherited-policy.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-main-frame-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-plugin-in-main-frame.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe-with-inherited-policy-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe-with-inherited-policy.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-main-frame-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-script-in-main-frame.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-main-frame-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-asynchronous-in-main-frame.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-main-frame-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-xhr-synchronous-in-main-frame.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/dump-securitypolicyviolation-and-notify-done.js: Added.

(logMessage):
(securityPolicyViolationToString):
(checkNotify):
(recordSecurityPolicyViolation):
(window.onload):

  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/fail.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-data-url-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-css-report-only.php: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-css.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-image-and-without-policy.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-image-in-blob-url-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-image-in-javascript-url-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-image-with-enforced-and-report-policies.php: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-image.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-plugin.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-script.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-xhr.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-secure-image-after-upgrade-redirect.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-secure-image-after-upgrade.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/red-square.png: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/transform-functions.xsl: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/secure-image-after-upgrade-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/secure-image-after-upgrade-in-iframe.html: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/secure-image-after-upgrade-redirect-in-iframe-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/secure-image-after-upgrade-redirect-in-iframe.html: Added.
  • platform/ios-simulator/TestExpectations: Skip plugin tests as plugins are not supported on iOS.
2:57 PM Changeset in webkit [209576] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Disable collectContinuously if not useConcurrentGC

Rubber stamped by Geoffrey Garen.

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

2:53 PM Changeset in webkit [209575] by andersca@apple.com
  • 8 edits in trunk/Source

Defer sending Mach messages if the queue is full
https://bugs.webkit.org/show_bug.cgi?id=165622
rdar://problem/29518036

Reviewed by Brady Eidson.

Source/WebKit2:

  • Platform/IPC/Connection.cpp:

Include MachMessage.h so the Connection destructor can do its thing.

  • Platform/IPC/Connection.h:

Add new members.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::platformInvalidate):
Null out the pending outgoing mach message.

(IPC::Connection::sendMessage):
New helper that will send a Mach message. If we time out, store the message in m_pendingOutgoingMachMessage.
When our send source will be triggered we'll try to send the message again.

(IPC::Connection::platformCanSendOutgoingMessages):
We can only send messages if we don't have a pending outgoing message.

(IPC::Connection::sendOutgoingMessage):
Call the newly added sendMessage function.

(IPC::Connection::initializeSendSource):
Add the DISPATCH_MACH_SEND_POSSIBLE mask (and DISPATCH_MACH_SEND_DEAD which was previously implicit).
In our event handler, check for DISPATCH_MACH_SEND_POSSIBLE and try to send the pending outgoing message again.

  • Platform/IPC/mac/MachMessage.cpp:

(IPC::MachMessage::create):
Rename length to size.

(IPC::MachMessage::MachMessage):
Initialize m_shouldFreeDescriptors.

(IPC::MachMessage::~MachMessage):
Call mach_msg_destroy, which will free the descriptors.

(IPC::MachMessage::leakDescriptors):
Set m_shouldFreeDescriptors to false.

  • Platform/IPC/mac/MachMessage.h:

(IPC::MachMessage::size):
(IPC::MachMessage::length): Deleted.

Source/WTF:

Add new SPI.

  • wtf/spi/darwin/XPCSPI.h:
2:52 PM Changeset in webkit [209574] by weinig@apple.com
  • 17 edits
    1 add
    1 delete in trunk

[WebIDL] Remove custom bindings for Geolocation
https://bugs.webkit.org/show_bug.cgi?id=165625

Reviewed by Alex Christensen.

Source/WebCore:

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

Add/remove files.

  • Modules/geolocation/GeoNotifier.cpp:

(WebCore::GeoNotifier::GeoNotifier):
(WebCore::GeoNotifier::hasZeroTimeout):
(WebCore::GeoNotifier::startTimerIfNeeded):

  • Modules/geolocation/GeoNotifier.h:

(WebCore::GeoNotifier::create):
(WebCore::GeoNotifier::options):
Update to store PositionOptions as a value, and pass the PositionCallback
as a Ref, rather than a RefPtr, since it is not optional.

  • Modules/geolocation/Geolocation.cpp:

(WebCore::createGeoposition):
Use auto, to get the good type for Coordinates (Ref).

(WebCore::Geolocation::getCurrentPosition):
(WebCore::Geolocation::watchPosition):
(WebCore::Geolocation::haveSuitableCachedPosition):
(WebCore::Geolocation::startUpdating):

  • Modules/geolocation/Geolocation.h:

Update to pass PositionOptions itself now that it is a plain struct.

  • Modules/geolocation/Geolocation.idl:

Remove [Custom] extended attribute and add FIXME about nullable annotation.

  • Modules/geolocation/Geoposition.h:

Pass/store Coordinates as a Ref.

  • Modules/geolocation/PositionOptions.h:

Convert to be a simple struct.

  • Modules/geolocation/PositionOptions.idl:

Added.

  • bindings/js/JSGeolocationCustom.cpp:

Removed.

LayoutTests:

  • fast/dom/Geolocation/argument-types-expected.txt:
  • fast/dom/Geolocation/not-enough-arguments-expected.txt:
  • fast/dom/Geolocation/script-tests/argument-types.js:

Update tests for improved error messages / adherence to WebIDL.

2:50 PM Changeset in webkit [209573] by cpugh@apple.com
  • 2 edits in trunk/Source/WebKit2

[iOS] WKWebView should not allow app links to be opened on back or forward navigation
https://bugs.webkit.org/show_bug.cgi?id=165502

Reviewed by Dan Bernstein.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationAction): Add a condition to shouldOpenAppLinks
(which we use when creating a NavigationAction) that the navigationActionData is not a navigation
of type BackForward. This way, we don't open app links when a navigation is done via back or
forward.

2:42 PM Changeset in webkit [209572] by achristensen@apple.com
  • 4 edits in trunk

REGRESSION (URL parser): Relative URLs aren’t resolved correctly when the base URL is an applewebdata: URL
https://bugs.webkit.org/show_bug.cgi?id=165621

Reviewed by Dan Bernstein.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):
URLs with nonspecial schemes and no slash after the host get no slash as the path to maintain compatibility with all browsers.
This was proposed to the URL spec in https://github.com/whatwg/url/issues/148
When such as URL is used as a base URL with a relative path, in order to maintain compatibility with URL::parse we need to prepend
a slash to the path. For completeness I added tests with a relative path, a relative query, a relative fragment, and a relative empty string,
and because the fate of the spec is unclear in this case, I decided to maintain compatibility with URL::parse in all these cases.

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

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

Unreviewed, fix cloop build.

  • runtime/JSObject.h:
2:14 PM Changeset in webkit [209570] by fpizlo@apple.com
  • 108 edits
    10 adds in trunk

PerformanceTests:
Concurrent GC should be stable enough to land enabled
https://bugs.webkit.org/show_bug.cgi?id=164990

Reviewed by Geoffrey Garen.

Made CDjs more configurable and refined the "large.js" configuration. I was using that one and
the new "long.js" configuration to tune concurrent eden GCs.

Added a new way of running Splay in browser, which using chartjs to plot the execution times of
2000 iterations. This includes the minified chartjs.

  • JetStream/Octane2/splay-detail.html: Added.
  • JetStream/cdjs/benchmark.js:

(benchmarkImpl):
(benchmark):

  • JetStream/cdjs/long.js: Added.

Source/JavaScriptCore:
Concurrent GC should be stable enough to land enabled on X86_64
https://bugs.webkit.org/show_bug.cgi?id=164990

Reviewed by Geoffrey Garen.

This fixes a ton of performance and correctness bugs revealed by getting the concurrent GC to
be stable enough to land enabled.

I had to redo the JSObject::visitChildren concurrency protocol again. This time I think it's
even more correct than ever!

This is an enormous win on JetStream/splay-latency and Octane/SplayLatency. It looks to be
mostly neutral on everything else, though Speedometer is showing statistically weak signs of a
slight regression.

  • API/JSAPIWrapperObject.mm: Added locking.

(JSC::JSAPIWrapperObject::visitChildren):

  • API/JSCallbackObject.h: Added locking.

(JSC::JSCallbackObjectData::visitChildren):
(JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
(JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty):
(JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren):

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

(JSC::CodeBlock::UnconditionalFinalizer::finalizeUnconditionally): This had a TOCTOU race on shouldJettisonDueToOldAge.
(JSC::EvalCodeCache::visitAggregate): Moved to EvalCodeCache.cpp.

  • bytecode/DirectEvalCodeCache.cpp: Added. Outlined some functions and made them use locks.

(JSC::DirectEvalCodeCache::setSlow):
(JSC::DirectEvalCodeCache::clear):
(JSC::DirectEvalCodeCache::visitAggregate):

  • bytecode/DirectEvalCodeCache.h:

(JSC::DirectEvalCodeCache::set):
(JSC::DirectEvalCodeCache::clear): Deleted.

  • bytecode/UnlinkedCodeBlock.cpp: Added locking.

(JSC::UnlinkedCodeBlock::visitChildren):
(JSC::UnlinkedCodeBlock::setInstructions):
(JSC::UnlinkedCodeBlock::shrinkToFit):

  • bytecode/UnlinkedCodeBlock.h: Added locking.

(JSC::UnlinkedCodeBlock::addRegExp):
(JSC::UnlinkedCodeBlock::addConstant):
(JSC::UnlinkedCodeBlock::addFunctionDecl):
(JSC::UnlinkedCodeBlock::addFunctionExpr):
(JSC::UnlinkedCodeBlock::createRareDataIfNecessary):
(JSC::UnlinkedCodeBlock::shrinkToFit): Deleted.

  • debugger/Debugger.cpp: Use the right delete API.

(JSC::Debugger::recompileAllJSFunctions):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): Fix a pre-existing bug in ToFunction constant folding.

  • dfg/DFGClobberize.h: Add support for nuking.

(JSC::DFG::clobberize):

  • dfg/DFGClobbersExitState.cpp: Add support for nuking.

(JSC::DFG::clobbersExitState):

  • dfg/DFGFixupPhase.cpp: Add support for nuking.

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::indexForChecks):
(JSC::DFG::FixupPhase::originForCheck):
(JSC::DFG::FixupPhase::speculateForBarrier):
(JSC::DFG::FixupPhase::insertCheck):
(JSC::DFG::FixupPhase::fixupChecksInBlock):

  • dfg/DFGSpeculativeJIT.cpp: Add support for nuking.

(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):

  • ftl/FTLLowerDFGToB3.cpp: Add support for nuking.

(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::mutatorFence):
(JSC::FTL::DFG::LowerDFGToB3::nukeStructureAndSetButterfly):
(JSC::FTL::DFG::LowerDFGToB3::setButterfly): Deleted.

  • heap/CodeBlockSet.cpp: We need to be more careful about the CodeBlockSet workflow during GC, since we will allocate CodeBlocks in eden while collecting.

(JSC::CodeBlockSet::clearMarksForFullCollection):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):

  • heap/Heap.cpp: Added code to measure max pauses. Added a better collectContinuously mode.

(JSC::Heap::lastChanceToFinalize): Stop the collectContinuously thread.
(JSC::Heap::harvestWeakReferences): Inline SlotVisitor::harvestWeakReferences.
(JSC::Heap::finalizeUnconditionalFinalizers): Inline SlotVisitor::finalizeUnconditionalReferences.
(JSC::Heap::markToFixpoint): We need to do some MarkedSpace stuff before every conservative scan, rather than just at the start of marking, so we now call prepareForConservativeScan() before each conservative scan. Also call a less-parallel version of drainInParallel when the mutator is running.
(JSC::Heap::collectInThread): Inline Heap::prepareForAllocation().
(JSC::Heap::stopIfNecessarySlow): We need to be more careful about ensuring that we run finalization before and after stopping. Also, we should sanitize stack when stopping the world.
(JSC::Heap::acquireAccessSlow): Add some optional debug prints.
(JSC::Heap::handleNeedFinalize): Assert that we are running this when the world is not stopped.
(JSC::Heap::finalize): Remove the old collectContinuously code.
(JSC::Heap::requestCollection): We don't need to sanitize stack here anymore.
(JSC::Heap::notifyIsSafeToCollect): Start the collectContinuously thread. It will request collection 1 KHz.
(JSC::Heap::prepareForAllocation): Deleted.
(JSC::Heap::preventCollection): Prevent any new concurrent GCs from being initiated.
(JSC::Heap::allowCollection):
(JSC::Heap::forEachSlotVisitor): Allows us to safely iterate slot visitors.

  • heap/Heap.h:
  • heap/HeapInlines.h:

(JSC::Heap::writeBarrier): If the 'to' cell is not NewWhite then it could be AnthraciteOrBlack. During a full collection, objects may be AnthraciteOrBlack from a previous GC. Turns out, we don't benefit from this optimization so we can just kill it.

  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::buildSnapshot): This needs to use PreventCollectionScope to ensure snapshot soundness.

  • heap/ListableHandler.h:

(JSC::ListableHandler::isOnList): Useful helper.

  • heap/LockDuringMarking.h:

(JSC::lockDuringMarking): It's a locker that only locks while we're marking.

  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::addBlock): Hold the bitvector lock while resizing.

  • heap/MarkedBlock.cpp: Hold the bitvector lock while accessing the bitvectors while the mutator is running.
  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::prepareForConservativeScan): We used to do this in prepareForMarking, but we need to do it before each conservative scan not just before marking.
(JSC::MarkedSpace::prepareForMarking): Remove the logic moved to prepareForConservativeScan.

  • heap/MarkedSpace.h:
  • heap/PreventCollectionScope.h: Added.
  • heap/SlotVisitor.cpp: Refactored drainFromShared so that we can write a similar function called drainInParallelPassively.

(JSC::SlotVisitor::updateMutatorIsStopped): Update whether we can use "fast" scanning.
(JSC::SlotVisitor::mutatorIsStoppedIsUpToDate):
(JSC::SlotVisitor::didReachTermination):
(JSC::SlotVisitor::hasWork):
(JSC::SlotVisitor::drain): This now uses the rightToRun lock to allow the main GC thread to safepoint the workers.
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::drainInParallelPassively): This runs marking with one fewer threads than normal. It's useful for when we have resumed the mutator, since then the mutator has a better chance of getting on a core.
(JSC::SlotVisitor::addWeakReferenceHarvester):
(JSC::SlotVisitor::addUnconditionalFinalizer):
(JSC::SlotVisitor::harvestWeakReferences): Deleted.
(JSC::SlotVisitor::finalizeUnconditionalFinalizers): Deleted.

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

(JSC::SlotVisitor::addWeakReferenceHarvester): Deleted.
(JSC::SlotVisitor::addUnconditionalFinalizer): Deleted.

  • runtime/InferredType.cpp: This needed thread safety.

(JSC::InferredType::visitChildren): This needs to keep its structure finalizer alive until it runs.
(JSC::InferredType::set):
(JSC::InferredType::InferredStructureFinalizer::finalizeUnconditionally):

  • runtime/InferredType.h:
  • runtime/InferredValue.cpp: This needed thread safety.

(JSC::InferredValue::visitChildren):
(JSC::InferredValue::ValueCleanup::finalizeUnconditionally):

  • runtime/JSArray.cpp:

(JSC::JSArray::unshiftCountSlowCase): Update to use new butterfly API.
(JSC::JSArray::unshiftCountWithArrayStorage): Update to use new butterfly API.

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::visitChildren): Thread safety.

  • runtime/JSCell.h:

(JSC::JSCell::setStructureIDDirectly): This is used for nuking the structure.
(JSC::JSCell::InternalLocker::InternalLocker): Deleted. The cell is now the lock.
(JSC::JSCell::InternalLocker::~InternalLocker): Deleted. The cell is now the lock.

  • runtime/JSCellInlines.h:

(JSC::JSCell::structure): Clean this up.
(JSC::JSCell::lock): The cell is now the lock.
(JSC::JSCell::tryLock):
(JSC::JSCell::unlock):
(JSC::JSCell::isLocked):
(JSC::JSCell::lockInternalLock): Deleted.
(JSC::JSCell::unlockInternalLock): Deleted.

  • runtime/JSFunction.cpp:

(JSC::JSFunction::visitChildren): Thread safety.

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::visitChildren): Thread safety.
(JSC::JSGenericTypedArrayView<Adaptor>::slowDownAndWasteMemory): Thread safety.

  • runtime/JSObject.cpp:

(JSC::JSObject::markAuxiliaryAndVisitOutOfLineProperties): Factor out this "easy" step of butterfly visiting.
(JSC::JSObject::visitButterfly): Make this achieve 100% precision about structure-butterfly relationships. This relies on the mutator "nuking" the structure prior to "locked" structure-butterfly transitions.
(JSC::JSObject::visitChildren): Use the new, nicer API.
(JSC::JSFinalObject::visitChildren): Use the new, nicer API.
(JSC::JSObject::enterDictionaryIndexingModeWhenArrayStorageAlreadyExists): Use the new butterfly API.
(JSC::JSObject::createInitialUndecided): Use the new butterfly API.
(JSC::JSObject::createInitialInt32): Use the new butterfly API.
(JSC::JSObject::createInitialDouble): Use the new butterfly API.
(JSC::JSObject::createInitialContiguous): Use the new butterfly API.
(JSC::JSObject::createArrayStorage): Use the new butterfly API.
(JSC::JSObject::convertUndecidedToContiguous): Use the new butterfly API.
(JSC::JSObject::convertUndecidedToArrayStorage): Use the new butterfly API.
(JSC::JSObject::convertInt32ToArrayStorage): Use the new butterfly API.
(JSC::JSObject::convertDoubleToContiguous): Use the new butterfly API.
(JSC::JSObject::convertDoubleToArrayStorage): Use the new butterfly API.
(JSC::JSObject::convertContiguousToArrayStorage): Use the new butterfly API.
(JSC::JSObject::increaseVectorLength): Use the new butterfly API.
(JSC::JSObject::shiftButterflyAfterFlattening): Use the new butterfly API.

  • runtime/JSObject.h:

(JSC::JSObject::setButterfly): This now does all of the fences. Only use this when you are not also transitioning the structure or the structure's lastOffset.
(JSC::JSObject::nukeStructureAndSetButterfly): Use this when doing locked structure-butterfly transitions.

  • runtime/JSObjectInlines.h:

(JSC::JSObject::putDirectWithoutTransition): Use the newly factored out API.
(JSC::JSObject::prepareToPutDirectWithoutTransition): Factor this out!
(JSC::JSObject::putDirectInternal): Use the newly factored out API.

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::finishCreation): Locks!
(JSC::JSPropertyNameEnumerator::visitChildren): Locks!

  • runtime/JSSegmentedVariableObject.cpp:

(JSC::JSSegmentedVariableObject::visitChildren): Locks!

  • runtime/JSString.cpp:

(JSC::JSString::visitChildren): Thread safety.

  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::visitChildren): Thread safety.

  • runtime/Options.cpp: For now we disable concurrent GC on not-X86_64.

(JSC::recomputeDependentOptions):

  • runtime/Options.h: Change the default max GC parallelism to 8. I don't know why it was still 7.
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::stackTracesAsJSON): This needs to defer GC before grabbing its lock.

  • runtime/SparseArrayValueMap.cpp: This needed thread safety.

(JSC::SparseArrayValueMap::add):
(JSC::SparseArrayValueMap::remove):
(JSC::SparseArrayValueMap::visitChildren):

  • runtime/SparseArrayValueMap.h:
  • runtime/Structure.cpp: This had a race between addNewPropertyTransition and visitChildren.

(JSC::Structure::Structure):
(JSC::Structure::materializePropertyTable):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::flattenDictionaryStructure):
(JSC::Structure::add): Help out with nuking support - the m_offset needs to play along.
(JSC::Structure::visitChildren):

  • runtime/Structure.h: Make some useful things public - like the notion of a lastOffset.
  • runtime/StructureChain.cpp:

(JSC::StructureChain::visitChildren): Thread safety!

  • runtime/StructureChain.h: Thread safety!
  • runtime/StructureIDTable.cpp:

(JSC::StructureIDTable::allocateID): Ensure that we don't get nuked IDs.

  • runtime/StructureIDTable.h: Add the notion of a nuked ID! It's a bit that the runtime never sees except during specific shady actions like locked structure-butterfly transitions. "Nuking" tells the GC to steer clear and rescan once we fire the barrier.

(JSC::nukedStructureIDBit):
(JSC::nuke):
(JSC::isNuked):
(JSC::decontaminate):

  • runtime/StructureInlines.h:

(JSC::Structure::hasIndexingHeader): Better API.
(JSC::Structure::add):

  • runtime/VM.cpp: Better GC interaction.

(JSC::VM::ensureWatchdog):
(JSC::VM::deleteAllLinkedCode):
(JSC::VM::deleteAllCode):

  • runtime/VM.h:

(JSC::VM::getStructure): Why wasn't this always an API!

  • runtime/WebAssemblyExecutable.cpp:

(JSC::WebAssemblyExecutable::visitChildren): Thread safety.

Source/WebCore:
Concurrent GC should be stable enough to land enabled on X86_64
https://bugs.webkit.org/show_bug.cgi?id=164990

Reviewed by Geoffrey Garen.

Made WebCore down with concurrent marking by adding some locking and adapting to some new API.

This has new test modes in run-sjc-stress-tests. Also, the way that LayoutTests run is already
a fantastic GC test.

  • ForwardingHeaders/heap/DeleteAllCodeEffort.h: Added.
  • ForwardingHeaders/heap/LockDuringMarking.h: Added.
  • bindings/js/GCController.cpp:

(WebCore::GCController::deleteAllCode):
(WebCore::GCController::deleteAllLinkedCode):

  • bindings/js/GCController.h:
  • bindings/js/JSDOMBinding.cpp:

(WebCore::getCachedDOMStructure):
(WebCore::cacheDOMStructure):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::addBuiltinGlobals):
(WebCore::JSDOMGlobalObject::visitChildren):

  • bindings/js/JSDOMGlobalObject.h:

(WebCore::getDOMConstructor):

  • bindings/js/JSDOMPromise.cpp:

(WebCore::DeferredPromise::DeferredPromise):
(WebCore::DeferredPromise::clear):

  • bindings/js/JSXPathResultCustom.cpp:

(WebCore::JSXPathResult::visitAdditionalChildren):

  • dom/EventListenerMap.cpp:

(WebCore::EventListenerMap::clear):
(WebCore::EventListenerMap::replace):
(WebCore::EventListenerMap::add):
(WebCore::EventListenerMap::remove):
(WebCore::EventListenerMap::find):
(WebCore::EventListenerMap::removeFirstEventListenerCreatedFromMarkup):
(WebCore::EventListenerMap::copyEventListenersNotCreatedFromMarkupToTarget):
(WebCore::EventListenerIterator::EventListenerIterator):

  • dom/EventListenerMap.h:

(WebCore::EventListenerMap::lock):

  • dom/EventTarget.cpp:

(WebCore::EventTarget::visitJSEventListeners):

  • dom/EventTarget.h:

(WebCore::EventTarget::visitJSEventListeners): Deleted.

  • dom/Node.cpp:

(WebCore::Node::eventTargetDataConcurrently):
(WebCore::Node::ensureEventTargetData):
(WebCore::Node::clearEventTargetData):

  • dom/Node.h:
  • page/MemoryRelease.cpp:

(WebCore::releaseCriticalMemory):

  • page/cocoa/MemoryReleaseCocoa.mm:

(WebCore::jettisonExpensiveObjectsOnTopLevelNavigation):
(WebCore::registerMemoryReleaseNotifyCallbacks):

Source/WTF:
Concurrent GC should be stable enough to land enabled on X86_64
https://bugs.webkit.org/show_bug.cgi?id=164990

Reviewed by Geoffrey Garen.

Adds the ability to say:

auto locker = holdLock(any type of lock)

Instead of having to say:

Locker<LockType> locker(locks of type LockType)

I think that we should use "auto locker = holdLock(lock)" as the default way that we acquire
locks unless we need to use a special locker type.

This also adds the ability to safepoint a lock. Safepointing a lock is basically a super fast
way of unlocking it fairly and then immediately relocking it - i.e. letting anyone who is
waiting to run without losing steam of there is noone waiting.

  • wtf/Lock.cpp:

(WTF::LockBase::safepointSlow):

  • wtf/Lock.h:

(WTF::LockBase::safepoint):

  • wtf/LockAlgorithm.h:

(WTF::LockAlgorithm::safepointFast):
(WTF::LockAlgorithm::safepoint):
(WTF::LockAlgorithm::safepointSlow):

  • wtf/Locker.h:

(WTF::AbstractLocker::AbstractLocker):
(WTF::Locker::tryLock):
(WTF::Locker::operator bool):
(WTF::Locker::Locker):
(WTF::Locker::operator=):
(WTF::holdLock):
(WTF::tryHoldLock):

Tools:
Concurrent GC should be stable enough to land enabled
https://bugs.webkit.org/show_bug.cgi?id=164990

Reviewed by Geoffrey Garen.

Add a new mode that runs GC continuously. Also made eager modes run GC continuously.

It's clear that this works just fine in release, but I'm still trying to figure out if it's
safe for debug. It might be too slow for debug.

  • Scripts/run-jsc-stress-tests:
1:59 PM Changeset in webkit [209569] by hyatt@apple.com
  • 2 edits in trunk/LayoutTests

[CSS Parser] Unskip passing flexbox tests
https://bugs.webkit.org/show_bug.cgi?id=165626

Reviewed by Dean Jackson.

1:56 PM Changeset in webkit [209568] by fpizlo@apple.com
  • 10 edits in trunk/Source

Enable SharedArrayBuffer, remove the flag
https://bugs.webkit.org/show_bug.cgi?id=165614

Rubber stamped by Geoffrey Garen.

Source/JavaScriptCore:

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/RuntimeFlags.h:

Source/WebKit/mac:

  • WebView/WebPreferencesPrivate.h:

Source/WebKit/win:

  • Interfaces/IWebPreferencesPrivate.idl:

Source/WebKit2:

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
1:54 PM Changeset in webkit [209567] by hyatt@apple.com
  • 2 edits in trunk/LayoutTests

@supports fails combinations of conjuctions, disjunctions, and negations of simple conditions
https://bugs.webkit.org/show_bug.cgi?id=137566
<rdar://problem/18600949>

Reviewed by Dean Jackson.

Test passes now with new @supports parser.

1:49 PM Changeset in webkit [209566] by hyatt@apple.com
  • 4 edits in trunk

[CSS Parser] Add strict checking for right parens to selector functions like :matches, :not etc.
https://bugs.webkit.org/show_bug.cgi?id=165624

Reviewed by Dean Jackson.

Source/WebCore:

Unskipped fast/selectors/invalid-functional-pseudo-class.html.

  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumePseudo):
Bail if we don't actually consume a right parenthesis.

LayoutTests:

1:46 PM Changeset in webkit [209565] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Exit fullscreen on escape key down, not up.
https://bugs.webkit.org/show_bug.cgi?id=165618
rdar://problem/29581688

This problem was introduced by https://bugs.webkit.org/show_bug.cgi?id=165416
The fix to only exit fullscreen on key down, not key up.

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-12-08
Reviewed by Jer Noble.

  • page/EventHandler.cpp:

(WebCore::EventHandler::keyEvent):

1:42 PM Changeset in webkit [209564] by jiewen_tan@apple.com
  • 8 edits in trunk/LayoutTests

[WebCrypto] Replace webkitSubtle with subtle for all crypto/workers/subtle/ tests
https://bugs.webkit.org/show_bug.cgi?id=165540

Reviewed by Brent Fulgham.

  • crypto/workers/subtle/aes-postMessage-worker.html:
  • crypto/workers/subtle/hmac-postMessage-worker.html:
  • crypto/workers/subtle/hrsa-postMessage-worker-expected.txt:
  • crypto/workers/subtle/hrsa-postMessage-worker.html:
  • crypto/workers/subtle/multiple-postMessage-worker.html:
  • crypto/workers/subtle/resources/hrsa-postMessage-worker.js:
  • crypto/workers/subtle/rsa-postMessage-worker.html:
1:42 PM Changeset in webkit [209563] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Rebaseline some css tests for ios-simulator.

Unreviewed test gardening.

  • platform/ios-simulator/fast/css/font_property_normal-expected.txt:
  • platform/ios-simulator/fast/css/image-set-unprefixed-expected.txt:
1:25 PM Changeset in webkit [209562] by hyatt@apple.com
  • 10 edits in trunk/LayoutTests

[CSS Parser] Unskip grid tests
https://bugs.webkit.org/show_bug.cgi?id=165623

Reviewed by Zalan Bujtas.

  • TestExpectations:
  • fast/css-grid-layout/grid-auto-flow-get-set-expected.txt:
  • fast/css-grid-layout/grid-auto-flow-get-set.html:
  • fast/css-grid-layout/grid-columns-rows-get-set-expected.txt:
  • fast/css-grid-layout/grid-template-shorthand-get-set-expected.txt:
  • fast/css-grid-layout/grid-template-shorthand-get-set.html:
  • fast/css-grid-layout/non-grid-columns-rows-get-set-expected.txt:
  • fast/css-grid-layout/resources/grid-columns-rows-get-set.js:
  • fast/css-grid-layout/resources/non-grid-columns-rows-get-set.js:
1:25 PM Changeset in webkit [209561] by Alan Bujtas
  • 1 edit
    2 adds in trunk/LayoutTests

Overlapping text at AppleSeed forum's footer.
https://bugs.webkit.org/show_bug.cgi?id=165613

Reviewed by Simon Fraser.

This is a test case for r207219.

  • fast/text/float-with-sibling-text-overlaps-when-text-decoration-changes-expected.html: Added.
  • fast/text/float-with-sibling-text-overlaps-when-text-decoration-changes.html: Added.
1:09 PM Changeset in webkit [209560] by jfbastien@apple.com
  • 36 edits
    3 copies
    1 add in trunk

WebAssembly JS API: wire up Instance imports
https://bugs.webkit.org/show_bug.cgi?id=165118

Reviewed by Saam Barati.

JSTests:

  • wasm/js-api/test_Instance.js: add the test, disabled for now

Source/JavaScriptCore:

Change a bunch of the WebAssembly object model, and pipe the
necessary changes to be able to call JS imports from
WebAssembly. This will make it easier to call_indirect, and
unblock many other missing features.

As a follow-up I need to teach JSC::linkFor to live without a
CodeBlock: wasm doesn't have one and the IC patching is sad. We'll
switch on the callee (or its type?) and then use that as the owner
(because the callee is alive if the instance is alive, ditto
module, and module owns the CallLinkInfo).

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • interpreter/CallFrame.h:

(JSC::ExecState::callee): give access to the callee as a JSCell

  • jit/RegisterSet.cpp: dead code from previous WebAssembly implementation
  • jsc.cpp:

(callWasmFunction):
(functionTestWasmModuleFunctions):

  • runtime/JSCellInlines.h:

(JSC::ExecState::vm): check callee instead of jsCallee: wasm only has a JSCell and not a JSObject

  • runtime/VM.cpp:

(JSC::VM::VM): store the "top" WebAssembly.Instance on entry to WebAssembly (and restore the previous one on exit)

  • runtime/VM.h:
  • testWasm.cpp:

(runWasmTests):

  • wasm/JSWebAssembly.h:
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator): pass unlinked calls around to shorten their lifetime: they're ony needed until the Plan is done
(JSC::Wasm::B3IRGenerator::addCall):
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::parseAndCompile): also pass in the function index space, so that imports can be signature-checked along with internal functions

  • wasm/WasmB3IRGenerator.h:
  • wasm/WasmBinding.cpp: Added.

(JSC::Wasm::importStubGenerator): stubs from wasm to JS

  • wasm/WasmBinding.h: Copied from Source/JavaScriptCore/wasm/WasmValidate.h.
  • wasm/WasmCallingConvention.h:

(JSC::Wasm::CallingConvention::setupFrameInPrologue):

  • wasm/WasmFormat.h: fix the object model

(JSC::Wasm::CallableFunction::CallableFunction):

  • wasm/WasmFunctionParser.h: simplify some of the failure condition checks

(JSC::Wasm::FunctionParser<Context>::FunctionParser): need function index space, not just internal functions
(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/WasmModuleParser.cpp: early-create some of the structures which will be needed later

(JSC::Wasm::ModuleParser::parseImport):
(JSC::Wasm::ModuleParser::parseFunction):
(JSC::Wasm::ModuleParser::parseMemory):
(JSC::Wasm::ModuleParser::parseExport):
(JSC::Wasm::ModuleParser::parseCode):

  • wasm/WasmModuleParser.h:

(JSC::Wasm::ModuleParser::functionIndexSpace):
(JSC::Wasm::ModuleParser::functionLocations):

  • wasm/WasmParser.h:

(JSC::Wasm::Parser::consumeUTF8String):

  • wasm/WasmPlan.cpp: pass around the wasm objects at the right time, reducing their lifetime and making it easier to pass them around when needed

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

  • wasm/WasmPlan.h:

(JSC::Wasm::Plan::exports):
(JSC::Wasm::Plan::internalFunctionCount):
(JSC::Wasm::Plan::jsToWasmEntryPointForFunction):
(JSC::Wasm::Plan::takeModuleInformation):
(JSC::Wasm::Plan::takeCallLinkInfos):
(JSC::Wasm::Plan::takeWasmToJSStubs):
(JSC::Wasm::Plan::takeFunctionIndexSpace):

  • wasm/WasmValidate.cpp: check function index space instead of only internal functions

(JSC::Wasm::Validate::addCall):
(JSC::Wasm::validateFunction):

  • wasm/WasmValidate.h:
  • wasm/js/JSWebAssemblyCallee.cpp:

(JSC::JSWebAssemblyCallee::finishCreation):

  • wasm/js/JSWebAssemblyCallee.h:

(JSC::JSWebAssemblyCallee::create):
(JSC::JSWebAssemblyCallee::jsToWasmEntryPoint):

  • wasm/js/JSWebAssemblyInstance.cpp:

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

  • wasm/js/JSWebAssemblyInstance.h: hold the import functions off the end of the Instance

(JSC::JSWebAssemblyInstance::importFunction):
(JSC::JSWebAssemblyInstance::importFunctions):
(JSC::JSWebAssemblyInstance::setImportFunction):
(JSC::JSWebAssemblyInstance::offsetOfImportFunctions):
(JSC::JSWebAssemblyInstance::offsetOfImportFunction):
(JSC::JSWebAssemblyInstance::allocationSize):

  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::create):
(JSC::JSWebAssemblyModule::JSWebAssemblyModule):
(JSC::JSWebAssemblyModule::visitChildren):

  • wasm/js/JSWebAssemblyModule.h: hold the link call info, the import function stubs, and the function index space

(JSC::JSWebAssemblyModule::signatureForFunctionIndexSpace):
(JSC::JSWebAssemblyModule::importCount):
(JSC::JSWebAssemblyModule::calleeFromFunctionIndexSpace):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::callWebAssemblyFunction): set top Instance on VM

  • wasm/js/WebAssemblyFunction.h:

(JSC::WebAssemblyFunction::instance):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance): handle function imports

  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::constructJSWebAssemblyModule): generate the stubs for import functions

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

  • wasm/js/WebAssemblyToJSCallee.cpp: Copied from Source/JavaScriptCore/wasm/js/JSWebAssemblyCallee.cpp.

(JSC::WebAssemblyToJSCallee::create): dummy JSCell singleton which lives on the VM, and is put as the callee in the import stub's frame to identified it when unwinding
(JSC::WebAssemblyToJSCallee::createStructure):
(JSC::WebAssemblyToJSCallee::WebAssemblyToJSCallee):
(JSC::WebAssemblyToJSCallee::finishCreation):
(JSC::WebAssemblyToJSCallee::destroy):

  • wasm/js/WebAssemblyToJSCallee.h: Copied from Source/JavaScriptCore/wasm/WasmB3IRGenerator.h.
12:57 PM Changeset in webkit [209559] by hyatt@apple.com
  • 13 edits in trunk

[CSS Parser] Unskip background parsing tests
https://bugs.webkit.org/show_bug.cgi?id=165619

Reviewed by Zalan Bujtas.

Source/WebCore:

Change background-position so that the origin being set is tracked
on a per-x/y basis instead of as a single boolean. The single boolean
caused lousy computed style dumping, since we would switch into verbose
mode for both x and y, even if only one of them had a pair set for it.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::createPositionListForLayer):

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertPositionComponent):

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::FillLayer):
(WebCore::FillLayer::operator=):
(WebCore::FillLayer::fillUnsetProperties):

  • rendering/style/FillLayer.h:

(WebCore::FillLayer::isBackgroundXOriginSet):
(WebCore::FillLayer::isBackgroundYOriginSet):
(WebCore::FillLayer::setBackgroundXOrigin):
(WebCore::FillLayer::setBackgroundYOrigin):
(WebCore::FillLayer::clearXPosition):
(WebCore::FillLayer::clearYPosition):
(WebCore::FillLayer::isBackgroundOriginSet): Deleted.

LayoutTests:

  • TestExpectations:
  • fast/backgrounds/background-position-parsing-2-expected.txt:
  • fast/backgrounds/background-position-parsing-2.html:
  • fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt:
  • fast/backgrounds/background-shorthand-after-set-backgroundSize.html:
  • fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt:
  • fast/backgrounds/background-shorthand-with-backgroundSize-style.html:
12:52 PM Changeset in webkit [209558] by achristensen@apple.com
  • 30 edits
    10 adds in trunk

Add SPI for sending WebsiteSettings to WebProcess during navigation
https://bugs.webkit.org/show_bug.cgi?id=165517
<rdar://29341068>

Source/WebKit2:

We add the ability for the navigation client to send settings to the WebProcess
based on the URL of the document being navigated to. This approach adds no new IPC
messages and allows the application to decide what settings to use during navigation
instead of declaratively before navigation. Right now there is only one setting,
whether to disable content blockers, but this infrastructure can be used for more settings.

Reviewed by Anders Carlsson.

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Shared/WebsitePolicies.h: Added.

(WebKit::WebsitePolicies::encode):
(WebKit::WebsitePolicies::decode):

  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::decidePolicyForNavigationAction):
(API::NavigationClient::decidePolicyForNavigationResponse):

  • UIProcess/API/APIPolicyClient.h:

(API::PolicyClient::decidePolicyForNavigationAction):
(API::PolicyClient::decidePolicyForNewWindowAction):
(API::PolicyClient::decidePolicyForResponse):

  • UIProcess/API/APIWebsitePolicies.cpp: Added.

(API::WebsitePolicies::create):

  • UIProcess/API/APIWebsitePolicies.h: Added.
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKFramePolicyListener.cpp:

(WKFramePolicyListenerUse):
(WKFramePolicyListenerUseWithPolicies):

  • UIProcess/API/C/WKFramePolicyListener.h:
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPagePolicyClient):

  • UIProcess/API/C/WKWebsitePolicies.cpp: Added.

(WKWebsitePoliciesGetTypeID):
(WKWebsitePoliciesCreate):
(WKWebsitePoliciesSetContentBlockersEnabled):
(WKWebsitePoliciesGetContentBlockersEnabled):

  • UIProcess/API/C/WKWebsitePolicies.h: Added.
  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.h: Added.
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm: Added.

(-[_WKWebsitePolicies dealloc]):
(-[_WKWebsitePolicies init]):
(-[_WKWebsitePolicies setContentBlockersEnabled:]):
(-[_WKWebsitePolicies contentBlockersEnabled]):
(-[_WKWebsitePolicies description]):
(-[_WKWebsitePolicies _apiObject]):

  • UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h: Added.

(WebKit::wrapper):

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::reloadBrowsingContext):

  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::tryAppLink):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):

  • UIProcess/WebFormSubmissionListenerProxy.cpp:

(WebKit::WebFormSubmissionListenerProxy::continueSubmission):

  • UIProcess/WebFrameListenerProxy.cpp:

(WebKit::WebFrameListenerProxy::receivedPolicyDecision):

  • UIProcess/WebFrameListenerProxy.h:
  • UIProcess/WebFramePolicyListenerProxy.cpp:

(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):

  • UIProcess/WebFramePolicyListenerProxy.h:

(WebKit::WebFramePolicyListenerProxy::create):

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::receivedPolicyDecision):

  • UIProcess/WebFrameProxy.h:
  • UIProcess/WebInspectorProxy.cpp:

(WebKit::decidePolicyForNavigationAction):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

Tools:

Reviewed by Anders Carlsson.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/contentBlockerCheck.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm: Added.

(-[WebsitePoliciesDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[WebsitePoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[WebsitePoliciesDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

12:23 PM Changeset in webkit [209557] by Joseph Pecoraro
  • 5 edits
    2 adds in trunk

Web Inspector: Unable to delete breakpoint from worker script
https://bugs.webkit.org/show_bug.cgi?id=165578

Reviewed by Matt Baker.

Source/WebInspectorUI:

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager.prototype._removeBreakpoint):
Match setting breakpoints. If this is a "URL breakpoint", affect
all targets. If this is a "Script breakpoint", affect just the
single target containing that Script.

LayoutTests:

  • inspector/worker/debugger-shared-breakpoint-expected.txt: Added.
  • inspector/worker/debugger-shared-breakpoint.html: Added.

Ensure setting / removing a breakpoint affects all Workers that share
a resource with the same URL.

  • inspector/worker/resources/worker-debugger-pause.js:

Add an echo command that will be useful to ensure Workers are not paused.

12:14 PM Changeset in webkit [209556] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline fast/selectors/nth-last-child-bounds.html after r209548.

Unreviewed test gardening.

  • fast/selectors/nth-child-bounds-expected.txt:
12:01 PM Changeset in webkit [209555] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

pointer lock should exit when a js alert is shown
https://bugs.webkit.org/show_bug.cgi?id=165423
rdar://problem/29430803

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-12-08
Reviewed by Jer Noble.

Source/WebCore:

Test: pointer-lock/lock-lost-on-alert.html

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::alert):
(WebCore::DOMWindow::confirm):
(WebCore::DOMWindow::prompt):

LayoutTests:

  • platform/mac/TestExpectations:
  • pointer-lock/lock-lost-on-alert-expected.txt: Added.
  • pointer-lock/lock-lost-on-alert.html: Added.
11:58 AM Changeset in webkit [209554] by Antti Koivisto
  • 12 edits in trunk/Source/WebKit2

Salt network cache hashes
https://bugs.webkit.org/show_bug.cgi?id=164924

Reviewed by Alex Christensen.

To enhance privacy make cache content unidentifiable from file names alone.
This is done by generating a unique persistent salt for each cache instance.
It is used when computing hashes used in file names.

The patch also replaces plain text partition directory names with salted hashes.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::makeCacheKey):
(WebKit::NetworkCache::makeCacheKey): Deleted.

  • NetworkProcess/cache/NetworkCache.h:

Increment cache version.

  • NetworkProcess/cache/NetworkCacheBlobStorage.cpp:

(WebKit::NetworkCache::BlobStorage::BlobStorage):
(WebKit::NetworkCache::BlobStorage::add):
(WebKit::NetworkCache::BlobStorage::get):

Use salt for blob content hash.

  • NetworkProcess/cache/NetworkCacheBlobStorage.h:
  • NetworkProcess/cache/NetworkCacheData.cpp:

(WebKit::NetworkCache::computeSHA1):

For simplicity all SHA1s are now salted.

(WebKit::NetworkCache::makeSalt):
(WebKit::NetworkCache::readOrMakeSalt):

Read salt if it exists, generate and persist it otherwise.

  • NetworkProcess/cache/NetworkCacheData.h:
  • NetworkProcess/cache/NetworkCacheKey.cpp:

(WebKit::NetworkCache::Key::Key):

Remove the "No partition" string and just empty.
That was only needed to have a directory name of some sort.

(WebKit::NetworkCache::Key::computeHash):

Use salt for key hash.

(WebKit::NetworkCache::Key::computePartitionHash):

Separate hash for partition.

  • NetworkProcess/cache/NetworkCacheKey.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::makeSubresourcesKey):
(WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::saveToDiskIfReady):
(WebKit::NetworkCache::SpeculativeLoadManager::retrieveSubresourcesEntry):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::makeSaltFilePath):
(WebKit::NetworkCache::Storage::open):

Cache can't be opened if we can't read or persist a salt.

(WebKit::NetworkCache::traverseRecordsFiles):
(WebKit::NetworkCache::Storage::Storage):
(WebKit::NetworkCache::Storage::synchronize):
(WebKit::NetworkCache::Storage::recordDirectoryPathForKey):

Use the partition hash in the directory name instead of a plain text name.

(WebKit::NetworkCache::decodeRecordHeader):
(WebKit::NetworkCache::Storage::readRecord):
(WebKit::NetworkCache::Storage::encodeRecord):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::clear):

  • NetworkProcess/cache/NetworkCacheStorage.h:

(WebKit::NetworkCache::Storage::salt):

11:43 AM Changeset in webkit [209553] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Enable JSC restricted options by default in the jsc shell.
https://bugs.webkit.org/show_bug.cgi?id=165615

Reviewed by Keith Miller.

The jsc shell is only used for debugging and development testing. We should
allow it to use restricted options like JSC_useDollarVM even for release builds.

  • jsc.cpp:

(jscmain):

  • runtime/Options.cpp:

(JSC::Options::enableRestrictedOptions):
(JSC::Options::isAvailable):
(JSC::allowRestrictedOptions): Deleted.

  • runtime/Options.h:
11:18 AM Changeset in webkit [209552] by matthew_hanson@apple.com
  • 2 edits in tags/Safari-603.1.15/Source/WebCore

Merge r209532. rdar://problem/29508043

11:18 AM Changeset in webkit [209551] by matthew_hanson@apple.com
  • 4 edits in tags/Safari-603.1.15

Merge r209510. rdar://problem/29560983

11:18 AM Changeset in webkit [209550] by matthew_hanson@apple.com
  • 3 edits
    2 adds in tags/Safari-603.1.15

Merge r209484. rdar://problem/29559855

11:09 AM Changeset in webkit [209549] by weinig@apple.com
  • 28 edits
    1 add
    3 deletes in trunk

[WebIDL] WebGLContextAttributes should be a dictionary
https://bugs.webkit.org/show_bug.cgi?id=165572

Reviewed by Dean Jackson.

Source/WebCore:

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

Remove unused files.

  • bindings/js/JSHTMLCanvasElementCustom.cpp:

(WebCore::JSHTMLCanvasElement::getContext):
(WebCore::attributesFor3DContext): Deleted.
Re-work getContext to use JSDOMConvert and use the WebGLContextAttributes dictionary.

  • bindings/scripts/CodeGeneratorJS.pm:

(NativeToJSValueDOMConvertNeedsState):
(NativeToJSValueDOMConvertNeedsGlobalObject):
Add missing inclusion of dictionaries.

  • html/HTMLCanvasElement.cpp:

(WebCore::maxActivePixelMemory):
(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::is2dType):
(WebCore::HTMLCanvasElement::getContext2d):
(WebCore::shouldEnableWebGL):
(WebCore::HTMLCanvasElement::is3dType):
(WebCore::HTMLCanvasElement::getContextWebGL):

  • html/HTMLCanvasElement.h:

Refactor context creation of 2d and WebGL contexts into their own functions. Make the
WebGL one take a WebGLContextAttributes struct.

  • html/HTMLCanvasElement.idl:

No functionality change. Make IDL match the latest spec.

  • html/canvas/CanvasContextAttributes.cpp: Removed.
  • html/canvas/CanvasContextAttributes.h: Removed.

Remove unneeded base class.

  • html/canvas/WebGLContextAttributes.cpp: Removed.
  • html/canvas/WebGLContextAttributes.h:

Instead of a class, we can use a type alias of GraphicsContext3D::Attributes for
WebGLContextAttributes.

  • html/canvas/WebGLContextAttributes.idl:

Convert to a dictionary.

  • html/canvas/WebGL2RenderingContext.cpp:
  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::clearIfComposited):
(WebCore::WebGLRenderingContextBase::getContextAttributes):
(WebCore::WebGLRenderingContextBase::applyStencilTest):

  • html/canvas/WebGLRenderingContextBase.h:

Update to WebGLContextAttributes by value, since it is a simple struct now. Update getContextAttributes
to return a std::optional<WebGLContextAttributes>.

  • html/canvas/WebGLRenderingContextBase.idl:

Make getContextAttributes return a nullable WebGLContextAttributes, as per spec.

  • platform/graphics/GraphicsContext3D.h:

Sort attributes into categories, one that match WebGLContextAttributes, and the remainder.

LayoutTests:

  • fast/canvas/webgl/context-creation-attributes-expected.txt:

Update test results.

10:57 AM Changeset in webkit [209548] by hyatt@apple.com
  • 9 edits
    2 deletes in trunk/LayoutTests

[CSS Parser] Unskip/remove more tests
https://bugs.webkit.org/show_bug.cgi?id=165611

Reviewed by Zalan Bujtas.

  • TestExpectations:
  • fast/css/parse-color-int-or-percent-crash.html:
  • fast/css/string-quote-binary-expected.txt: Removed.
  • fast/css/string-quote-binary.html: Removed.
  • fast/masking/parsing-mask-expected.txt:
  • fast/masking/parsing-mask.html:
  • fast/selectors/nth-child-bounds.html:
  • fast/selectors/nth-last-child-bounds-expected.txt:
  • fast/selectors/nth-last-child-bounds.html:
  • fast/text/text-combine-crash.html:
10:37 AM Changeset in webkit [209547] by hyatt@apple.com
  • 8 edits in trunk/LayoutTests

[CSS Parser] Unskip more tests
https://bugs.webkit.org/show_bug.cgi?id=165610

Reviewed by Zalan Bujtas.

  • TestExpectations:
  • fast/css/css-selector-text-expected.txt:
  • fast/css/css-selector-text.html:
  • fast/css/css-set-selector-text-expected.txt:
  • fast/css/css-set-selector-text.html:
  • fast/css/parsing-css-nth-child-expected.txt:
  • fast/css/parsing-css-nth-child.html:
10:20 AM Changeset in webkit [209546] by Alan Bujtas
  • 4 edits
    2 adds in trunk

Do not create multicolumn context for certain type of renderers.
https://bugs.webkit.org/show_bug.cgi?id=135601
<rdar://problem/27686300>

Reviewed by David Hyatt.

Source/WebCore:

Certain type of renderers including forms should not initialize multicolumn context for
their inner (shadow) content. It just does not makes sense and is inline with what other browsers do.

Test: fast/multicol/no-multicol-for-textareas.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::willCreateColumns):
(WebCore::RenderBlockFlow::requiresColumns):

  • rendering/RenderBlockFlow.h:

LayoutTests:

  • fast/multicol/no-multicol-for-textareas-expected.txt: Added.
  • fast/multicol/no-multicol-for-textareas.html: Added.
10:19 AM Changeset in webkit [209545] by hyatt@apple.com
  • 9 edits in trunk/LayoutTests

[CSS Parser] Unskip more tests
https://bugs.webkit.org/show_bug.cgi?id=165609

Reviewed by Zalan Bujtas.

A note on the parsing-css-attribute-* tests. These tests attempted to test namespaces, but
you really can't do that easily. A @namespace rule is only valid within the scope of its
stylesheet, and the test was assuming the namespace would apply outside of the stylesheet
scope.

The old parser would not properly reject prefixes that didn't point to any valid namespace,
and so it was possible to test prefixes. The new parser rejects these invalid prefixes, so just
remove the namespace component of these two tests.

  • TestExpectations:
  • fast/css/attr-parsing-expected.txt:
  • fast/css/attr-parsing.html:
  • fast/css/invalid-cursor-property-crash.html:
  • fast/css/parsing-css-attribute-case-insensitive-value-1.html:
  • fast/css/parsing-css-attribute-case-insensitive-value-2.html:
  • fast/shadow-dom/slotted-pseudo-element-css-text-expected.txt:
10:06 AM Changeset in webkit [209544] by Chris Dumez
  • 6 edits in trunk

Unreviewed, rolling out r209489.

Likely caused large regressions on JetStream, Sunspider and
Speedometer

Reverted changeset:

"Add system trace points for JavaScript VM entry/exit"
https://bugs.webkit.org/show_bug.cgi?id=165550
http://trac.webkit.org/changeset/209489

10:02 AM Changeset in webkit [209543] by hyatt@apple.com
  • 9 edits in trunk/LayoutTests

[CSS Parser] Unskip more tests
https://bugs.webkit.org/show_bug.cgi?id=165608

Reviewed by Zalan Bujtas.

  • TestExpectations:
  • fast/css/font-property-priority-expected.txt:
  • fast/css/image-set-unprefixed.html:
  • fast/css/parsing-text-emphasis-expected.txt:
  • fast/css/parsing-text-emphasis.html:
  • fast/css/uri-token-parsing-expected.txt:
  • fast/css/uri-token-parsing.html:
  • platform/mac/fast/css/font_property_normal-expected.txt:
9:59 AM Changeset in webkit [209542] by keith_miller@apple.com
  • 4 edits
    1 add in trunk

Move LEB tests to API tests
https://bugs.webkit.org/show_bug.cgi?id=165586

Reviewed by Saam Barati.

Source/JavaScriptCore:

Delete old stuff.

  • testWasm.cpp:

(printUsageStatement):
(CommandLine::parseArguments):
(main):
(runLEBTests): Deleted.

Tools:

Move the tests from testWasm.cpp and make them functions
rather than macros.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/LEBDecoder.cpp: Added.

(TestWebKitAPI::testUnsignedLEBDecode):
(TestWebKitAPI::TEST):
(TestWebKitAPI::testInt32LEBDecode):

9:46 AM Changeset in webkit [209541] by hyatt@apple.com
  • 4 edits in trunk

[CSS Parser] REGRESSION: Values of 0 should not be allowed for -webkit-aspect-ratio
https://bugs.webkit.org/show_bug.cgi?id=165607

Reviewed by Simon Fraser.

Source/WebCore:

Unskipped fast/css/aspect-ratio-parsing-tests.html.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeWebkitAspectRatio):
Don't allow 0 as either the left or right value of the ratio.

LayoutTests:

9:45 AM Changeset in webkit [209540] by Chris Dumez
  • 5 edits
    40 adds in trunk

Support running the layout tests offline
https://bugs.webkit.org/show_bug.cgi?id=165534

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Commit W3C web-platform-tests modules so that it is now possible to run
layout tests offline.

Tools:

  • Scripts/webkitpy/common/system/autoinstall.py:

(AutoInstaller._download_to_stream):
getcode() returns None for file URLs so handle this.

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:

(WebPlatformTestServer._install_modules):
Deal with local path in the json file and resolve them into file URLs
before using AutoInstall.

9:32 AM Changeset in webkit [209539] by hyatt@apple.com
  • 8 edits in trunk/LayoutTests

[CSS Parser] Unskip more tests
https://bugs.webkit.org/show_bug.cgi?id=165605

Reviewed by Zalan Bujtas.

  • TestExpectations:
  • fast/dom/Window/getMatchedCSSRules-with-pseudo-elements-complex-expected.txt:
  • fast/dom/Window/getMatchedCSSRules-with-pseudo-elements-complex.html:
  • fast/selectors/querySelector-pseudo-element-expected.txt:
  • fast/selectors/querySelector-pseudo-element-inside-functional-pseudo-class-any-expected.txt:
  • fast/selectors/querySelector-pseudo-element-inside-functional-pseudo-class-any.html:
  • fast/selectors/querySelector-pseudo-element.html:
8:50 AM Changeset in webkit [209538] by hyatt@apple.com
  • 2 edits in trunk/LayoutTests

[CSS Parser] Unskip more tests
https://bugs.webkit.org/show_bug.cgi?id=165604

Reviewed by Zalan Bujtas.

8:47 AM Changeset in webkit [209537] by hyatt@apple.com
  • 13 edits in trunk/LayoutTests

[CSS Parser] Unskip more tests
https://bugs.webkit.org/show_bug.cgi?id=165602

Reviewed by Zalan Bujtas.

  • TestExpectations:
  • fast/css/remove-shorthand-expected.txt:
  • fast/css/transform-inline-style-expected.txt:
  • fast/regions/region-styling/parsing-region-style-rule.html:
  • fast/shapes/parsing/parsing-shape-image-threshold-expected.txt:
  • fast/shapes/parsing/parsing-shape-image-threshold.html:
  • fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt:
  • fast/shapes/shape-outside-floats/shape-outside-animation.html:
  • platform/mac/svg/webarchive/svg-cursor-subresources-expected.txt:
  • svg/webarchive/svg-cursor-subresources.svg:
  • transitions/transitions-parsing-expected.txt:
  • transitions/transitions-parsing.html:
6:09 AM Changeset in webkit [209536] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix the EFL build.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::isPlayingMediaDidChange): Add another ENABLE(MEDIA_STREAM) guard.

6:05 AM Changeset in webkit [209535] by Antti Koivisto
  • 7 edits
    2 adds in trunk

Source/WebCore:
::after and ::before don't work on :host
https://bugs.webkit.org/show_bug.cgi?id=164675
<rdar://problem/29231874>

Reviewed by Andreas Kling.

We didn't allow combining :host with any other selectors. Pseudo elements should be allowed.

Test: fast/shadow-dom/shadow-host-with-before-after.html

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::matchAuthorRules):

Allow pseudo element matching.

(WebCore::ElementRuleCollector::matchHostPseudoClassRules):

Use the normal collectMatchingRulesForList path instead of a direct call to SelectorChecker::matchHostPseudoClass.
This path supports pseudo elements.

Pass the information that we are matching :host rules with m_isMatchingHostPseudoClass bit
similarly to how this is done with slots.

(WebCore::ElementRuleCollector::ruleMatches):

  • css/ElementRuleCollector.h:
  • css/RuleSet.cpp:

Collect :host rules similarly to other rules.

(WebCore::RuleSet::addRule):

  • css/SelectorChecker.cpp:

Rename didMoveToShadowHost->mayMatchHostPseudoClass for clarity.

(WebCore::SelectorChecker::match):

Enable :host matching in the current context immediately if needed.

(WebCore::SelectorChecker::matchHostPseudoClass):

The check for illegal combinations with :host is now done in checkOne().

(WebCore::localContextForParent):
(WebCore::SelectorChecker::checkOne):

In context where :host matches nothing else can match, except pseudo elements.

  • css/SelectorChecker.h:

LayoutTests:
:after and :before don't work on :host
https://bugs.webkit.org/show_bug.cgi?id=164675
<rdar://problem/29231874>

Reviewed by Andreas Kling.

  • fast/shadow-dom/shadow-host-with-before-after-expected.html: Added.
  • fast/shadow-dom/shadow-host-with-before-after.html: Added.
5:39 AM Changeset in webkit [209534] by tpopela@redhat.com
  • 2 edits in trunk/Source/WebKit2

[GTK] Process accelerated compositing env variables only if they are really enabled
https://bugs.webkit.org/show_bug.cgi?id=165300

Don't process the WEBKIT_FORCE_COMPOSITING_MODE and
WEBKIT_DISABLE_COMPOSITING_MODE env variables if they are disabled
(eg. WEBKIT_DISABLE_COMPOSITING_MODE=0).

Reviewed by Michael Catanzaro.

  • UIProcess/gtk/WebPreferencesGtk.cpp:

(WebKit::WebPreferences::platformInitializeStore):

1:29 AM Changeset in webkit [209533] by achristensen@apple.com
  • 9 edits in trunk

Fix CMake build.

Source/WebCore:

  • PlatformMac.cmake:

Add PerformanceLoggingCocoa.mm after r209181.

Source/WebKit2:

  • CMakeLists.txt:

Add the new NetworkProcess/capture include directory to find new headers from r209498.

  • NetworkProcess/capture/NetworkCaptureEvent.cpp:

(WebKit::NetworkCapture::Response::Response):
(WebKit::NetworkCapture::Error::Error):
The String constructor was ambiguous after r209498 because URL has an operator NSString* and String has an NSString constructor.
We should get rid of operator NSString* and operator String on URL.

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

Add some ENABLE(MEDIA_STREAM) macros to fix the build without it enabled after r209512.

Tools:

  • DumpRenderTree/PlatformMac.cmake:

Remove CheckedMalloc.cpp after r209516.

1:04 AM Changeset in webkit [209532] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] Some versions of Cygwin Perl generate incorrect C++ code.
https://bugs.webkit.org/show_bug.cgi?id=165524
rdar://problem/29508043

Reviewed by Daniel Bates.

Perl strings with variables seems to be handled differently, depending on which version of
Cygwin Perl you are running. To make sure they are handled identically, specify variables
in strings as "${var}" instead of "$var".

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):

12:23 AM Changeset in webkit [209531] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix EFL build after r209526
https://bugs.webkit.org/show_bug.cgi?id=165594

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumePositiveIntegerRaw):
nullptr is being automatically converted to false everywhere but EFL.
It should be false. This function returns a bool.

12:10 AM Changeset in webkit [209530] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix iOS debug build after r209498
https://bugs.webkit.org/show_bug.cgi?id=164527

  • NetworkProcess/capture/NetworkCaptureLogging.h:

Logs were causing compile warnings/errors. Disable logs for now.

12:07 AM Changeset in webkit [209529] by rniwa@webkit.org
  • 3 edits in trunk/LayoutTests

REGRESSION (r209490): [ios-simulator] LayoutTest fast/shadow-dom/media-shadow-manipulation.html is failing
https://bugs.webkit.org/show_bug.cgi?id=165590

Unreviewed. Revert r209490 on this test and make the check conditional
since iOS and Mac implements video element differently.

In any case, these tests aren't testing anything useful after r209486.
We should consider removing them or make them use internals.shadowRoot instead in a near term.

  • fast/shadow-dom/media-shadow-manipulation-expected.txt:
  • fast/shadow-dom/media-shadow-manipulation.html:

Dec 7, 2016:

11:20 PM Changeset in webkit [209528] by jfbastien@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Cleanup WebAssembly's RETURN_IF_EXCEPTION
https://bugs.webkit.org/show_bug.cgi?id=165595

Reviewed by Filip Pizlo.

  • wasm/js/WebAssemblyCompileErrorConstructor.cpp:

(JSC::constructJSWebAssemblyCompileError):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::callWebAssemblyFunction):

  • wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:

(JSC::constructJSWebAssemblyRuntimeError):

10:47 PM Changeset in webkit [209527] by hyatt@apple.com
  • 2 edits
    2 deletes in trunk/LayoutTests

[CSS Parser] Remove font test that tests something nobody supports
https://bugs.webkit.org/show_bug.cgi?id=165596

Reviewed by Zalan Bujtas.

Remove this test that thinks "default" should be a special keyword in fonts. No
other browser treat this as special. Our old parser did, but it's just from some
reading of ancient CSS2 specs and not for any real-world reason.

  • TestExpectations:
  • fast/css/font-family-parse-keyword.html: Removed.
  • fast/css/font-family-parse-keyword-expected.html: Removed.
10:29 PM Changeset in webkit [209526] by hyatt@apple.com
  • 7 edits in trunk

REGRESSION: font shorthand parsing is broken
https://bugs.webkit.org/show_bug.cgi?id=165594

Reviewed by Zalan Bujtas.

Source/WebCore:

Unskipping fast/css/font-calculated-value.html.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeFontWeight):
The new parser did not support calc() in the font-weight property.
In order to support a positive integer, add new functions to consume
and handle positive integers without making a CSSPrimitiveValue out of
the number. These correspond to consumeNumberRaw but are limited to positive
integers.

(WebCore::CSSPropertyParser::consumeFont):
The implicit bool was incorrectly set to true when properties were
defined because releaseNonNull() cleared the variables being null
checked. Add separate booleans to avoid this.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::CalcParser::consumePositiveIntegerRaw):
(WebCore::CSSPropertyParserHelpers::consumePositiveIntegerRaw):

  • css/parser/CSSPropertyParserHelpers.h:

Add the new helpers that consume positive integers without creating
CSSPrimitiveValues out of them.

LayoutTests:

10:19 PM Changeset in webkit [209525] by commit-queue@webkit.org
  • 8 edits
    4 adds in trunk

Exit pointer lock when page goes into page cache.
https://bugs.webkit.org/show_bug.cgi?id=165425
rdar://problem/29430834

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-12-07
Reviewed by Jer Noble.

Source/WebCore:

Test: pointer-lock/lock-lost-on-navigation.html

Cancel pointer lock when page goes into page cache and add methods to Internals
so it can be tested.

  • dom/Document.cpp:

(WebCore::Document::setPageCacheState):

  • page/PointerLockController.h:
  • testing/Internals.cpp:

(WebCore::Internals::pageHasPendingPointerLock):
(WebCore::Internals::pageHasPointerLock):

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

LayoutTests:

  • platform/mac/TestExpectations:
  • pointer-lock/lock-lost-on-navigation-expected.txt: Added.
  • pointer-lock/lock-lost-on-navigation.html: Added.
  • pointer-lock/resources/lock-lost-on-navigation2.html: Added.
10:14 PM Changeset in webkit [209524] by hyatt@apple.com
  • 12 edits in trunk/LayoutTests

[CSS Parser] Unskip calc() tests
https://bugs.webkit.org/show_bug.cgi?id=165583

Reviewed by Zalan Bujtas.

  • TestExpectations:
  • fast/css/flex-shrink-calculated-value-expected.txt:
  • fast/css/flex-shrink-calculated-value.html:
  • fast/css/negative-calc-values-expected.txt:
  • fast/css/negative-calc-values.html:
  • fast/css/text-shadow-calc-value-expected.txt:
  • fast/css/text-shadow-calc-value.html:
  • fast/css/webkit-line-clamp-calculated-value-expected.txt:
  • fast/css/webkit-line-clamp-calculated-value.html:
  • fast/css/z-index-calculated-value-expected.txt:
  • fast/css/z-index-calculated-value.html:
9:51 PM Changeset in webkit [209523] by commit-queue@webkit.org
  • 5 edits
    4 adds in trunk

[Modern Media Controls] Tracks panel does not display in the right location in fullscreen and cannot be dismissed
https://bugs.webkit.org/show_bug.cgi?id=165575

Patch by Antoine Quint <Antoine Quint> on 2016-12-07
Reviewed by Dean Jackson.

Source/WebCore:

We position the tracks panel programmatically based on the current bounds of the fullscreen button in fullscreen.
This allows for the tracks panel to be shown in the right spot even after dragging the controls bar. We also use
the fullscreen media controls as the target for tracking "mousedown" events when the tracks panel is shown in a
fullscreen presentation.

Tests: media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html

media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html

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

(.media-controls.mac.fullscreen .scrubber):
(.media-controls.mac.fullscreen .tracks-panel): Deleted.

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

(MacOSFullscreenMediaControls.prototype.showTracksPanel):

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

(TracksPanel.prototype.presentInParent):
(TracksPanel.prototype.hide):
(TracksPanel.prototype.get bottomY):
(TracksPanel.prototype.set bottomY):
(TracksPanel.prototype.commitProperty):
(TracksPanel.prototype._mousedownTarget):

LayoutTests:

Add new tests to check we correctly position the tracks panel in fullscreen, including when we drag the controls bar.

  • media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls-expected.txt: Added.
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html: Added.
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen-expected.txt: Added.
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html: Added.
9:18 PM Changeset in webkit [209522] by jeremyj-wk@apple.com
  • 2 edits in trunk/LayoutTests

pointer-lock/lock-lost-on-esc-in-fullscreen.html timeout on mac-wk1
https://bugs.webkit.org/show_bug.cgi?id=165589

Unreviewed skipping test that is timing out.

  • platform/mac-wk1/TestExpectations:
9:09 PM Changeset in webkit [209521] by Ryan Haddad
  • 1 edit
    1 move in trunk/LayoutTests

Fix the filename for a newly added test expectation file.

Unreviewed test gardening.

  • tiled-drawing/scrolling/scroll-snap/scroll-snap-scrolling-jumps-to-top-expected.txt: Renamed from LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-scrolling-jumps-to-top.txt.
8:46 PM Changeset in webkit [209520] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

[Modern Media Controls] Use a small picture-in-picture button in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=165587

Patch by Antoine Quint <Antoine Quint> on 2016-12-07
Reviewed by Dean Jackson.

Source/WebCore:

Use a newer, smaller asset for picture-in-picture in fullscreen.

LayoutTests:

Rebaseline tests to account for the smaller picture-in-picture button in fullscreen.

  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
8:27 PM Changeset in webkit [209519] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

REGRESSION(r203912): Web Inspector: Navigation sidebar widths are not saved
https://bugs.webkit.org/show_bug.cgi?id=165496

Patch by Devin Rousso <Devin Rousso> on 2016-12-07
Reviewed by Matt Baker.

  • UserInterface/Views/TabBrowser.js:

(WebInspector.TabBrowser):
(WebInspector.TabBrowser.prototype._sidebarWidthDidChange):
(WebInspector.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
(WebInspector.TabBrowser.prototype._sidebarWidthDidChange): Renamed from _detailsSidebarWidthDidChange.
Add event listener for when the navigation sidebar's width is changed.

  • UserInterface/Views/TabContentView.js:

(WebInspector.TabContentView):
(WebInspector.TabContentView.prototype.get navigationSidebarPanel):
(WebInspector.TabContentView.prototype.get navigationSidebarCollapsedSetting):
(WebInspector.TabContentView.prototype.get navigationSidebarWidthSetting):
(WebInspector.TabContentView.prototype.get detailsSidebarPanels):
(WebInspector.TabContentView.prototype.get detailsSidebarCollapsedSetting):
(WebInspector.TabContentView.prototype.get detailsSidebarSelectedPanelSetting):
(WebInspector.TabContentView.prototype.get detailsSidebarWidthSetting):
Add WebInspector.Setting object for the navigation sidebar's width.

7:58 PM Changeset in webkit [209518] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/debugger/async-stack-trace.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=165584

Unreviewed test gardening.

  • platform/mac/TestExpectations:
7:52 PM Changeset in webkit [209517] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/worker/debugger-scripts.html as flaky on mac-wk2.
https://bugs.webkit.org/show_bug.cgi?id=165582

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
7:26 PM Changeset in webkit [209516] by mark.lam@apple.com
  • 3 edits
    2 deletes in trunk/Tools

DumpRenderTree should stop using CheckedMalloc.
https://bugs.webkit.org/show_bug.cgi?id=165563
<rdar://problem/28945820>

Reviewed by Geoffrey Garen.

  1. WebKitTestRunner does not have equivalent behavior to that which is implemented in CheckedMalloc.
  2. bmalloc does not honor the settings of CheckedMalloc.

The only time CheckedMalloc comes into play is when DRT uses gmalloc or system
malloc. As a result, DRT exhibits different behavior from the normal way we run
our tests. We should obsolete CheckedMalloc and make DRT behave consistently
with WKTR.

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • DumpRenderTree/mac/CheckedMalloc.cpp: Removed.
  • DumpRenderTree/mac/CheckedMalloc.h: Removed.
  • DumpRenderTree/mac/DumpRenderTree.mm:

(prepareConsistentTestingEnvironment):

7:22 PM Changeset in webkit [209515] by hyatt@apple.com
  • 10 edits in trunk/LayoutTests

[CSS Parser] Unskip media tests
https://bugs.webkit.org/show_bug.cgi?id=165580

Reviewed by Jon Lee.

The new parser will still create rules for hover/pointer queries with
unknown identifiers. Patch the tests to account for this.

  • TestExpectations:
  • fast/media/mq-any-hover-invalid-expected.txt:
  • fast/media/mq-any-hover-invalid.html:
  • fast/media/mq-any-pointer-invalid-expected.txt:
  • fast/media/mq-any-pointer-invalid.html:
  • fast/media/mq-hover-invalid-expected.txt:
  • fast/media/mq-hover-invalid.html:
  • fast/media/mq-pointer-invalid-expected.txt:
  • fast/media/mq-pointer-invalid.html:
6:53 PM Changeset in webkit [209514] by dino@apple.com
  • 26 edits
    2 deletes in trunk

Remove runtime toggle for pointer-lock
https://bugs.webkit.org/show_bug.cgi?id=165577
<rdar://problems/29566996>

Reviewed by Jon Lee.

Source/WebCore:

Remove any runtime calls to check if pointer-lock is enabled. It's
either compiled in or out.

Covered by existing tests.

  • bindings/generic/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setPointerLockEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::pointerLockEnabled): Deleted.

  • dom/Document.idl:
  • dom/Element.idl:
  • page/Page.h:
  • page/PointerLockController.cpp:

(WebCore::PointerLockController::requestPointerLock):
(WebCore::PointerLockController::requestPointerUnlock):
(WebCore::PointerLockController::requestPointerUnlockAndForceCursorVisible):

Source/WebKit/mac:

Remove any runtime calls to check if pointer-lock is enabled. It's
either compiled in or out.

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

(-[WebPreferences pointerLockEnabled]): Deleted.
(-[WebPreferences setPointerLockEnabled:]): Deleted.

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

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Remove any runtime calls to check if pointer-lock is enabled. It's
either compiled in or out.

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

(WKPreferencesSetPointerLockEnabled): Deleted.
(WKPreferencesGetPointerLockEnabled): Deleted.

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

(WebKit::WebPage::updatePreferences):

Tools:

Remove any runtime calls to check if pointer-lock is enabled. It's
either compiled in or out.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

Websites/webkit.org:

No need to have pointer-lock tested.

  • experimental-features.html: Also sort the list alphabetically.

LayoutTests:

Remove any runtime calls to check if pointer-lock is enabled. It's
either compiled in or out.

  • platform/mac/TestExpectations: Enable the pointer-lock tests that should work.
  • pointer-lock/pointer-lock-api.html: Fix a bad DOM call.
  • pointer-lock/pointerlock-interface-disabled-expected.txt: Removed.
  • pointer-lock/pointerlock-interface-disabled.html: Removed.
6:51 PM Changeset in webkit [209513] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source

Versioning.

6:25 PM Changeset in webkit [209512] by eric.carlson@apple.com
  • 15 edits
    6 adds in trunk

[MediaStream][Mac] Revoke sandbox extensions when capture ends
https://bugs.webkit.org/show_bug.cgi?id=165476

Reviewed by Brady Eidson.
Source/WebKit2:

Track media capture by process so it is possible to revoke the sandbox extensions issued to
a web process when capture stops. Allocate WK2 user media permission manager lazily rather
than every time a page is created as most pages won't need one.

  • CMakeLists.txt: Add new files.
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy): Register

with process manager.

(WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Move sandbox

extension code to the process manager.

(WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): New.
(WebKit::UserMediaPermissionRequestManagerProxy::startedCaptureSession): New, report state

change to the process manager.

(WebKit::UserMediaPermissionRequestManagerProxy::endedCaptureSession): Ditto.

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/UserMediaProcessManager.cpp: Added.

(WebKit::ProcessState::ProcessState):
(WebKit::ProcessState::managers):
(WebKit::ProcessState::sandboxExtensionsGranted):
(WebKit::ProcessState::setSandboxExtensionsGranted):
(WebKit::stateMap):
(WebKit::processState):
(WebKit::ProcessState::addRequestManager):
(WebKit::ProcessState::removeRequestManager):
(WebKit::UserMediaProcessManager::singleton):
(WebKit::UserMediaProcessManager::addUserMediaPermissionRequestManagerProxy):
(WebKit::UserMediaProcessManager::removeUserMediaPermissionRequestManagerProxy):
(WebKit::UserMediaProcessManager::willCreateMediaStream):
(WebKit::UserMediaProcessManager::startedCaptureSession):
(WebKit::UserMediaProcessManager::endedCaptureSession):

  • UIProcess/UserMediaProcessManager.h: Added.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy): Don't allocate m_userMediaPermissionRequestManager.
(WebKit::WebPageProxy::resetState): Set m_userMediaPermissionRequestManager to null.
(WebKit::WebPageProxy::userMediaPermissionRequestManager): Allocate m_userMediaPermissionRequestManager

lazily as most pages don't need it.

(WebKit::WebPageProxy::requestUserMediaPermissionForFrame): Call userMediaPermissionRequestManager().
(WebKit::WebPageProxy::enumerateMediaDevicesForFrame): Ditto.
(WebKit::WebPageProxy::clearUserMediaState): Ditto.
(WebKit::WebPageProxy::isPlayingMediaDidChange): Report capture state changes to the request

manager proxy.

  • UIProcess/WebPageProxy.h:
  • WebKit2.xcodeproj/project.pbxproj: Add new files.
  • WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp: Added.

(WebKit::MediaDeviceSandboxExtensions::MediaDeviceSandboxExtensions):
(WebKit::MediaDeviceSandboxExtensions::encode):
(WebKit::MediaDeviceSandboxExtensions::decode):
(WebKit::MediaDeviceSandboxExtensions::operator[]):
(WebKit::MediaDeviceSandboxExtensions::size):

  • WebProcess/MediaStream/MediaDeviceSandboxExtensions.h: Added.
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::~UserMediaPermissionRequestManager): Sandbox extension

is now in a HashMap, not a Vector.

(WebKit::UserMediaPermissionRequestManager::grantUserMediaDeviceSandboxExtensions): Record

IDs with extensions so they can be revoked later.

(WebKit::UserMediaPermissionRequestManager::revokeUserMediaDeviceSandboxExtensions): New.
(WebKit::UserMediaPermissionRequestManager::grantUserMediaDevicesSandboxExtension): Deleted.

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::grantUserMediaDeviceSandboxExtensions):
(WebKit::WebPage::revokeUserMediaDeviceSandboxExtensions):
(WebKit::WebPage::grantUserMediaDevicesSandboxExtension): Deleted.

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

Tools:

Add a test which loads a page that calls navigator.mediaDevices.enumerateDevices, kills the
page, and loads the same page again to ensure that the WK2 UserMediaPermissionRequestManagerProxy
is reset and recreated when a web page exits and is reloaded.

  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/EnumerateMediaDevices.cpp: Added.

(TestWebKitAPI::checkUserMediaPermissionCallback):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/enumerateMediaDevices.html: Added.
6:18 PM Changeset in webkit [209511] by hyatt@apple.com
  • 6 edits in trunk/LayoutTests

[CSS Parser] Unskip gradients tests
https://bugs.webkit.org/show_bug.cgi?id=165576

Reviewed by Dean Jackson.

Keywords like left, center, top, right and bottom are preserved when serializing in
the new parser.

  • TestExpectations:
  • fast/gradients/css3-gradient-parsing-expected.txt:
  • fast/gradients/css3-gradient-parsing.html:
  • fast/gradients/unprefixed-gradient-parsing-expected.txt:
  • fast/gradients/unprefixed-gradient-parsing.html:
6:08 PM Changeset in webkit [209510] by wilander@apple.com
  • 4 edits in trunk

Allow commas in Accept, Accept-Language, and Content-Language request headers for simple CORS
https://bugs.webkit.org/show_bug.cgi?id=165566
<rdar://problem/29560983>

Reviewed by Alex Christensen.

Source/WebCore:

Updated the existing tests.

  • platform/network/HTTPParsers.cpp:

(WebCore::isValidAcceptHeaderValue):

Now also accepts ','.

(WebCore::isValidLanguageHeaderValue):

Ditto.

LayoutTests:

  • http/tests/xmlhttprequest/cors-non-standard-safelisted-headers-should-trigger-preflight.html:

Added ',' to the tests as well as two examples from
two sites where we found a regression.

6:01 PM Changeset in webkit [209509] by hyatt@apple.com
  • 8 edits in trunk

[CSS Parser] Stop skipping tests in the css3 LayoutTests subdirectory
https://bugs.webkit.org/show_bug.cgi?id=165574

Reviewed by Dean Jackson.

Source/WebCore:

  • css/CSSGroupingRule.cpp:

(WebCore::CSSGroupingRule::insertRule):
The old parser didn't support the creation of @namespace rules in the
CSS OM, but the new parser does. We need to ensure that just like for
@import rules, that the insertion of a @namespace rule inside a
@supports rule is not allowed. This test passed in the old parser because
the rule just didn't get created, but in the new parser, we need to
add a check along with the @import rule check to ensure it isn't allowed.

LayoutTests:

Stop skipping two tests.

  • css3/font-variant-parsing-expected.txt:
  • css3/font-variant-parsing.html:

Patched to yield the correct results when multiple values are specified for the
same sub-property.

  • css3/supports-cssom-expected.txt:
  • css3/supports-cssom.html:

Patched to account for the new result for @namespace insertion failure (see
corresponding WebCore ChangeLog for explanation), and also patched to get rid
of excess whitespace, since the new parser doesn't preserve whitespace formatting
when serializing @supports.

5:49 PM Changeset in webkit [209508] by jiewen_tan@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed, Skip imported/w3c/WebCryptoAPI/generateKey/test_failures.html

This is a superset test for all test_failures*.html. No need for it as we run
all the sub tests.

5:49 PM Changeset in webkit [209507] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.4.2

New tag.

5:37 PM Changeset in webkit [209506] by commit-queue@webkit.org
  • 12 edits
    2 deletes in trunk

[Modern Media Controls] Remove aspect ratio button
https://bugs.webkit.org/show_bug.cgi?id=165571

Patch by Antoine Quint <Antoine Quint> on 2016-12-07
Reviewed by Dean Jackson.

Source/WebCore:

Since we do not have a way to toggle letterboxing on an HTMLMediaElement, we remove the
corresponding button in the media controls.

  • Modules/modern-media-controls/controls/aspect-ratio-button.js: Removed.
  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
  • Modules/modern-media-controls/js-files:

LayoutTests:

We no longer have an AspectRatioButton.

  • media/modern-media-controls/aspect-ratio-button/aspect-ratio-button-expected.txt: Removed.
  • media/modern-media-controls/aspect-ratio-button/aspect-ratio-button.html: Removed.
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-right-container-margin-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-right-container-margin.html:
5:31 PM Changeset in webkit [209505] by ggaren@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Renamed SourceCode members to match their accessor names
https://bugs.webkit.org/show_bug.cgi?id=165573

Reviewed by Keith Miller.

startChar => startOffset
endChar => endOffset

  • parser/UnlinkedSourceCode.h:

(JSC::UnlinkedSourceCode::UnlinkedSourceCode):
(JSC::UnlinkedSourceCode::view):
(JSC::UnlinkedSourceCode::startOffset):
(JSC::UnlinkedSourceCode::endOffset):
(JSC::UnlinkedSourceCode::length):

5:19 PM Changeset in webkit [209504] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk

One esc to exit fullscreen and pointer lock
https://bugs.webkit.org/show_bug.cgi?id=165416
rdar://problem/29430711

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-12-07
Reviewed by Jer Noble.

Source/WebCore:

Test: pointer-lock/lock-lost-on-esc-in-fullscreen.html

When handling escape, also exit fullscreen on escape.
This also means that escape can exit fullscreen in TestRunner.

  • page/EventHandler.cpp:

(WebCore::EventHandler::keyEvent):

Source/WebKit2:

Fix a crash when didLosePointerLock is not specified.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

Tools:

Implement WKPageUIClientV8 for pointer lock support.
Add "escape" key support in EventSenderProxy.

  • WebKitTestRunner/TestController.cpp:

(WTR::requestPointerLock):
(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::EventSenderProxy::keyDown):

LayoutTests:

  • platform/mac-wk2/TestExpectations:
  • pointer-lock/lock-lost-on-esc-in-fullscreen-expected.txt: Added.
  • pointer-lock/lock-lost-on-esc-in-fullscreen.html: Added.
5:13 PM Changeset in webkit [209503] by keith_miller@apple.com
  • 4 edits
    3 adds in trunk

Add more missing trivial wasm ops.
https://bugs.webkit.org/show_bug.cgi?id=165564

JSTests:

Add tests for drop and tee_local.

Reviewed by Geoffrey Garen.

  • wasm/function-tests/drop.js: Added.
  • wasm/function-tests/nop.js: Added.
  • wasm/function-tests/tee-local.js: Added.

Source/JavaScriptCore:

Reviewed by Geoffrey Garen.

This patch adds the nop, drop, and tee_local opcodes.
It also fixes an issue where we were not generating
the proper enums for the grow_memory and current_memory
opcodes.

  • wasm/WasmFunctionParser.h:

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

  • wasm/generateWasmOpsHeader.py:
5:08 PM Changeset in webkit [209502] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Control Flow Profiler's event handlers aren't getting removed when ContentView closes
https://bugs.webkit.org/show_bug.cgi?id=165556

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ScriptContentView.js:

(WebInspector.ScriptContentView.prototype.closed):

  • UserInterface/Views/TextResourceContentView.js:

(WebInspector.TextResourceContentView.prototype.closed):

5:07 PM Changeset in webkit [209501] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Renamed source => parentSource
https://bugs.webkit.org/show_bug.cgi?id=165570

Reviewed by Keith Miller.

For less confuse.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

5:02 PM Changeset in webkit [209500] by Yusuke Suzuki
  • 12 edits in trunk/Source

[JSC] Drop translate phase in module loader
https://bugs.webkit.org/show_bug.cgi?id=164861

Reviewed by Saam Barati.

Source/JavaScriptCore:

Originally, this "translate" phase was introduced to the module loader.
However, recent rework discussion[1] starts dropping this phase.
And this "translate" phase is meaningless in the browser side module loader
since this phase originally mimics the node.js's translation hook (like,
transpiling CoffeeScript source to JavaScript).

This "translate" phase is not necessary for the exposed HTML5
<script type="module"> tag right now. Once the module loader pipeline is
redefined and specified, we need to update the current loader anyway.
So dropping "translate" phase right now is OK.

This a bit simplifies the current module loader pipeline.

[1]: https://github.com/whatwg/loader/issues/147

  • builtins/ModuleLoaderPrototype.js:

(newRegistryEntry):
(fulfillFetch):
(requestFetch):
(requestInstantiate):
(provide):
(fulfillTranslate): Deleted.
(requestTranslate): Deleted.

  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):

  • jsc.cpp:
  • runtime/JSGlobalObject.cpp:
  • runtime/JSGlobalObject.h:
  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::translate): Deleted.

  • runtime/JSModuleLoader.h:
  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeInstantiate):
(JSC::moduleLoaderPrototypeTranslate): Deleted.

Source/WebCore:

  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:
4:50 PM Changeset in webkit [209499] by beidson@apple.com
  • 1 edit
    3 adds in trunk/PerformanceTests

Add IDB perf tests stressing key size.
https://bugs.webkit.org/show_bug.cgi?id=165567

Reviewed by Alex Christensen.

  • IndexedDB/large-array-keys.html: Added.
  • IndexedDB/large-binary-keys.html: Added.
  • IndexedDB/large-string-keys.html: Added.
4:44 PM Changeset in webkit [209498] by Keith Rollin
  • 12 edits
    16 adds in trunk/Source

Network event record/replay
https://bugs.webkit.org/show_bug.cgi?id=164527
<rdar://problem/29168157>

Reviewed by Alex Christensen.

Source/WebCore:

Export parseURLEncodedForm.

No new tests -- no functionality added, changed, or removed.

  • platform/URLParser.h:

Source/WebKit2:

Add WebKit2/NetworkProcess/capture/* for recording the network events
that occur when loading a page and for replaying them later. Update
NetworkLoad to invoke capture facilities. Add preferences for enabling
record or replay.

  • CMakeLists.txt:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):
(WebKit::NetworkLoad::initializeForRecord):
(WebKit::NetworkLoad::initializeForReplay):
(WebKit::NetworkLoad::initialize):
(WebKit::NetworkLoad::setDefersLoading):
(WebKit::NetworkLoad::continueWillSendRequest):
(WebKit::NetworkLoad::sharedWillSendRedirectedRequest):
(WebKit::NetworkLoad::notifyDidReceiveResponse):
(WebKit::NetworkLoad::didReceiveData):
(WebKit::NetworkLoad::didCompleteWithError):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::terminate):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

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

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/capture/NetworkCaptureEvent.cpp: Added.

(WebKit::NetworkCapture::copyHeaders):
(WebKit::NetworkCapture::KeyValuePair::KeyValuePair):
(WebKit::NetworkCapture::ResourceRequest::ResourceRequest):
(WebKit::NetworkCapture::ResourceRequest::operator WebCore::ResourceRequest):
(WebKit::NetworkCapture::ResourceResponse::ResourceResponse):
(WebKit::NetworkCapture::ResourceResponse::operator WebCore::ResourceResponse):
(WebKit::NetworkCapture::ResourceError::ResourceError):
(WebKit::NetworkCapture::ResourceError::operator WebCore::ResourceError):
(WebKit::NetworkCapture::JSONCoder::encode):
(WebKit::NetworkCapture::JSONCoder::decode):
(WebKit::NetworkCapture::JSONCoder<String>::encode):
(WebKit::NetworkCapture::JSONCoder<String>::decode):
(WebKit::NetworkCapture::JSONCoder<CaptureTimeType>::encode):
(WebKit::NetworkCapture::JSONCoder<CaptureTimeType>::decode):
(WebKit::NetworkCapture::JSONCoder<KeyValuePair>::encode):
(WebKit::NetworkCapture::JSONCoder<KeyValuePair>::decode):
(WebKit::NetworkCapture::JSONCoder<Vector<T>>::encode):
(WebKit::NetworkCapture::JSONCoder<Vector<T>>::decode):
(WebKit::NetworkCapture::JSONCoder<ResourceRequest>::encode):
(WebKit::NetworkCapture::JSONCoder<ResourceRequest>::decode):
(WebKit::NetworkCapture::JSONCoder<ResourceResponse>::encode):
(WebKit::NetworkCapture::JSONCoder<ResourceResponse>::decode):
(WebKit::NetworkCapture::JSONCoder<ResourceError>::encode):
(WebKit::NetworkCapture::JSONCoder<ResourceError>::decode):
(WebKit::NetworkCapture::JSONCoder<WebCore::SharedBuffer>::encode):
(WebKit::NetworkCapture::JSONCoder<WebCore::SharedBuffer>::decode):
(WebKit::NetworkCapture::JSONCoder<RequestSentEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<RequestSentEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<ResponseReceivedEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<ResponseReceivedEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<RedirectReceivedEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<RedirectReceivedEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<RedirectSentEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<RedirectSentEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<DataReceivedEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<DataReceivedEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<FinishedEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<FinishedEvent>::decode):
(WebKit::NetworkCapture::eventToString):
(WebKit::NetworkCapture::stringToEvent):

  • NetworkProcess/capture/NetworkCaptureEvent.h: Added.

(WebKit::NetworkCapture::TimedEvent::TimedEvent):

  • NetworkProcess/capture/NetworkCaptureLogging.h: Added.
  • NetworkProcess/capture/NetworkCaptureManager.cpp: Added.

(WebKit::NetworkCapture::Manager::singleton):
(WebKit::NetworkCapture::Manager::initialize):
(WebKit::NetworkCapture::Manager::terminate):
(WebKit::NetworkCapture::Manager::findMatch):
(WebKit::NetworkCapture::Manager::findExactMatch):
(WebKit::NetworkCapture::Manager::findBestFuzzyMatch):
(WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
(WebKit::NetworkCapture::Manager::loadResources):
(WebKit::NetworkCapture::Manager::reportLoadPath):
(WebKit::NetworkCapture::Manager::reportRecordPath):
(WebKit::NetworkCapture::Manager::reportReplayPath):
(WebKit::NetworkCapture::Manager::requestToPath):
(WebKit::NetworkCapture::Manager::stringToHash):
(WebKit::NetworkCapture::Manager::hashToPath):
(WebKit::NetworkCapture::Manager::logRecordedResource):
(WebKit::NetworkCapture::Manager::logLoadedResource):
(WebKit::NetworkCapture::Manager::logPlayedBackResource):
(WebKit::NetworkCapture::Manager::ensureFileHandle):
(WebKit::NetworkCapture::Manager::openCacheFile):
(WebKit::NetworkCapture::Manager::readFile):
(WebKit::NetworkCapture::Manager::getLine):
(WebKit::NetworkCapture::Manager::getWord):
(WebKit::NetworkCapture::Manager::printToFile):

  • NetworkProcess/capture/NetworkCaptureManager.h: Added.

(WebKit::NetworkCapture::Manager::isRecording):
(WebKit::NetworkCapture::Manager::isReplaying):
(WebKit::NetworkCapture::Manager::mode):

  • NetworkProcess/capture/NetworkCaptureRecorder.cpp: Added.

(WebKit::NetworkCapture::Recorder::recordRequestSent):
(WebKit::NetworkCapture::Recorder::recordResponseReceived):
(WebKit::NetworkCapture::Recorder::recordRedirectReceived):
(WebKit::NetworkCapture::Recorder::recordRedirectSent):
(WebKit::NetworkCapture::Recorder::recordDataReceived):
(WebKit::NetworkCapture::Recorder::recordFinish):
(WebKit::NetworkCapture::Recorder::writeEvents):

  • NetworkProcess/capture/NetworkCaptureRecorder.h: Added.

(WebKit::NetworkCapture::Recorder::recordEvent):

  • NetworkProcess/capture/NetworkCaptureReplayer.cpp: Added.

(WebKit::NetworkCapture::Replayer::replayResource):

  • NetworkProcess/capture/NetworkCaptureReplayer.h: Added.
  • NetworkProcess/capture/NetworkCaptureResource.cpp: Added.

(WebKit::NetworkCapture::Resource::Resource):
(WebKit::NetworkCapture::Resource::url):
(WebKit::NetworkCapture::Resource::baseURL):
(WebKit::NetworkCapture::Resource::queryParameters):
(WebKit::NetworkCapture::Resource::eventStream):
(WebKit::NetworkCapture::Resource::EventStream::EventStream):
(WebKit::NetworkCapture::Resource::EventStream::nextEvent):

  • NetworkProcess/capture/NetworkCaptureResource.h: Added.
  • NetworkProcess/capture/NetworkCaptureTypes.h: Added.

(WebKit::NetworkCapture::TypeHolder::forEachTypeImpl):
(WebKit::NetworkCapture::TypeHolder::forEachType):

  • NetworkProcess/capture/NetworkDataTaskReplay.cpp: Added.

(WebKit::NetworkCapture::NetworkDataTaskReplay::NetworkDataTaskReplay):
(WebKit::NetworkCapture::NetworkDataTaskReplay::~NetworkDataTaskReplay):
(WebKit::NetworkCapture::NetworkDataTaskReplay::resume):
(WebKit::NetworkCapture::NetworkDataTaskReplay::suspend):
(WebKit::NetworkCapture::NetworkDataTaskReplay::cancel):
(WebKit::NetworkCapture::NetworkDataTaskReplay::complete):
(WebKit::NetworkCapture::NetworkDataTaskReplay::invalidateAndCancel):
(WebKit::NetworkCapture::NetworkDataTaskReplay::enqueueEventHandler):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayRequestSent):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayResponseReceived):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayRedirectReceived):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayRedirectSent):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayDataReceived):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayFinished):
(WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):
(WebKit::NetworkCapture::NetworkDataTaskReplay::didFinish):

  • NetworkProcess/capture/NetworkDataTaskReplay.h: Added.

(WebKit::NetworkCapture::NetworkDataTaskReplay::create):

  • NetworkProcess/capture/json.hpp: Added.
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • WebKit2.xcodeproj/project.pbxproj:
  • config.h:
4:42 PM Changeset in webkit [209497] by hyatt@apple.com
  • 2 edits
    6 deletes in trunk/LayoutTests

[CSS Parser] Remove tests that depend on SVG CSS OM that has been removed
https://bugs.webkit.org/show_bug.cgi?id=165565

Reviewed by Jon Lee.

  • TestExpectations:
  • svg/dom/SVGColor-expected.txt: Removed.
  • svg/dom/SVGColor.html: Removed.
  • svg/dom/SVGPaint-expected.txt: Removed.
  • svg/dom/SVGPaint.html: Removed.
  • svg/dom/rgb-color-parser-expected.txt: Removed.
  • svg/dom/rgb-color-parser.html: Removed.
4:37 PM Changeset in webkit [209496] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking compositing/layer-creation/fixed-overlap-extent-rtl.html as failing on mac-wk1.
https://bugs.webkit.org/show_bug.cgi?id=165541

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:34 PM Changeset in webkit [209495] by hyatt@apple.com
  • 13 edits in trunk

[CSS Parser] Consolidate string/ident/url serialization functions
https://bugs.webkit.org/show_bug.cgi?id=165552

Reviewed by Zalan Bujtas.

Source/WebCore:

Right now CSSParser has string, ident and url serialization functions
called quoteCSStringIfNeeded (which actually serializes both strings and
identifiers), as well as quoteCSSURLIfNeeded.

CSSMarkup already has serialization functions that exist outside of the
CSSParser and that handle serialization of strings, idents and URLs. This
patch eliminates the CSSParser functions and consolidates all of the
serialization to use CSSMarkup's functions.

Note that we are not spec-compliant at all here, and so I had to amend
the functions to support our non-spec-compliant serialization. The goal
of this patch is consolidation and not to fix our broken serialization.

Notable changes include parameterizing string serialization so that
both single and double quotes are supported, since in the existing code
we're sometimes spec-compliant (CSSSelectors) and sometimes not
(CSSPrimitiveValue).

We also overload CSS_STRING primitive value type and have it act as both
a string and a custom identifier. This is lame, since the parser should
have made two different types of objects instead, but since our parser
doesn't do that yet, I added a serializeAsStringOrCustomIdent that
preserves our old behavior of "quote the string only if needed." In this
case what that really meant was "Try to guess that we were originally a
custom ident and leave off quotes if so." This function will go away
once we properly create CSSStringValues and CSSCustomIdentValues instead
of turning the latter into strings.

  • css/CSSBasicShapes.cpp:

(WebCore::buildPathString):

  • css/CSSImageValue.cpp:

(WebCore::CSSImageValue::customCSSText):

  • css/CSSMarkup.cpp:

(WebCore::isCSSTokenizerURL):
(WebCore::serializeString):
(WebCore::serializeURL):
(WebCore::serializeAsStringOrCustomIdent):
(WebCore::serializeURI): Deleted.

  • css/CSSMarkup.h:
  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText):

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText):

  • css/parser/CSSParser.cpp:

(WebCore::isCSSTokenizerIdent): Deleted.
(WebCore::isCSSTokenizerURL): Deleted.
(WebCore::quoteCSSStringInternal): Deleted.
(WebCore::quoteCSSString): Deleted.
(WebCore::quoteCSSStringIfNeeded): Deleted.
(WebCore::quoteCSSURLIfNeeded): Deleted.

  • css/parser/CSSParser.h:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::mapLanguageAttributeToLocale):

LayoutTests:

  • fast/css/content-language-only-whitespace-expected.txt:
  • fast/css/content-language-with-whitespace-expected.txt:
4:27 PM Changeset in webkit [209494] by dino@apple.com
  • 4 edits in trunk/Source/WebCore

Expose internal API to detect media documents
https://bugs.webkit.org/show_bug.cgi?id=165559
<rdar://problems/29564054>

Reviewed by Antoine Quint.

Expose via MediaControlsHost whether or not we're in
a MediaDocument.

Since MediaControlsHost is only exposed to our
internal controls, it's not possible to test this
directly. However, a subsequent test for media documents
with audio-only content will cover this change.

  • Modules/mediacontrols/MediaControlsHost.cpp: Add isInMediaDocument and put const on

various methods that should have it.
(WebCore::MediaControlsHost::captionDisplayMode):
(WebCore::MediaControlsHost::supportsFullscreen):
(WebCore::MediaControlsHost::isVideoLayerInline):
(WebCore::MediaControlsHost::isInMediaDocument):

  • Modules/mediacontrols/MediaControlsHost.h:
  • Modules/mediacontrols/MediaControlsHost.idl: Add isInMediaDocument.
4:17 PM Changeset in webkit [209493] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking imported/mathml-in-html5/mathml/presentation-markup/fractions/frac-parameters-1.html as flaky on El Capitan WK2.
https://bugs.webkit.org/show_bug.cgi?id=165392

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:04 PM Changeset in webkit [209492] by Joseph Pecoraro
  • 13 edits
    5 adds in trunk

Web Inspector: Add ability to distinguish if a Script was parsed as a module
https://bugs.webkit.org/show_bug.cgi?id=164900
<rdar://problem/29323817>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::didParseSource):

  • inspector/protocol/Debugger.json:

Add an optional event parameter to distinguish if a script was a module or not.

Source/WebInspectorUI:

  • UserInterface/Models/Script.js:

(WebInspector.Script.prototype.get sourceType):
New property of Scripts. SourceType is either Program or Module.

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager.prototype.scriptDidParse):

  • UserInterface/Protocol/DebuggerObserver.js:

(WebInspector.DebuggerObserver.prototype.scriptParsed):
Convert incoming module boolean into SourceType when creating new Scripts.

  • UserInterface/Models/ScriptSyntaxTree.js:

(WebInspector.ScriptSyntaxTree):
(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
Update the generic AST for new module specific Esprima types.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype.textEditorScriptSourceType):

  • UserInterface/Views/TextEditor.js:

(WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
For pretty printing correctly state if this is a module or not for Esprima.

LayoutTests:

  • inspector/model/parse-script-syntax-tree-expected.txt:
  • inspector/model/parse-script-syntax-tree.html:
  • inspector/model/resources/module.js: Added.

(import.string_appeared_here.myModule):

  • inspector/model/resources/other-module.js: Added.

(myOtherModule):

  • inspector/model/resources/program.js: Added.

(myProgram):

  • inspector/model/script-sourceType-expected.txt: Added.
  • inspector/model/script-sourceType.html: Added.
4:04 PM Changeset in webkit [209491] by Joseph Pecoraro
  • 20 edits in trunk

Web Inspector: Update Esprima to support new features / syntax (, async/await, trailing comma)
https://bugs.webkit.org/show_bug.cgi?id=164830
<rdar://problem/29293814>

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

  • UserInterface/External/Esprima/LICENSE:
  • UserInterface/External/Esprima/esprima.js:

Updated to Esprima@7219731 (4.0.0-dev).

  • UserInterface/Models/ScriptSyntaxTree.js:

(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):

  • UserInterface/Workers/Formatter/ESTreeWalker.js:

(ESTreeWalker.prototype._walkChildren):
Add new nodes (AwaitExpression).
Add new states (async boolean property on Functions).
Remove stale properties (defaults is no longer needed, as parameters
with default values are now AssignmentPatterns).
Update MetaProperty where meta/property are now Identifiers not strings.

  • UserInterface/Workers/Formatter/EsprimaFormatter.js:

(EsprimaFormatter.prototype._handleTokenAtNode):
Handle pretty printing of new nodes and identifiers.

  • Controllers/FrameResourceManager.js

Address a console.assert warning for stripping assertions in Production.

LayoutTests:

  • inspector/formatting/resources/javascript-tests/arrow-functions-expected.js:
  • inspector/formatting/resources/javascript-tests/arrow-functions.js:
  • inspector/formatting/resources/javascript-tests/classes-expected.js:
  • inspector/formatting/resources/javascript-tests/classes.js:
  • inspector/formatting/resources/javascript-tests/functions-expected.js:
  • inspector/formatting/resources/javascript-tests/functions.js:
  • inspector/formatting/resources/javascript-tests/other-statements-expected.js:
  • inspector/formatting/resources/javascript-tests/other-statements.js:
  • inspector/formatting/resources/javascript-tests/unary-binary-expressions-expected.js:
  • inspector/formatting/resources/javascript-tests/unary-binary-expressions.js:
  • inspector/model/parse-script-syntax-tree-expected.txt:
  • inspector/model/parse-script-syntax-tree.html:

Coverage for new supported syntax.

3:53 PM Changeset in webkit [209490] by rniwa@webkit.org
  • 7 edits in trunk/LayoutTests

Rebaseline tests after r209486. Also updated media-shadow-manipulation.html now that range is null.

  • fast/shadow-dom/color-input-element-shadow-manipulation-expected.txt:
  • fast/shadow-dom/file-input-element-shadow-manipulation-expected.txt:
  • fast/shadow-dom/media-shadow-manipulation-expected.txt:
  • fast/shadow-dom/media-shadow-manipulation.html:
  • fast/shadow-dom/range-input-element-shadow-manipulation-expected.txt:
  • fast/shadow-dom/textarea-shadow-manipulation-expected.txt:
3:41 PM Changeset in webkit [209489] by Simon Fraser
  • 6 edits in trunk

Add system trace points for JavaScript VM entry/exit
https://bugs.webkit.org/show_bug.cgi?id=165550

Reviewed by Tim Horton.
Source/JavaScriptCore:

Add trace points for entry/exit into/out of the JS VM.

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope):
(JSC::VMEntryScope::~VMEntryScope):

Source/WTF:

Add trace points for entry/exit into/out of the JS VM.

  • wtf/SystemTracing.h:

Tools:

Add trace points for entry/exit into/out of the JS VM.

  • Tracing/SystemTracePoints.plist:
3:23 PM Changeset in webkit [209488] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Marking two compositing tests as failing.
https://bugs.webkit.org/show_bug.cgi?id=165530

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
3:21 PM Changeset in webkit [209487] by Alan Bujtas
  • 3 edits
    2 adds in trunk

ASSERTION FAILED: count >= 1 in WebCore::RenderMultiColumnSet::columnCount
https://bugs.webkit.org/show_bug.cgi?id=136365
<rdar://problem/27686727>

Reviewed by Simon Fraser.

Source/WebCore:

Margin value overflow ends up confusing the column count computing logic.

Test: fast/multicol/assert-on-column-count-when-zoomed-in.html

  • css/StyleResolver.cpp:

(WebCore::addIntrinsicMargins):

LayoutTests:

  • fast/multicol/assert-on-column-count-when-zoomed-in-expected.txt: Added.
  • fast/multicol/assert-on-column-count-when-zoomed-in.html: Added.
2:51 PM Changeset in webkit [209486] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

document.caretRangeFromPoint doesn't retarget the resultant Range correctly.
https://bugs.webkit.org/show_bug.cgi?id=165146

Reviewed by Sam Weinig.

Source/WebCore:

The bug was caused by caretRangeFromPoint not retargeting the resultant Range correctly.
Namely, it's possible for RenderObject::positionForPoint to move across shadow boundary
even if node was identically equal to ancestorInThisScope(node).

Fixed the bug by directly retargeting the range's container node and its offset as done
for elementFromPoint in r206795.

Test: fast/shadow-dom/caret-range-from-point-in-shadow-tree.html

  • dom/Document.cpp:

(WebCore::Document::caretRangeFromPoint):

LayoutTests:

Added a regression test for caretRangeFromPoint retargeting the result.

  • fast/shadow-dom/caret-range-from-point-in-shadow-tree-expected.txt: Added.
  • fast/shadow-dom/caret-range-from-point-in-shadow-tree.html: Added.
2:51 PM Changeset in webkit [209485] by Simon Fraser
  • 5 edits in trunk

Fix use of enum in a WK2 C SPI header.
rdar://problem/28725583

Followup to correctly prefix the enum values.

Source/WebKit2:

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageSetEventThrottlingBehaviorOverride):

  • WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:

Tools:

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::prepare):

2:47 PM Changeset in webkit [209484] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[Modern Media Controls] Entering fullscreen and returning to inline shows fullscreen controls
https://bugs.webkit.org/show_bug.cgi?id=165536

Patch by Antoine Quint <Antoine Quint> on 2016-12-07
Reviewed by Tim Horton.

Source/WebCore:

We regressed when we implemented the fix for webkit.org/b/165494 and we started to rely solely
on the "webkitpresentationmodechanged" event to identify presention mode changes. As it turns out,
when the "webkitpresentationmodechanged" event is dispatched when exiting fullscreen and returning
to the inline presentation mode, querying the "webkitPresentationMode" property says "inline" while
"webkitDisplayingFullscreen" still returns true (raised as webkit.org/b/165538).

We now use the "webkitPresentationMode" property when that property is supported and we're using the
"webkitpresentationmodechanged" event, and we use the "webkitDisplayingFullscreen" property otherwise.

Test: media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html

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

(MediaController.prototype.get layoutTraits):

LayoutTests:

Add a new test that checks we're using the right media controls presentation as we enter and exit fullscreen.

  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html: Added.
2:44 PM Changeset in webkit [209483] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix build.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::open):

2:36 PM Changeset in webkit [209482] by ChangSeok Oh
  • 2 edits
    1 add in trunk/Tools

[GTK] Cannot build GTK+ with CUPS 2.* versions
https://bugs.webkit.org/show_bug.cgi?id=163591

Reviewed by Michael Catanzaro.

GTK+ build has failed on the system which CUPS 2.x is installed in. GTK+ 3.16.4
does not assume to use the recent CUPS thus it fails to detect the CUPS in configuration.
GTK+ upstream fixed this issue but it is not easy to apply the original patch to our
old gtk+ since it requires not only bumping up glib accordingly and its consequence
causes many printing test failures. So, I propose to fix the configuration issue by
applying the change to the configure file directly. By doing this, we don't need to
upgrade glib and worry about any test failures as a consequence of the upgraded glib.

  • gtk/jhbuild.modules:
  • gtk/patches/gtk+-configure-fix-detecting-CUPS-2.x.patch: Added.
2:30 PM Changeset in webkit [209481] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit2

Rename the connection sources to better indicate what data direction they are used for
https://bugs.webkit.org/show_bug.cgi?id=165548

Reviewed by Tim Horton.

  • Platform/IPC/Connection.h:
  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::platformInvalidate):
(IPC::Connection::platformInitialize):
(IPC::createReceiveSource):
(IPC::Connection::initializeSendSource):
(IPC::Connection::receiveSourceEventHandler):
(IPC::createDataAvailableSource): Deleted.
(IPC::Connection::initializeDeadNameSource): Deleted.
Rename m_deadNameSource to m_sendSource, and m_receivePortDataAvailableSource to m_receiveSource.

(IPC::Connection::open):
Initialize the send source before we attempt to send a first message.

2:28 PM Changeset in webkit [209480] by achristensen@apple.com
  • 11 edits
    2 adds in trunk/Source/ThirdParty/ANGLE

Build more of ANGLE on Mac and Windows
https://bugs.webkit.org/show_bug.cgi?id=165543

Reviewed by Dean Jackson.

We will need to compile these files to use ANGLE's GLESv2 implementation instead of
using OpenGL directly. No functional change.

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

Move platform-specific files to Platform*.cmake.

  • PlatformMac.cmake: Added.
  • PlatformWin.cmake: Added.
  • src/libANGLE/renderer/Format.cpp:
  • src/libANGLE/renderer/Format_autogen.cpp:

(angle::Format::Get):

  • src/libANGLE/renderer/gl/PathGL.cpp:
  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.h:
  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:

Rename SwapLayer to WebSwapLayer. Otherwise, WebCore complains about improperly named ObjC classes.
Since this is the only one, let's just rename it instead of adding an exception.
(rx::WindowSurfaceCGL::initialize):
(-[SwapLayer initWithSharedState:withContext:withFunctions:]): Deleted.

  • src/libANGLE/renderer/gl/formatutilsgl.cpp:

(rx::nativegl::GetInternalFormatMap):
(rx::nativegl::GetInternalFormatInfo):

  • src/libANGLE/renderer/renderer_utils.cpp:

(rx::GetColorWriteFunction):

  • src/libGLESv2/entry_points_egl.cpp:

(egl::GetProcAddress):

2:21 PM Changeset in webkit [209479] by Simon Fraser
  • 5 edits in trunk

Fix use of enum in a WK2 C SPI header.
rdar://problem/28725583

Reviewed by Dan Bernstein.

Use correct enum style for a C SPI header and fix the callers.

Source/WebKit2:

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageSetEventThrottlingBehaviorOverride):

  • WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:

Tools:

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::prepare):

2:02 PM Changeset in webkit [209478] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/Safari Technology Preview 19

Added a tag for Safari Technology Preview release 19.

1:50 PM Changeset in webkit [209477] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

Scroll position jumps to the origin when scrolling without momentum at the end of a scroll snapping container
https://bugs.webkit.org/show_bug.cgi?id=165474
<rdar://problem/29534305>

Reviewed by Simon Fraser.

Source/WebCore:

When initializing an AppKit _NSScrollingMomentumCalculator, if the initial and target positions are the same and
the initial velocity is (0, 0), the momentum calculator will output (0, 0) as the animated scroll position when
animating. This causes the scroll position to jump to the top left in some cases when scrolling in scroll snap
containers. To fix this, we teach the ScrollingMomentumCalculatorMac to return an animation duration of 0 and
an animated scroll position equal to the final scroll position when this is the case.

Test: tiled-drawing/scrolling/scroll-snap/scrolling-jumps-to-top.html

  • page/scrolling/mac/ScrollingMomentumCalculatorMac.h:
  • page/scrolling/mac/ScrollingMomentumCalculatorMac.mm:

(WebCore::ScrollingMomentumCalculatorMac::ScrollingMomentumCalculatorMac):
(WebCore::ScrollingMomentumCalculatorMac::scrollOffsetAfterElapsedTime):
(WebCore::ScrollingMomentumCalculatorMac::animationDuration):

LayoutTests:

Added a new test verifying that if a scroll gesture ends without momentum at the bottom of a scroll snapping
container, the scroll position won't jump to the top.

  • tiled-drawing/scrolling/scroll-snap/scrolling-jumps-to-top-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scrolling-jumps-to-top.html: Added.
1:43 PM Changeset in webkit [209476] by keith_miller@apple.com
  • 8 edits
    8 adds in trunk

Add support for truncation operators
https://bugs.webkit.org/show_bug.cgi?id=165519

Reviewed by Geoffrey Garen.

JSTests:

  • wasm/function-tests/i32-trunc-s-f32.js: Added.
  • wasm/function-tests/i32-trunc-s-f64.js: Added.
  • wasm/function-tests/i32-trunc-u-f32.js: Added.
  • wasm/function-tests/i32-trunc-u-f64.js: Added.
  • wasm/function-tests/i64-trunc-s-f32.js: Added.
  • wasm/function-tests/i64-trunc-s-f64.js: Added.
  • wasm/function-tests/i64-trunc-u-f32.js: Added.
  • wasm/function-tests/i64-trunc-u-f64.js: Added.

Source/JavaScriptCore:

This patch adds initial support for truncation operators. The current patch
does range based out of bounds checking, in the future we should use system
register flags on ARM and other tricks on X86 improve the performance of
these opcodes.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::branchTruncateDoubleToInt32):
(JSC::MacroAssemblerARM64::truncateDoubleToInt64):
(JSC::MacroAssemblerARM64::truncateDoubleToUint64):
(JSC::MacroAssemblerARM64::truncateFloatToInt32):
(JSC::MacroAssemblerARM64::truncateFloatToUint32):
(JSC::MacroAssemblerARM64::truncateFloatToInt64):
(JSC::MacroAssemblerARM64::truncateFloatToUint64):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::truncateFloatToInt32):
(JSC::MacroAssemblerX86Common::truncateDoubleToUint32): Deleted.

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::truncateDoubleToUint32):
(JSC::MacroAssemblerX86_64::truncateDoubleToInt64):
(JSC::MacroAssemblerX86_64::truncateDoubleToUint64):
(JSC::MacroAssemblerX86_64::truncateFloatToUint32):
(JSC::MacroAssemblerX86_64::truncateFloatToInt64):
(JSC::MacroAssemblerX86_64::truncateFloatToUint64):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::cvttss2si_rr):
(JSC::X86Assembler::cvttss2siq_rr):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncSF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncSF32>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncUF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncUF32>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncSF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncUF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncSF32>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncUF32>):

  • wasm/WasmFunctionParser.h:

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

1:33 PM Changeset in webkit [209475] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Remove iCloud Pages and Keynote site-specific hacks
https://bugs.webkit.org/show_bug.cgi?id=165544
-and corresponding-
rdar://problem/29082536

Reviewed by Wenson Hsieh.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::needsHiddenContentEditableQuirk):
(WebKit::needsPlainTextQuirk):

1:27 PM Changeset in webkit [209474] by Simon Fraser
  • 2 edits
    2 adds in trunk/LayoutTests

REGRESSION (r209447): LayoutTests compositing/layer-creation/fixed-position-out-of-view-scaled.html and compositing/layer-creation/fixed-position-out-of-view-scaled-scroll.html failing
https://bugs.webkit.org/show_bug.cgi?id=165530

New baseline for WK1 (which has RTL/compositing isseus), and mark a test as flakey in WK1.

  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/compositing/layer-creation/fixed-overlap-extent-rtl-expected.txt: Added.
1:20 PM Changeset in webkit [209473] by adachan@apple.com
  • 3 edits in trunk/Source/WebKit2

Add a getter for serverTrust in _WKObservablePageState
https://bugs.webkit.org/show_bug.cgi?id=165433

Reviewed by Anders Carlsson.

  • UIProcess/API/C/mac/WKPagePrivateMac.h:
  • UIProcess/API/C/mac/WKPagePrivateMac.mm:

(-[WKObservablePageState serverTrust]):

1:13 PM Changeset in webkit [209472] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: menu type toolbar should be mapped correctly on Mac
https://bugs.webkit.org/show_bug.cgi?id=165537

Reviewed by Chris Fleizach.

Source/WebCore:

The menu tag with a toolbar type should have the corresponding role.

Test: accessibility/mac/menu-type-toolbar.html

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::determineAccessibilityRole):

LayoutTests:

  • accessibility/mac/menu-type-toolbar-expected.txt: Added.
  • accessibility/mac/menu-type-toolbar.html: Added.
1:10 PM Changeset in webkit [209471] by ggaren@apple.com
  • 2 edits in trunk/LayoutTests

Fixed a test failure seen in web-timing-minimal-performance-now.html
https://bugs.webkit.org/show_bug.cgi?id=165542

Reviewed by Beth Dakin.

This test was always slightly wrong, but it is much more likely to fail
as of <https://trac.webkit.org/changeset/209462>.

  • fast/dom/Window/web-timing-minimal-performance-now.html: < is not a

correct test for monotonicity. < tests for stricly increasing. <= is a
correct test for monotonicity. All computer clocks have some granularity,
so computer clocks are monotonic but not strictly increasing: you can
sample the clock twice in the same tick.

12:40 PM Changeset in webkit [209470] by Wenson Hsieh
  • 3 edits
    22 adds in trunk

Add a new project for recording and playing back editing commands in editable web content
https://bugs.webkit.org/show_bug.cgi?id=165114
<rdar://problem/29408135>

Reviewed by Beth Dakin.

Source/WebCore:

Adds new scripts used to record and play back editing, as well as a new Xcode Copy files phase that pushes these
scripts to the internal system directory when installing. See the Tools ChangeLog and individual comments below
for more details. Covered by 3 new unit tests in the EditingHistory project.

  • InternalScripts/DumpEditingHistory.js: Added.

(beginProcessingTopLevelUpdate):
(endProcessingTopLevelUpdate):
(appendDOMUpdatesFromRecords):
(appendSelectionUpdateIfNecessary):

Adds new entries into the top-level list of DOM updates captured when editing. Respectively, these are input
events and selection changes.

(EditingHistory.getEditingHistoryAsJSONString):

  • InternalScripts/EditingHistoryUtil.js: Added.

(prototype._scramble):
(prototype.applyToText):
(prototype.applyToFilename):
(prototype._scrambedNumberIndexForCode):
(prototype._scrambedLowercaseIndexForCode):
(prototype._scrambedUppercaseIndexForCode):

Naive implementation of an obfuscator. Currently, this only affects alphanumeric characters. Obfuscation is off
by default, but can be toggled on in JavaScript.

(elementFromMarkdown):
(GlobalNodeMap):
(GlobalNodeMap.prototype.nodesForGUIDs):
(GlobalNodeMap.prototype.guidsForTNodes):
(GlobalNodeMap.prototype.nodeForGUID):
(GlobalNodeMap.prototype.guidForNode):
(GlobalNodeMap.prototype.hasGUIDForNode):
(GlobalNodeMap.prototype.nodes):
(GlobalNodeMap.prototype.toObject):
(GlobalNodeMap.fromObject):
(GlobalNodeMap.dataForNode):
(GlobalNodeMap.elementFromTagName):
(GlobalNodeMap.nodeAttributesToObject):
(GlobalNodeMap.prototype.descriptionHTMLForGUID):
(GlobalNodeMap.prototype.descriptionHTMLForNode):

The GlobalNodeMap keeps track of every node that has appeared in the DOM, assigning each node a globally unique
identifier (GUID). This GUID is used when reconstructing the DOM, as well as unapplying or applying editing.

(SelectionState):
(SelectionState.prototype.isEqual):
(SelectionState.prototype.applyToSelection):
(SelectionState.fromSelection):
(SelectionState.prototype.toObject):
(SelectionState.fromObject):

Represents a snapshot of the Selection state (determined by getSelection()).

(DOMUpdate):
(DOMUpdate.prototype.apply):
(DOMUpdate.prototype.unapply):
(DOMUpdate.prototype.targetNode):
(DOMUpdate.prototype.detailsElement):
(DOMUpdate.ofType):
(DOMUpdate.fromRecords):

A DOMUpdate is an abstract object representing a change in the DOM that may be applied and unapplied. These are
also serializable as hashes, which may then be converted to JSON when generating editing history data.

(ChildListUpdate):
(ChildListUpdate.prototype.apply):
(ChildListUpdate.prototype.unapply):
(ChildListUpdate.prototype._nextSibling):
(ChildListUpdate.prototype._removedNodes):
(ChildListUpdate.prototype._addedNodes):
(ChildListUpdate.prototype.toObject):
(ChildListUpdate.prototype.detailsElement):
(ChildListUpdate.fromObject):

These three update types correspond to the three types of DOM mutations. These may appear as top-level updates
if they are not captured during an input event, but for the majority of user-input-driven changes, they will be
children of an input event.

(CharacterDataUpdate):
(CharacterDataUpdate.prototype.apply):
(CharacterDataUpdate.prototype.unapply):
(CharacterDataUpdate.prototype.detailsElement):
(CharacterDataUpdate.prototype.toObject):
(CharacterDataUpdate.fromObject):
(AttributeUpdate):
(AttributeUpdate.prototype.apply):
(AttributeUpdate.prototype.unapply):
(AttributeUpdate.prototype.detailsElement):
(AttributeUpdate.prototype.toObject):
(AttributeUpdate.fromObject):
(SelectionUpdate):
(SelectionUpdate.prototype.apply):
(SelectionUpdate.prototype.unapply):
(SelectionUpdate.prototype.toObject):
(SelectionUpdate.fromObject):
(SelectionUpdate.prototype._rangeDescriptionHTML):
(SelectionUpdate.prototype._anchorDescriptionHTML):
(SelectionUpdate.prototype._focusDescriptionHTML):
(SelectionUpdate.prototype.detailsElement):

Represents a change in the Selection. While no changes to the DOM structure occur as a result of a
SelectionUpdate, the information contained in these updates is used to determine where the selection should be
when rewinding or playing back the editing history.

(InputEventUpdate):
(InputEventUpdate.prototype._obfuscatedData):
(InputEventUpdate.prototype.apply):
(InputEventUpdate.prototype.unapply):
(InputEventUpdate.prototype.toObject):
(InputEventUpdate.fromObject):
(InputEventUpdate.prototype.detailsElement):

Represents an update due to user input, which consists of some number of child DOM mutation updates.

  • WebCore.xcodeproj/project.pbxproj:

Tools:

Adds a new Xcode project containing work towards rewinding and playing back editing commands. This work is
wrapped in an Xcode project to take advantage of the XCTest framework. To manually test recording, open the
capture test harness, edit the contenteditable body, and then hit cmd-S. This downloads a .json file which may
then be dragged into the playback test harness.

Also adds 3 new unit tests in EditingHistoryTests/RewindAndPlaybackTests.m. These tests carry out the following
steps:

  1. Load the capture harness and perform test-specific editing on the web view.
  2. Let originalState be a dump of the DOM at this point in time.
  3. Extract the JSON-serialized editing history data and load the playback harness with this data.
  4. Rewind all editing to the beginning.
  5. Playback all editing to the end.
  6. Dump the state of the DOM. This should be identical to originalState.
  • EditingHistory/EditingHistory.xcodeproj/project.pbxproj: Added.
  • EditingHistory/EditingHistory/Info.plist: Added.
  • EditingHistory/EditingHistory/Resources/CaptureHarness.html: Added.
  • EditingHistory/EditingHistory/Resources/DOMTestingUtil.js: Added.
  • EditingHistory/EditingHistory/Resources/PlaybackHarness.html: Added.
  • EditingHistory/EditingHistory/TestRunner.h: Added.
  • EditingHistory/EditingHistory/TestRunner.m: Added.

(injectedMessageEventHandlerScript):
(-[TestRunner init]):
(-[TestRunner deleteBackwards:]):
(-[TestRunner typeString:]):
(-[TestRunner bodyElementSubtree]):
(-[TestRunner bodyTextContent]):
(-[TestRunner editingHistoryJSON]):
(-[TestRunner loadPlaybackTestHarnessWithJSON:]):
(-[TestRunner numberOfUpdates]):
(-[TestRunner jumpToUpdateIndex:]):
(-[TestRunner expectEvents:afterPerforming:]):
(-[TestRunner loadCaptureTestHarness]):
(-[TestRunner setTextObfuscationEnabled:]):
(-[TestRunner isDoneWaitingForPendingEvents]):
(-[TestRunner userContentController:didReceiveScriptMessage:]):

The TestRunner provides utilities that a unit test should use to drive the test forward (e.g. loading harnesses)
or inspect the state of the loaded page (e.g. extracting JSON editing history data from the capture harness).

  • EditingHistory/EditingHistory/TestUtil.h: Added.
  • EditingHistory/EditingHistory/TestUtil.m: Added.

(waitUntilWithTimeout):
(waitUntil):

Provides utilities for running tests. For now, this is just spinning the runloop on a given condition.

  • EditingHistory/EditingHistory/WKWebViewAdditions.h: Added.
  • EditingHistory/EditingHistory/WKWebViewAdditions.m: Added.

(-[WKWebView loadPageFromBundleNamed:]):
(-[WKWebView typeCharacter:]):
(-[WKWebView keyPressWithCharacters:keyCode:]):
(-[WKWebView stringByEvaluatingJavaScriptFromString:]):

Provides utilities for simulating interaction in a web view.

  • EditingHistory/EditingHistory/main.m: Added.

(main):

  • EditingHistory/EditingHistoryTests/Info.plist: Added.
  • EditingHistory/EditingHistoryTests/RewindAndPlaybackTests.m: Added.

(-[RewindAndPlaybackTests setUp]):
(-[RewindAndPlaybackTests tearDown]):
(-[RewindAndPlaybackTests testTypingSingleLineOfText]):
(-[RewindAndPlaybackTests testTypingMultipleLinesOfText]):
(-[RewindAndPlaybackTests testTypingAndDeletingText]):
(-[RewindAndPlaybackTests rewindAndPlaybackEditingInPlaybackTestHarness]):
(-[RewindAndPlaybackTests originalBodySubtree:isEqualToFinalSubtree:]):

12:32 PM Changeset in webkit [209469] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

ASSERT crash while running media-source/mediasource-activesourcebuffers.html under Stress GC bot.
https://bugs.webkit.org/show_bug.cgi?id=165514

Reviewed by Eric Carlson.

If a track associated with MSE is disabled after a SourceBuffer begins parsing a queued
append operation, SourceBuffer can get into a state where it asks SourceBufferPrivateAVFObjC
if it is ready to accept data for that disabled track. This causes an ASSERT_NOT_REACHED in
isReadyForMoreData().

However, this seems to be a valid condition; we can safely just return "false" from
isReadyForMoreSamples() (and also bail from notifyClientWhenReadyForMoreSamples()) when asked
about a disabled track.

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

(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):
(WebCore::SourceBufferPrivateAVFObjC::notifyClientWhenReadyForMoreSamples):

12:29 PM Changeset in webkit [209468] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit2

Exiting Element Fullscreen mode loses focus on WKWebView.
https://bugs.webkit.org/show_bug.cgi?id=165512

Reviewed by Eric Carlson.

Setting 'window.contentView.hidden = YES' will reset the first-responder (whereas
previously setting 'window.contentView.layer.hidden = YES' did not). Grab the first-
responder before doing so, so that it can be reset correctly when moving the WKWebView
back to it's original window.

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):

12:25 PM Changeset in webkit [209467] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix CMake build after r209418.
https://bugs.webkit.org/show_bug.cgi?id=165484

  • PlatformMac.cmake:
11:51 AM Changeset in webkit [209466] by hyatt@apple.com
  • 9 edits in trunk/Source/WebCore

[CSS Parser] Eliminate the Scope class and fold it into CSSTokenizer
https://bugs.webkit.org/show_bug.cgi?id=165532

Reviewed by Dean Jackson.

The Scope class, nested inside CSSTokenizer, is both poorly named and serves
no purpose. It's especially weird that it was the entry point into tokenization
instead of CSSTokenizer.

Eliminate the class, fold its members and functions into CSSTokenizer, and have
callers just make a CSSTokenizer instead.

  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseSupportsCondition):
(WebCore::CSSParser::parseSelector):

  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::parseValue):
(WebCore::CSSParserImpl::parseCustomPropertyValue):
(WebCore::CSSParserImpl::parseInlineStyleDeclaration):
(WebCore::CSSParserImpl::parseDeclarationList):
(WebCore::CSSParserImpl::parseRule):
(WebCore::CSSParserImpl::parseStyleSheet):
(WebCore::CSSParserImpl::parseKeyframeKeyList):
(WebCore::CSSParserImpl::parseDeclarationListForInspector):
(WebCore::CSSParserImpl::parseStyleSheetForInspector):

  • css/parser/CSSTokenizer.cpp:

(WebCore::CSSTokenizer::CSSTokenizer):
(WebCore::CSSTokenizer::tokenRange):
(WebCore::CSSTokenizer::tokenCount):
(WebCore::CSSTokenizer::registerString):
(WebCore::CSSTokenizer::Scope::Scope): Deleted.
(WebCore::CSSTokenizer::Scope::tokenRange): Deleted.
(WebCore::CSSTokenizer::Scope::tokenCount): Deleted.

  • css/parser/CSSTokenizer.h:

(WebCore::CSSTokenizer::Scope::storeString): Deleted.

  • css/parser/CSSTokenizerInputStream.cpp:

(WebCore::CSSTokenizerInputStream::CSSTokenizerInputStream):

  • css/parser/CSSTokenizerInputStream.h:
  • css/parser/MediaQueryParser.cpp:

(WebCore::MediaQueryParser::parseMediaQuerySet):

  • css/parser/SizesAttributeParser.cpp:

(WebCore::SizesAttributeParser::SizesAttributeParser):

11:31 AM Changeset in webkit [209465] by commit-queue@webkit.org
  • 27 edits
    2 deletes in trunk

Web Inspector: Remove unused and mostly untested Page domain commands and events
https://bugs.webkit.org/show_bug.cgi?id=165507

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-12-07
Reviewed by Brian Burg.

Source/JavaScriptCore:

Remove unused and unsupported commands and events.

  • Page.setDocumentContent
  • Page.getScriptExecutionStatus
  • Page.setScriptExecutionDisabled
  • Page.handleJavaScriptDialog
  • Page.javascriptDialogOpening
  • Page.javascriptDialogClosed
  • Page.scriptsEnabled
  • inspector/protocol/Page.json:

Source/WebCore:

Remove any code associated with the commands/events being removed.

  • inspector/DOMPatchSupport.cpp:
  • inspector/DOMPatchSupport.h:
  • inspector/InspectorClient.h:

(WebCore::InspectorClient::handleJavaScriptDialog): Deleted.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::scriptsEnabledImpl): Deleted.
(WebCore::InspectorInstrumentation::willRunJavaScriptDialogImpl): Deleted.
(WebCore::InspectorInstrumentation::didRunJavaScriptDialogImpl): Deleted.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::scriptsEnabled): Deleted.
(WebCore::InspectorInstrumentation::willRunJavaScriptDialog): Deleted.
(WebCore::InspectorInstrumentation::didRunJavaScriptDialog): Deleted.

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::disable):
(WebCore::InspectorPageAgent::didClearWindowObjectInWorld):
(WebCore::InspectorPageAgent::didPaint):
(WebCore::InspectorPageAgent::buildObjectForFrame):
(WebCore::InspectorPageAgent::archive):
(WebCore::createXHRTextDecoder): Deleted.
(WebCore::InspectorPageAgent::getScriptExecutionStatus): Deleted.
(WebCore::InspectorPageAgent::setScriptExecutionDisabled): Deleted.
(WebCore::InspectorPageAgent::willRunJavaScriptDialog): Deleted.
(WebCore::InspectorPageAgent::didRunJavaScriptDialog): Deleted.
(WebCore::InspectorPageAgent::scriptsEnabled): Deleted.
(WebCore::InspectorPageAgent::handleJavaScriptDialog): Deleted.

  • inspector/InspectorPageAgent.h:
  • page/Chrome.cpp:

(WebCore::Chrome::runBeforeUnloadConfirmPanel):
(WebCore::Chrome::runJavaScriptAlert):
(WebCore::Chrome::runJavaScriptConfirm):
(WebCore::Chrome::runJavaScriptPrompt):

  • page/Settings.cpp:

(WebCore::Settings::setScriptEnabled):

Source/WebInspectorUI:

  • UserInterface/Protocol/PageObserver.js:

(WebInspector.PageObserver.prototype.javascriptDialogOpening):
(WebInspector.PageObserver.prototype.javascriptDialogClosed):
(WebInspector.PageObserver.prototype.scriptsEnabled):
Keep stub in case legacy backends dispatch the event to the frontend.

  • UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
  • Versions/Inspector-iOS-10.0.json:
  • Versions/Inspector-iOS-7.0.json:
  • Versions/Inspector-iOS-8.0.json:
  • Versions/Inspector-iOS-9.0.json:
  • Versions/Inspector-iOS-9.3.json:

Remove handleJavaScriptDialog command from legacy backends because it
doesn't appear as if the iOS backend handled it at all.

LayoutTests:

  • inspector/page/javascriptDialogEvents-expected.txt: Removed.
  • inspector/page/javascriptDialogEvents.html: Removed.
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:

Remove test skipped by all platforms.

11:30 AM Changeset in webkit [209464] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[pointer-lock] Cursor should become visible when exiting pointer-lock via ESC key.
https://bugs.webkit.org/show_bug.cgi?id=165377

Reviewed by Eric Carlson.

Follow up to previous patch; clear the m_forceCursorVisibleUponUnlock flag upon losing
pointer lock, so that subsequent unlocks don't erroneously cause the cursor to become
visible.

  • page/PointerLockController.cpp:

(WebCore::PointerLockController::didLosePointerLock):

11:21 AM Changeset in webkit [209463] by matthew_hanson@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r209462. rdar://problem/29556990

10:39 AM Changeset in webkit [209462] by ggaren@apple.com
  • 2 edits in trunk/Source/WebCore

performance.now() should truncate to 100us
https://bugs.webkit.org/show_bug.cgi?id=165503
<rdar://problem/29544531>

Reviewed by Mark Lam.

  • page/Performance.cpp:

(WebCore::Performance::reduceTimeResolution):

10:33 AM Changeset in webkit [209461] by hyatt@apple.com
  • 2 edits in trunk/LayoutTests

Fix a bad result that I landed by accident.

  • fast/css/object-position/parsing-object-position-expected.txt:
9:18 AM Changeset in webkit [209460] by hyatt@apple.com
  • 20 edits in trunk

[CSS Parser] Turn back on a bunch of layout tests
https://bugs.webkit.org/show_bug.cgi?id=165529

Reviewed by Zalan Bujtas.

Source/WebCore:

Fixes fast/css/transform-origin-parsing.html.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::consumeTransformOrigin):
The implicit check was relying on a null check of the z value, but
we called releaseNonNull on it already. This meant all z properties were
marked as implicit incorrectly. Fix by storing whether or not we had a z
value in a local variable.

LayoutTests:

  • TestExpectations:
  • css3/parsing-css3-nthchild-expected.txt:
  • css3/parsing-css3-nthchild.html:
  • css3/scroll-snap/scroll-snap-position-values-expected.txt:
  • css3/scroll-snap/scroll-snap-position-values.html:
  • editing/execCommand/insert-list-with-noneditable-content-expected.txt:
  • fast/css/object-position/parsing-object-position-expected.txt:
  • fast/css/object-position/parsing-object-position.html:
  • fast/css/parsing-css-number-types-expected.txt:
  • fast/css/parsing-css-wrap-expected.txt:
  • fast/css/script-tests/transform-origin-parsing.js:
  • fast/css/transform-inline-style-remove-expected.txt:
  • fast/css/transform-origin-parsing-expected.txt:
  • fast/css/variables/custom-property-dynamic-update-expected.html:
  • fast/events/mouse-cursor-expected.txt:
  • fast/inspector-support/style-expected.txt:
  • platform/mac/svg/webarchive/svg-script-subresouces-expected.txt:
8:48 AM Changeset in webkit [209459] by matthew_hanson@apple.com
  • 5 edits in trunk/Source

Versioning.

8:38 AM Changeset in webkit [209458] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.15

New tag.

8:35 AM Changeset in webkit [209457] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline fast/table/003.html after r209421.
https://bugs.webkit.org/show_bug.cgi?id=165513

Unreviewed test gardening.

  • platform/ios-simulator/fast/table/003-expected.txt:
8:27 AM Changeset in webkit [209456] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Remove bitrotted FrameLoader attempt to limit page caching under memory pressure.
<https://webkit.org/b/165527>

Reviewed by Antti Koivisto.

This code no longer does anything, as the page cache is hard capped
at 0 entries while under memory pressure.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::commitProvisionalLoad):

7:32 AM Changeset in webkit [209455] by Yusuke Suzuki
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Merge PromiseReactions
https://bugs.webkit.org/show_bug.cgi?id=165526

Reviewed by Sam Weinig.

Our promise implementation has two arrays per Promise; promiseFulfillReactions and promiseRejectReactions.
And everytime we call promise.then, we create two promise reactions for fullfill and reject.
However, these two reactions and the arrays for reactions can be merged into one array and one reaction.
It reduces the unnecessary object allocations.

No behavior change.

  • builtins/BuiltinNames.h:
  • builtins/PromiseOperations.js:

(globalPrivate.newPromiseReaction):
(globalPrivate.triggerPromiseReactions):
(globalPrivate.rejectPromise):
(globalPrivate.fulfillPromise):
(globalPrivate.promiseReactionJob):
(globalPrivate.initializePromise):

  • builtins/PromisePrototype.js:

(then):

  • runtime/JSPromise.cpp:

(JSC::JSPromise::finishCreation):

5:38 AM Changeset in webkit [209454] by Philippe Normand
  • 2 edits in trunk/Tools

[GTK][jhbuild] missing dependency on libvpx in gst-plugins-good
https://bugs.webkit.org/show_bug.cgi?id=165525

Reviewed by Carlos Garcia Campos.

  • gtk/jhbuild.modules: gst-plugins-good should depend on the

libvpx package built within jhbuild.

3:14 AM Changeset in webkit [209453] by Philippe Normand
  • 3 edits in trunk/Source/WebKit2

Unreviewed, GTK build fix after r209407.

  • Platform/IPC/unix/ConnectionUnix.cpp:

(IPC::Connection::processMessage):

  • UIProcess/LegacySessionStateCodingNone.cpp:

(WebKit::decodeLegacySessionState):

1:15 AM Changeset in webkit [209452] by Philippe Normand
  • 2 edits
    2 adds in trunk/Tools

[GTK][jhbuild] gst-plugins-bad fails to build with OpenSSL 1.1.0
https://bugs.webkit.org/show_bug.cgi?id=165520

Reviewed by Carlos Garcia Campos.

  • gtk/jhbuild.modules: Added missing dependency on openh264 in

gst-plugins-bad, along with 2 upstream patches fixing the build
against OpenSSL 1.1.0.

  • gtk/patches/gst-plugins-bad-0001-dtls-port-to-OpenSSL-1.1.0.patch: Added.
  • gtk/patches/gst-plugins-bad-0002-dtlscertificate-Fix-error-checking-in-RSA_generate_k.patch: Added.
Note: See TracTimeline for information about the timeline view.