WebKit-https.git
2 years agoWeb Inspector: Breakpoint Log action should support template literals
mattbaker@apple.com [Mon, 12 Dec 2016 11:11:59 +0000 (11:11 +0000)]
Web Inspector: Breakpoint Log action should support template literals
https://bugs.webkit.org/show_bug.cgi?id=165116
<rdar://problem/29464765>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
New string "${expr} = expression" for breakpoint popover.

* UserInterface/Controllers/BreakpointLogMessageLexer.js: Added.
To support template literal placeholders in message text, it is necessary
to distinguish plain text parts of the message from placeholders, since
plain text must be escaped.

(WebInspector.BreakpointLogMessageLexer):
(WebInspector.BreakpointLogMessageLexer.prototype.tokenize):
(WebInspector.BreakpointLogMessageLexer.prototype.reset):
(WebInspector.BreakpointLogMessageLexer.prototype._finishPlainText):
(WebInspector.BreakpointLogMessageLexer.prototype._finishExpression):
(WebInspector.BreakpointLogMessageLexer.prototype._appendToken):
(WebInspector.BreakpointLogMessageLexer.prototype._consume):
(WebInspector.BreakpointLogMessageLexer.prototype._peek):
(WebInspector.BreakpointLogMessageLexer.prototype._expression):
(WebInspector.BreakpointLogMessageLexer.prototype._plainText):
(WebInspector.BreakpointLogMessageLexer.prototype._possiblePlaceholder):
(WebInspector.BreakpointLogMessageLexer.prototype._regExpOrStringLiteral):

* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype._debuggerBreakpointOptions):
Build breakpoint "options" object for DebuggerAgent. If a Log action
contains template literal placeholders it is changed to an Evaluate
action, which calls console.log with a template literal.

(WebInspector.DebuggerManager.prototype._setBreakpoint):
Use converted breakpoint options.

* UserInterface/Main.html:
* UserInterface/Test.html:
New file.

* UserInterface/Views/BreakpointActionView.css:
(.breakpoint-action-block-body > .description):
Styles for breakpoint Log action hint text.

* UserInterface/Views/BreakpointActionView.js:
(WebInspector.BreakpointActionView.prototype._updateBody):
Add Log action hint text element.

LayoutTests:

* inspector/debugger/breakpoint-action-log-expected.txt: Added.
* inspector/debugger/breakpoint-action-log.html: Added.
Check that breakpoint log actions support template literal placeholders.

* inspector/unit-tests/breakpoint-log-message-lexer-expected.txt: Added.
* inspector/unit-tests/breakpoint-log-message-lexer.html: Added.
Check that the lexer correctly scans breakpoint log action text.

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

2 years agoUnreviewed. Fixing build breakage in GStreamer's WebKitCommonEncryptionDecryptorGStre...
zandobersek@gmail.com [Mon, 12 Dec 2016 09:10:07 +0000 (09:10 +0000)]
Unreviewed. Fixing build breakage in GStreamer's WebKitCommonEncryptionDecryptorGStreamer.

* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(webkitMediaCommonEncryptionDecryptTransformInPlace):
WTF::Seconds should be used instead of std::chrono::seconds.

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

2 years agoUnreviewed, rolling out r209703.
annulen@yandex.ru [Mon, 12 Dec 2016 08:32:01 +0000 (08:32 +0000)]
Unreviewed, rolling out r209703.
https://bugs.webkit.org/show_bug.cgi?id=165749

Broke Apple builds (Requested by annulen|home on #webkit).

Reverted changeset:

"Unreviewed, use WTF_ATTRIBUTE_PRINTF instead of clang pragma"
http://trac.webkit.org/changeset/209703

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

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

2 years agoUnreviewed, use WTF_ATTRIBUTE_PRINTF instead of clang pragma
annulen@yandex.ru [Mon, 12 Dec 2016 08:14:58 +0000 (08:14 +0000)]
Unreviewed, use WTF_ATTRIBUTE_PRINTF instead of clang pragma

* wtf/PrintStream.cpp:
(WTF::PrintStream::printfVariableFormat):
* wtf/PrintStream.h:

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

2 years agoUnreviewed. Try to fix the linux build.
sbarati@apple.com [Mon, 12 Dec 2016 07:44:40 +0000 (07:44 +0000)]
Unreviewed. Try to fix the linux build.

* runtime/StackFrame.h:

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

2 years agoUnreviewed, guarded clang pragma with COMPILER(CLANG) to fix -Werror
annulen@yandex.ru [Mon, 12 Dec 2016 07:20:49 +0000 (07:20 +0000)]
Unreviewed, guarded clang pragma with COMPILER(CLANG) to fix -Werror

* wtf/PrintStream.cpp:
(WTF::PrintStream::printfVariableFormat):

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

2 years agoUnreviewed attempt to fix EFL and Mac/cmake builds after r209665.
annulen@yandex.ru [Mon, 12 Dec 2016 07:13:26 +0000 (07:13 +0000)]
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.

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

2 years ago[CSS Parser] Make sure content extensions initialize AtomicString
hyatt@apple.com [Mon, 12 Dec 2016 06:39:39 +0000 (06:39 +0000)]
[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):

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

2 years agoWeb Inspector: ThreadTreeElement should have a "Resume" status button when paused
mattbaker@apple.com [Mon, 12 Dec 2016 04:59:18 +0000 (04:59 +0000)]
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):

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

2 years agoREGRESSION (r200283): Transform, overflow hidden and filter combination completely...
simon.fraser@apple.com [Mon, 12 Dec 2016 04:58:02 +0000 (04:58 +0000)]
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.

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

2 years agoWe should be able to throw exceptions from Wasm code and when Wasm frames are on...
sbarati@apple.com [Mon, 12 Dec 2016 03:11:18 +0000 (03:11 +0000)]
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()):

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

2 years agoRemove uses of Dictionary in WebRTC IDL files
darin@apple.com [Mon, 12 Dec 2016 02:50:06 +0000 (02:50 +0000)]
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.

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

2 years agoRe-enable concurrent GC.
fpizlo@apple.com [Mon, 12 Dec 2016 01:41:16 +0000 (01:41 +0000)]
Re-enable concurrent GC.

Rubber stampted by Saam Barati.

This change actually landed in r209692 by accident.

* runtime/Options.h:

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

2 years agoChange to use #pragma once (requested by Darin Adler).
fpizlo@apple.com [Mon, 12 Dec 2016 01:39:04 +0000 (01:39 +0000)]
Change to use #pragma once (requested by Darin Adler).

* wtf/RecursiveLockAdapter.h:

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

2 years agoChange to use #pragma once (requested by Darin Adler).
fpizlo@apple.com [Mon, 12 Dec 2016 01:34:07 +0000 (01:34 +0000)]
Change to use #pragma once (requested by Darin Adler).

* wtf/LockedPrintStream.h:

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

2 years agoMarkedBlock::marksConveyLivenessDuringMarking should take into account collection...
fpizlo@apple.com [Mon, 12 Dec 2016 01:19:47 +0000 (01:19 +0000)]
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:

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

2 years agoQuarter-second stalls scrolling images that are links because of sync getPositionInfo...
timothy_horton@apple.com [Mon, 12 Dec 2016 01:10:00 +0000 (01:10 +0000)]
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.

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

2 years agoUse std::vsnprintf instead of vasprintf
darin@apple.com [Mon, 12 Dec 2016 00:57:02 +0000 (00:57 +0000)]
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.

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

2 years agoMake some refinements to HTMLPlugInImageElement
darin@apple.com [Mon, 12 Dec 2016 00:56:25 +0000 (00:56 +0000)]
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.

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

2 years agoWeb Inspector: Cleanup some InspectorInstrumentation network loading notifications
commit-queue@webkit.org [Sun, 11 Dec 2016 23:40:15 +0000 (23:40 +0000)]
Web Inspector: Cleanup some InspectorInstrumentation network loading notifications
https://bugs.webkit.org/show_bug.cgi?id=165688

Patch by Joseph Pecoraro <pecoraro@apple.com> 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):

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

2 years agoWeb Inspector: Move MainTarget and WorkerTarget to their own files
commit-queue@webkit.org [Sun, 11 Dec 2016 23:37:11 +0000 (23:37 +0000)]
Web Inspector: Move MainTarget and WorkerTarget to their own files
https://bugs.webkit.org/show_bug.cgi?id=165701

Patch by Joseph Pecoraro <pecoraro@apple.com> 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:

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

2 years ago[MediaStream] Protect MediaDevicesRequest during callback
eric.carlson@apple.com [Sun, 11 Dec 2016 22:08:05 +0000 (22:08 +0000)]
[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.

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

2 years ago[WebCrypto] Add tests for wrap/unwrap SPKI/PKCS8 keys
jiewen_tan@apple.com [Sun, 11 Dec 2016 22:00:17 +0000 (22:00 +0000)]
[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.

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

2 years agoThe DOM should have an advancing wavefront opaque root barrier
fpizlo@apple.com [Sun, 11 Dec 2016 18:19:22 +0000 (18:19 +0000)]
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):

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

2 years ago[Cocoa] NSAttributedString representation of text copied from -webkit-nbsp-mode:space...
mitz@apple.com [Sun, 11 Dec 2016 18:10:03 +0000 (18:10 +0000)]
[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.

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

2 years agoUnreviewed build fix for EFL after r209665
annulen@yandex.ru [Sun, 11 Dec 2016 12:48:46 +0000 (12:48 +0000)]
Unreviewed build fix for EFL after r209665

* UIProcess/efl/TextCheckerClientEfl.h:

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

2 years agoUnreviewed, add KHR include dir to fix ANGLE build after r209665
annulen@yandex.ru [Sun, 11 Dec 2016 11:11:57 +0000 (11:11 +0000)]
Unreviewed, add KHR include dir to fix ANGLE build after r209665
https://bugs.webkit.org/show_bug.cgi?id=165686

* CMakeLists.txt:

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

2 years agoRolling out 165737, since it broke layout tests. I need to find a
hyatt@apple.com [Sun, 11 Dec 2016 05:14:54 +0000 (05:14 +0000)]
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):

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

2 years agoUnreviewed, rolling out r209653, r209654, r209663, and
commit-queue@webkit.org [Sun, 11 Dec 2016 01:14:37 +0000 (01:14 +0000)]
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

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

2 years agoSupport the deprecated dictionary constructor for DOMPointReadOnly and DOMPoint
simon.fraser@apple.com [Sun, 11 Dec 2016 00:04:30 +0000 (00:04 +0000)]
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:

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

2 years ago[CSS Parser] Make sure content extensions initialize AtomicString
hyatt@apple.com [Sat, 10 Dec 2016 23:36:59 +0000 (23:36 +0000)]
[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):

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

2 years agoAnimation followed by transition doesn't always fire transitionend event
simon.fraser@apple.com [Sat, 10 Dec 2016 22:29:24 +0000 (22:29 +0000)]
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.

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

2 years ago[WebIDL] Merge JSDictionary into Dictionary, and remove unused bits
weinig@apple.com [Sat, 10 Dec 2016 22:13:58 +0000 (22:13 +0000)]
[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

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

2 years agoREGRESSION(r209653) Crash in CallFrameShuffler::snapshot()
msaboff@apple.com [Sat, 10 Dec 2016 21:04:05 +0000 (21:04 +0000)]
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):

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

2 years agoMore IndexedDB perf tests.
beidson@apple.com [Sat, 10 Dec 2016 20:44:50 +0000 (20:44 +0000)]
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.

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

2 years ago[CSS Parser] Move CSSParserValues.h/.cpp to CSSParserSelector.h/.cpp
hyatt@apple.com [Sat, 10 Dec 2016 20:38:50 +0000 (20:38 +0000)]
[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:

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

2 years ago[CSS Parser] Remove the pseudoclass/element hacks
hyatt@apple.com [Sat, 10 Dec 2016 20:22:37 +0000 (20:22 +0000)]
[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):

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

2 years ago[WebIDL] Remove custom bindings for Geolocation
weinig@apple.com [Sat, 10 Dec 2016 19:36:08 +0000 (19:36 +0000)]
[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.

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

2 years agoFix indirect_call if the result type is used.
keith_miller@apple.com [Sat, 10 Dec 2016 19:14:51 +0000 (19:14 +0000)]
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):

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

2 years agoUnreviewed attempt to fix cmake build of Mac port after r209665.
annulen@yandex.ru [Sat, 10 Dec 2016 18:32:45 +0000 (18:32 +0000)]
Unreviewed attempt to fix cmake build of Mac port after r209665.

* PlatformMac.cmake: Avoid using relative path in
WebKit_INCLUDE_DIRECTORIES.

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

2 years ago[CSS Parser] Remove the old CSS Parser
hyatt@apple.com [Sat, 10 Dec 2016 18:31:13 +0000 (18:31 +0000)]
[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:

* TestExpectations:
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.

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

2 years ago[cmake] Include WTF, JSC, and WebCore headers automatically to targers using them
annulen@yandex.ru [Sat, 10 Dec 2016 18:16:04 +0000 (18:16 +0000)]
[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:

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

2 years agoAvoid calling shrink() in the Vector destructor
cdumez@apple.com [Sat, 10 Dec 2016 18:04:09 +0000 (18:04 +0000)]
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):

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

2 years agoUnreviewed build fix for the CLOOP after r209653
msaboff@apple.com [Sat, 10 Dec 2016 14:13:10 +0000 (14:13 +0000)]
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.

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

2 years ago[JSC] Module namespace object behaves like immutable prototype exotic object
utatane.tea@gmail.com [Sat, 10 Dec 2016 11:56:30 +0000 (11:56 +0000)]
[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:

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

2 years agoReplace isUnclosedNode by isClosedShadowHidden
rniwa@webkit.org [Sat, 10 Dec 2016 10:19:00 +0000 (10:19 +0000)]
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:

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

2 years agoCrashTracer: com.apple.WebKit.Networking at WTF::ThreadSafeRefCounted<WebKit::Network...
antti@apple.com [Sat, 10 Dec 2016 10:00:33 +0000 (10:00 +0000)]
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.

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

2 years agoCrashTracer: com.apple.WebKit.WebContent.Development at com.apple.WebCore: WTF::match...
antti@apple.com [Sat, 10 Dec 2016 09:58:06 +0000 (09:58 +0000)]
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.

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

2 years agoREGRESSION(r208791): Assertion in testb3
utatane.tea@gmail.com [Sat, 10 Dec 2016 09:29:08 +0000 (09:29 +0000)]
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):

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

2 years ago[WebCrypto] RSA algorithms should allow importing keys without usages
jiewen_tan@apple.com [Sat, 10 Dec 2016 08:57:42 +0000 (08:57 +0000)]
[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.

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

2 years agoAdd STIX Two Math to the list of math fonts in mathml.css
fred.wang@free.fr [Sat, 10 Dec 2016 08:43:46 +0000 (08:43 +0000)]
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):

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

2 years agoUnreviewed buildfix after r209630.
ossy@webkit.org [Sat, 10 Dec 2016 08:04:53 +0000 (08:04 +0000)]
Unreviewed buildfix after r209630.

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

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

2 years agoUnreviewed build fix for 32 bit builds.
msaboff@apple.com [Sat, 10 Dec 2016 07:43:50 +0000 (07:43 +0000)]
Unreviewed build fix for 32 bit builds.

* dfg/DFGMinifiedNode.h:
(JSC::DFG::MinifiedNode::argumentIndex): Added a static_cast<unsigned>().

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

2 years agoJSVALUE64: Pass arguments in platform argument registers when making JavaScript calls
msaboff@apple.com [Sat, 10 Dec 2016 07:32:38 +0000 (07:32 +0000)]
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

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

2 years agoWasm should support call_indirect
keith_miller@apple.com [Sat, 10 Dec 2016 07:12:53 +0000 (07:12 +0000)]
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):

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

2 years agoWebAssembly: implement data section
jfbastien@apple.com [Sat, 10 Dec 2016 07:08:31 +0000 (07:08 +0000)]
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

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

2 years agoIt is okay to turn undefined into null because we are producing values for a
commit-queue@webkit.org [Sat, 10 Dec 2016 06:04:28 +0000 (06:04 +0000)]
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):

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

2 years ago[Readable Streams API] Implement ReadableByteStreamController desiredSize
commit-queue@webkit.org [Sat, 10 Dec 2016 05:56:13 +0000 (05:56 +0000)]
[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.

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

2 years agodocument.pointerLockElement exposes a node inside a shadow tree
rniwa@webkit.org [Sat, 10 Dec 2016 05:18:33 +0000 (05:18 +0000)]
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:

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

2 years agoREGRESSION (r209554-209571): stress/poly-setter-combo crashing
fpizlo@apple.com [Sat, 10 Dec 2016 04:27:26 +0000 (04:27 +0000)]
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):

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

2 years agoWebCore::Timer is not compatible with UIProcess
bfulgham@apple.com [Sat, 10 Dec 2016 03:25:40 +0000 (03:25 +0000)]
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):

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

2 years agoIgnore LayoutTests/imported/w3c/web-platform-tests/config.json
commit-queue@webkit.org [Sat, 10 Dec 2016 03:07:01 +0000 (03:07 +0000)]
Ignore LayoutTests/imported/w3c/web-platform-tests/config.json
https://bugs.webkit.org/show_bug.cgi?id=165685

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-12-09
Reviewed by Ryosuke Niwa.

* web-platform-tests/.gitignore:
Ignore generated user-specific config.json file.

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

2 years agoAdd reflected nonce attribute to HTML Link element IDL
dbates@webkit.org [Sat, 10 Dec 2016 02:53:40 +0000 (02:53 +0000)]
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.

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

2 years agoAnnotate MediaStream and WebRTC idl with EnabledAtRuntime flag
eric.carlson@apple.com [Sat, 10 Dec 2016 02:46:31 +0000 (02:46 +0000)]
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 <agouaillard@gmail.com>
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:

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

2 years agoWebAssembly JS API: implement start function
jfbastien@apple.com [Sat, 10 Dec 2016 02:34:02 +0000 (02:34 +0000)]
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:

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

2 years agoRemove QuickLook scheme from the list of secure schemes
dbates@webkit.org [Sat, 10 Dec 2016 02:03:45 +0000 (02:03 +0000)]
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):

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

2 years agoRe-landing:
beidson@apple.com [Sat, 10 Dec 2016 01:25:53 +0000 (01:25 +0000)]
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:]):

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

2 years agoFix initialization of contentUpdateFrequency
simon.fraser@apple.com [Sat, 10 Dec 2016 01:24:59 +0000 (01:24 +0000)]
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]):

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

2 years agoGC might be forced to look at a nuked object due to ordering of AllocatePropertyStora...
fpizlo@apple.com [Sat, 10 Dec 2016 01:22:15 +0000 (01:22 +0000)]
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.

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

2 years agoDon’t expose pointer lock in WebKit1 Objective-C API
rniwa@webkit.org [Sat, 10 Dec 2016 00:06:10 +0000 (00:06 +0000)]
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.

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

2 years agoInline JSCell::toObject()
cdumez@apple.com [Fri, 9 Dec 2016 23:37:00 +0000 (23:37 +0000)]
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):

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

2 years agoOnce we can send Mach messages again, make sure to send any pending outgoing messages
andersca@apple.com [Fri, 9 Dec 2016 23:30:43 +0000 (23:30 +0000)]
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):

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

2 years agoMarking inspector/debugger/csp-exceptions.html as flaky on mac-wk2.
ryanhaddad@apple.com [Fri, 9 Dec 2016 23:22:31 +0000 (23:22 +0000)]
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:

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

2 years ago[Part 2 of 2] Add support for PKCS8 format while doing SubtleCrypto.importKey/exportKey
jiewen_tan@apple.com [Fri, 9 Dec 2016 23:05:29 +0000 (23:05 +0000)]
[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.

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

2 years agoDeploy OrdinalNumber in JSC::SourceCode
ggaren@apple.com [Fri, 9 Dec 2016 22:59:52 +0000 (22:59 +0000)]
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 >.

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

2 years agoWeb Inspector: Frontend should not be resetting TypeProfiler state when switching...
commit-queue@webkit.org [Fri, 9 Dec 2016 22:43:54 +0000 (22:43 +0000)]
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 <pecoraro@apple.com> 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.

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

2 years agoWebAssembly JS API: implement importing and defining Memory
sbarati@apple.com [Fri, 9 Dec 2016 22:38:39 +0000 (22:38 +0000)]
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.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* jsc.cpp:
(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):

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

2 years agoWeb Inspector: Some resources fetched via Fetch API do not have data
joepeck@webkit.org [Fri, 9 Dec 2016 22:12:08 +0000 (22:12 +0000)]
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.

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

2 years agodocument.webkitFullscreenElement leaks elements inside a shadow tree
rniwa@webkit.org [Fri, 9 Dec 2016 22:06:29 +0000 (22:06 +0000)]
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.

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

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

2 years agoTextPosition and OrdinalNumber should be more like idiomatic numbers
ggaren@apple.com [Fri, 9 Dec 2016 22:04:14 +0000 (22:04 +0000)]
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.

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

2 years agoPassword fields should not show the emoji button in TouchBar
bdakin@apple.com [Fri, 9 Dec 2016 22:00:28 +0000 (22:00 +0000)]
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):

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

2 years agoFix string specification in print format
krollin@apple.com [Fri, 9 Dec 2016 21:59:21 +0000 (21:59 +0000)]
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):

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

2 years agoWebView doesn't become first responder in element fullscreen.
commit-queue@webkit.org [Fri, 9 Dec 2016 20:54:16 +0000 (20:54 +0000)]
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:]):

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

2 years agoUnreviewed, disable concurrent GC for real.
fpizlo@apple.com [Fri, 9 Dec 2016 19:49:50 +0000 (19:49 +0000)]
Unreviewed, disable concurrent GC for real.

* runtime/Options.cpp:
(JSC::recomputeDependentOptions):

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

2 years agoUnreviewed, disable concurrent GC while crashes get investigated.
fpizlo@apple.com [Fri, 9 Dec 2016 19:49:07 +0000 (19:49 +0000)]
Unreviewed, disable concurrent GC while crashes get investigated.

* runtime/Options.cpp:
(JSC::recomputeDependentOptions):

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

2 years agoJSSegmentedVariableObject should keep its state private
fpizlo@apple.com [Fri, 9 Dec 2016 19:48:12 +0000 (19:48 +0000)]
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:

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

2 years ago[Cocoa] Validation message for required checkbox doesn’t conform the the Apple Style...
cdumez@apple.com [Fri, 9 Dec 2016 19:42:43 +0000 (19:42 +0000)]
[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:

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

2 years agoUnreviewed, followup after r209598.
jiewen_tan@apple.com [Fri, 9 Dec 2016 19:41:53 +0000 (19:41 +0000)]
Unreviewed, followup after r209598.

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

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

2 years agoMoved OrdinalNumber into its own file
ggaren@apple.com [Fri, 9 Dec 2016 19:22:44 +0000 (19:22 +0000)]
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.

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

2 years agoASSERTION FAILED: !beforeChild->isRubyRun() in WebCore::RenderRubyAsBlock::addChild
zalan@apple.com [Fri, 9 Dec 2016 18:50:34 +0000 (18:50 +0000)]
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.

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

2 years agoFix the 32-bit build.
ryanhaddad@apple.com [Fri, 9 Dec 2016 18:29:42 +0000 (18:29 +0000)]
Fix the 32-bit build.

Unreviewed build fix.

* MiniBrowser/mac/SettingsController.h:

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

2 years ago[Modern Media Controls] Implement the pageScaleFactor property
graouts@webkit.org [Fri, 9 Dec 2016 18:28:21 +0000 (18:28 +0000)]
[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.

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

2 years agoAttempt to fix the Mac CMake build following <http://trac.webkit.org/changeset/209549>
dbates@webkit.org [Fri, 9 Dec 2016 18:27:50 +0000 (18:27 +0000)]
Attempt to fix the Mac CMake build following <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:

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

2 years agoLinkIconCollector refactoring.
beidson@apple.com [Fri, 9 Dec 2016 18:21:30 +0000 (18:21 +0000)]
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.

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

2 years agoUnreviewed, rolling out r209574.
ryanhaddad@apple.com [Fri, 9 Dec 2016 18:12:31 +0000 (18:12 +0000)]
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

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

2 years agoFedora also needs a PHP7 config file alternative
commit-queue@webkit.org [Fri, 9 Dec 2016 17:57:39 +0000 (17:57 +0000)]
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.

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

2 years agoCustom Elements from a different document are not customized when created with innerHTML
rniwa@webkit.org [Fri, 9 Dec 2016 17:54:56 +0000 (17:54 +0000)]
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.

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

2 years agoComplete the revert of r208865.
ryanhaddad@apple.com [Fri, 9 Dec 2016 17:45:29 +0000 (17:45 +0000)]
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.

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

2 years ago[CSP] Policy of window opener not applied to about:blank window
dbates@webkit.org [Fri, 9 Dec 2016 17:27:25 +0000 (17:27 +0000)]
[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.

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

2 years ago[Modern Media Controls] Remaining time label first appears way to the left
graouts@webkit.org [Fri, 9 Dec 2016 15:31:24 +0000 (15:31 +0000)]
[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.

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