Timeline



Sep 23, 2016:

6:38 PM Changeset in webkit [206350] by Wenson Hsieh
  • 15 edits in trunk/Source

Media controls playhead does not animate smoothly while playing
https://bugs.webkit.org/show_bug.cgi?id=162399
<rdar://problem/28115680>

Reviewed by Beth Dakin.

Source/WebCore:

The media controls playhead currently does not animate smoothly during playback because we don't specify a
playback rate when updating the WebPlaybackControlsManager's timing value. However, simply setting this timing
value to the current playback rate (as known to the UI process) results in the UI process receiving multiple
updates from the web process where the current time is equal (or even less than) the time at which media began
to play, which results in the playhead seeking backwards to the start time multiple times when playing or
resuming media.

To address this, in WebCore, we inform the playback session model of the media time when playback begins (i.e.
a playing or play event is fired). This message precedes both the "rate changed" and "current time changed"
messages.

Unit tests to be added in a future patch.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::notifyAboutPlaying):
(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::playInternal):

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::playbackStartedTime):

  • platform/cocoa/WebPlaybackSessionModel.h:

(WebCore::WebPlaybackSessionModelClient::playbackStartedTimeChanged):
(WebCore::WebPlaybackSessionModelClient::bufferedTimeChanged): Deleted.

  • platform/cocoa/WebPlaybackSessionModelMediaElement.h:
  • platform/cocoa/WebPlaybackSessionModelMediaElement.mm:

(WebPlaybackSessionModelMediaElement::updateForEventName):
(WebPlaybackSessionModelMediaElement::playbackStartedTime):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:
  • platform/mac/WebPlaybackSessionInterfaceMac.h:
  • platform/mac/WebPlaybackSessionInterfaceMac.mm:

(WebCore::WebPlaybackSessionInterfaceMac::currentTimeChanged):
(WebCore::WebPlaybackSessionInterfaceMac::rateChanged):
(WebCore::WebPlaybackSessionInterfaceMac::beginScrubbing):
(WebCore::WebPlaybackSessionInterfaceMac::endScrubbing):
(WebCore::WebPlaybackSessionInterfaceMac::updatePlaybackControlsManagerTiming):

Source/WebKit2:

See WebCore ChangeLog for more details.

In the UI process, we update the WebPlaybackSessionManager's timing value when the rate or current time changes.
Each AVValueTiming is generated from the current time, system anchor time, and playback rate. The behavior of
the first two properties is unaffected. However, the rate used to update the timing value is the effective
playback rate, which is equal to the playback rate unless we are (1) not playing, (2) interacting with the media
controls in such a way that the media is essentially not playing, or (3) the current time precedes the playback
start time, accounting for playback direction. In these cases, our effective playback rate is 0, which means
that we do not animate the playhead.

  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:

(WebKit::WebPlaybackSessionModelContext::beginScrubbing):
(WebKit::WebPlaybackSessionModelContext::endScrubbing):
(WebKit::WebPlaybackSessionModelContext::setPlaybackStartedTime):
(WebKit::WebPlaybackSessionModelContext::setCurrentTime):
(WebKit::WebPlaybackSessionManagerProxy::setPlaybackStartedTime):

  • WebProcess/cocoa/WebPlaybackSessionManager.h:
  • WebProcess/cocoa/WebPlaybackSessionManager.mm:

(WebKit::WebPlaybackSessionInterfaceContext::playbackStartedTimeChanged):
(WebKit::WebPlaybackSessionManager::playbackStartedTimeChanged):

6:18 PM Changeset in webkit [206349] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206322. rdar://problem/28435352

6:18 PM Changeset in webkit [206348] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r204082. rdar://problem/27547583

6:18 PM Changeset in webkit [206347] by bshafiei@apple.com
  • 19 edits
    2 adds in branches/safari-602-branch

Merge r203982. rdar://problem/27547583

6:17 PM Changeset in webkit [206346] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source

Versioning.

5:51 PM Changeset in webkit [206345] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.13

New tag.

5:47 PM Changeset in webkit [206344] by fpizlo@apple.com
  • 21 edits
    1 add in trunk/Source

Need a store-load fence between setting cell state and visiting the object in SlotVisitor
https://bugs.webkit.org/show_bug.cgi?id=162354

Reviewed by Mark Lam.

Source/JavaScriptCore:

This was meant to be a small change, but then it became bigger as I found small
opportunities for improving this code. This adds a store-load fence and is performance-
neutral. That's probably partly due to other optimizations that I did to visitChildren().

Initially, I found that adding an mfence as a store-load fence was terribly expensive. So,
I thought that I needed to buffer up a bunch of objects, set their states, do one mfence,
and then visit all of them. This seemed like a win, so I went with it. Unfortunately, this
made no sense for two reasons:

  • I shouldn't use mfence. I should use ortop (lock orl $0, (%rsp)) instead. Ortop is basically free, and it's what WTF now uses for storeLoadFence().


  • My data saying that buffering up objects was not a slow-down was wrong. That was actually almost as expensive as the mfence.


But in order to implement that, I made some other improvements that I think we should stick
with:

  • SlotVisitor::visitChildren() now uses a switch on type. This replaces what used to be some nasty ClassInfo look-ups.


  • We no longer save the object's old CellState. We would do that so that we would know what state the object had been before we blackened it. But I believe that the more logical solution is to have two kinds of black - one for black-for-the-first-time objects and one for repeat offenders. This is a lot easier to reason about, since you can now just figure this out by looking at the cell directly.


The latter change meant rewiring a bunch of barriers. It didn't make them any more
expensive.

Relanding after fixing a nasty build failure in cloop and elsewhere.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/AbstractMacroAssembler.h:

(JSC::isARMv7IDIVSupported): Deleted.
(JSC::isARM64): Deleted.
(JSC::isX86): Deleted.
(JSC::isX86_64): Deleted.
(JSC::optimizeForARMv7IDIVSupported): Deleted.
(JSC::optimizeForARM64): Deleted.
(JSC::optimizeForX86): Deleted.
(JSC::optimizeForX86_64): Deleted.

  • assembler/CPU.h: Added.

(JSC::isARMv7IDIVSupported):
(JSC::isARM64):
(JSC::isX86):
(JSC::isX86_64):
(JSC::optimizeForARMv7IDIVSupported):
(JSC::optimizeForARM64):
(JSC::optimizeForX86):
(JSC::optimizeForX86_64):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier):

  • heap/CellState.h:

(JSC::isBlack):
(JSC::blacken):

  • heap/Heap.cpp:

(JSC::Heap::addToRememberedSet):

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

(JSC::Heap::writeBarrier):
(JSC::Heap::reportExtraMemoryVisited):
(JSC::Heap::reportExternalMemoryVisited):

  • heap/MarkStack.cpp:
  • heap/MarkStack.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::visitChildren):

  • heap/SlotVisitor.h:
  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::reportExtraMemoryVisited):
(JSC::SlotVisitor::reportExternalMemoryVisited):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::jumpIfIsRememberedOrInEden):

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSObject.h:

(JSC::isJSFinalObject):

Source/WTF:

Fix this on x86-32.

  • wtf/Atomics.h:

(WTF::x86_ortop):

5:45 PM Changeset in webkit [206343] by Alan Bujtas
  • 3 edits
    2 adds in trunk
ASSERTION FAILED: !newRelayoutRoot.container()
is<RenderView>(newRelayoutRoot.container()) !newRelayoutRoot.container()->needsLayout() while loading sohu.com

https://bugs.webkit.org/show_bug.cgi?id=162466

Reviewed by Simon Fraser.

Source/WebCore:

When we come across a out-of-flow positioned renderer during layout, we add it to a tracker map with
its containing block (calling RenderBlock::insertPositionedObject).
It ensures that a containing block can easily access to the out-of-flow positioned descendants during layout/painting/hittesting.
We do it even when the containing block - positioned renderer pair is already in this tracker map.
RenderBlock::insertPositionedObject() eagerly sets the positioned-child-needs-layout flag on the containing block
assuming it needs to layout this descendant later in the layout phase.
This patch ensure that we only flag the containing block dirty when the descendant needs layout.

Test: fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block.html

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::insertPositionedObject):

LayoutTests:

  • fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block-expected.txt: Added.
  • fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block.html: Added.
5:26 PM Changeset in webkit [206342] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Remove debug flag for flaky test js/regress-139548.html.
https://bugs.webkit.org/show_bug.cgi?id=160017

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:21 PM Changeset in webkit [206341] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Update TestExpectations to mark media/controls/inline-elements-dropoff-order.html as failing on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=162494

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:17 PM Changeset in webkit [206340] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking imported/w3c/web-platform-tests/media-source/mediasource-preload.html as flaky on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=162523

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:07 PM Changeset in webkit [206339] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Fix typo in event name
https://bugs.webkit.org/show_bug.cgi?id=162519

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-23
Reviewed by Matt Baker.

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:
4:57 PM Changeset in webkit [206338] by Yusuke Suzuki
  • 14 edits in trunk/Source/WebCore

[Binding] Use unchekcedArgument if argumentCount is already checked
https://bugs.webkit.org/show_bug.cgi?id=162502

Reviewed by Geoffrey Garen.

It is not necessary to use exec->argument(n) after checking the argument exists.
This patch changes argument(n) to uncheckedArgument(n) if we already proved that
the argument exists. This change drops branches generated by exec->argument(n).
And it is good for small DOM operations in which DOM binding code occupies large
part of entire processing. This patch and another small patch[1] offer roughly 5%
improvement in Dromaeo dom-attr's getAttribute and setAttribute tests.

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

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateParametersCheck): GenerateParameterCheck requires GenerateArgumentsCountCheck.
As a result, existence of mandatory arguments are already checked. We can use uncheckedArgument(n)
for mandatory arguments.

  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:

(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunction):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessage):

  • bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:

(WebCore::jsTestCustomNamedGetterPrototypeFunctionAnotherFunction):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::jsTestEventTargetPrototypeFunctionItem):

  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::jsTestGlobalObjectInstanceFunctionRegularOperation):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation1):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation2):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterfaceConstructor::construct):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:

(WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethod):

  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:

(WebCore::JSTestNamedConstructorNamedConstructor::construct):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObjConstructor::construct):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation1):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation2):
(WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionByteMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionOctetMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionLongMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionObjMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameter):
(WebCore::jsTestObjPrototypeFunctionNullableStringSpecialMethod):
(WebCore::jsTestObjPrototypeFunctionMethodWithEnumArg):
(WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNullableUSVStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyString):
(WebCore::jsTestObjPrototypeFunctionSerializedValue):
(WebCore::jsTestObjPrototypeFunctionOptionsObject):
(WebCore::jsTestObjPrototypeFunctionPrivateMethod):
(WebCore::jsTestObjPrototypeFunctionPublicAndPrivateMethod):
(WebCore::jsTestObjPrototypeFunctionAddEventListener):
(WebCore::jsTestObjPrototypeFunctionRemoveEventListener):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod1):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod2):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod3):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod4):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod5):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod6):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod7):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod8):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod9):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod10):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod11):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod11):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod12):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithClamp):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRange):
(WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongSequence):
(WebCore::jsTestObjPrototypeFunctionStringArrayFunction):
(WebCore::jsTestObjPrototypeFunctionDomStringListFunction):
(WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence):
(WebCore::jsTestObjPrototypeFunctionGetElementById):
(WebCore::jsTestObjPrototypeFunctionConvert1):
(WebCore::jsTestObjPrototypeFunctionConvert2):
(WebCore::jsTestObjPrototypeFunctionConvert3):
(WebCore::jsTestObjPrototypeFunctionConvert4):
(WebCore::jsTestObjPrototypeFunctionVariadicStringMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicNodeMethod):
(WebCore::jsTestObjPrototypeFunctionAny):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload1):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload2):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload1):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload2):
(WebCore::jsTestObjPrototypeFunctionAttachShadowRoot):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

(WebCore::constructJSTestOverloadedConstructors1):
(WebCore::constructJSTestOverloadedConstructors2):
(WebCore::constructJSTestOverloadedConstructors3):
(WebCore::constructJSTestOverloadedConstructors4):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:

(WebCore::constructJSTestOverloadedConstructorsWithSequence2):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:

(WebCore::jsTestOverrideBuiltinsPrototypeFunctionNamedItem):

  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::JSTestTypedefsConstructor::construct):
(WebCore::jsTestTypedefsPrototypeFunctionSetShadow):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithSequenceArg):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceArg):
(WebCore::jsTestTypedefsPrototypeFunctionFuncWithClamp):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction2):
(WebCore::jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresInclude):

4:40 PM Changeset in webkit [206337] by achristensen@apple.com
  • 3 edits in trunk/Source/WebCore

Refactor URLParser
https://bugs.webkit.org/show_bug.cgi?id=162518

Reviewed by Brady Eidson.

Use a helper function to determine the currentPosition instead of always determining position based on the
size of the buffer. Soon there will be nothing in the buffer in the common case where there are no syntax errors.
Also make more static functions into methods. Give IPv6Addresses and IPv4Addresses names. Start adding syntaxError stubs.

No change in behavior. Covered by API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::incrementIteratorSkippingTabAndNewLine):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::appendToASCIIBuffer):
(WebCore::URLParser::syntaxError):
(WebCore::URLParser::currentPosition):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::URLParser::parseAuthority):
(WebCore::URLParser::appendNumberToASCIIBuffer):
(WebCore::URLParser::serializeIPv4):
(WebCore::URLParser::serializeIPv6Piece):
(WebCore::URLParser::serializeIPv6):
(WebCore::URLParser::parseIPv4Host):
(WebCore::URLParser::parseIPv6Host):
(WebCore::URLParser::parsePort):
(WebCore::URLParser::parseHostAndPort):
(WebCore::append): Deleted.
(WebCore::serializeIPv4): Deleted.
(WebCore::serializeIPv6Piece): Deleted.
(WebCore::serializeIPv6): Deleted.
(WebCore::parseIPv4Host): Deleted.
(WebCore::parseIPv6Host): Deleted.

  • platform/URLParser.h:
4:26 PM Changeset in webkit [206336] by caitp@igalia.com
  • 1 edit in trunk/JSTests/stress/async-await-syntax.js

[JSC] add @ skip line for JSTests/stress/async-await-syntax.js
http://bugs.webkit.org/show_bug.cgi?id=161409

  • stress/async-await-syntax.js:
3:54 PM Changeset in webkit [206335] by Wenson Hsieh
  • 4 edits in trunk/Tools

[mac-sierra] 2 WKWebViewCandidateTests API test failures
https://bugs.webkit.org/show_bug.cgi?id=162470

Reviewed by Tim Horton.

VideoControlsManager, WKWebViewCandidateTests and CandidateTests should not be running on 10.12.0. Guard these
tests with an SDK check to prevent 10.12.0 bots from building them.

  • TestWebKitAPI/Tests/WebKit2Cocoa/VideoControlsManager.mm:
  • TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewCandidateTests.mm:
  • TestWebKitAPI/Tests/mac/CandidateTests.mm:
3:32 PM Changeset in webkit [206334] by achristensen@apple.com
  • 5 edits in trunk

Refactor URLParser
https://bugs.webkit.org/show_bug.cgi?id=162516

Reviewed by Brady Eidson.

Source/WebCore:

Turn more static functions into methods, use a helper function to append characters to a buffer.

No change in behavior, but I added a new API test to cover an interesting
ipv6 address parsing case that had no coverage.

  • platform/URLParser.cpp:

(WebCore::CodePointIterator::codeUnitsSince):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::appendToASCIIBuffer):
(WebCore::URLParser::checkWindowsDriveLetter):
(WebCore::URLParser::percentEncodeByte):
(WebCore::URLParser::utf8PercentEncode):
(WebCore::URLParser::utf8QueryEncode):
(WebCore::URLParser::encodeQuery):
(WebCore::URLParser::copyASCIIStringUntil):
(WebCore::URLParser::copyURLPartsUntil):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::URLParser::parseAuthority):
(WebCore::URLParser::parsePort):
(WebCore::URLParser::parseHostAndPort):
(WebCore::utf8PercentEncode): Deleted.
(WebCore::utf8QueryEncode): Deleted.
(WebCore::encodeQuery): Deleted.
(WebCore::copyASCIIStringUntil): Deleted.

  • platform/URLParser.h:

(WebCore::URLParser::appendToASCIIBuffer):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

3:24 PM Changeset in webkit [206333] by caitp@igalia.com
  • 47 edits
    1 add in trunk

[JSC] Implement parsing of Async Functions
https://bugs.webkit.org/show_bug.cgi?id=161409

Reviewed by Yusuke Suzuki.

.:

  • Source/cmake/WebKitFeatures.cmake:

JSTests:

  • stress/async-await-syntax.js: Added.

(testSyntax):
(testSyntaxError):
(testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntax):
(testTopLevelAsyncAwaitSyntaxSloppyMode):
(testTopLevelAsyncAwaitSyntaxStrictMode):
(testTopLevelAsyncAwaitSyntaxStrictMode.testSyntax):
(testNestedAsyncAwaitSyntax.async):
(testNestedAsyncAwaitSyntax.foo):
(testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntaxError):

Source/JavaScriptCore:

Introduces frontend parsing for the async function proposal soon to be
ratified in ECMA262 (https://tc39.github.io/ecmascript-asyncawait/).

  • API/JSScriptRef.cpp:

(parseScript):

  • Configurations/FeatureDefines.xcconfig:
  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createExecutable):

  • bytecode/EvalCodeCache.h:

(JSC::EvalCodeCache::CacheKey::CacheKey):

  • bytecode/ExecutableInfo.h:

(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::scriptMode):
(JSC::ExecutableInfo::commentMode): Deleted.

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::scriptMode):
(JSC::UnlinkedCodeBlock::commentMode): Deleted.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateUnlinkedFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitNewArrowFunctionExpression):
(JSC::BytecodeGenerator::emitNewMethodDefinition):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::scriptMode):
(JSC::BytecodeGenerator::makeFunction):
(JSC::BytecodeGenerator::commentMode): Deleted.

  • bytecompiler/NodesCodegen.cpp:

(JSC::AwaitExprNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createAwait):
(JSC::ASTBuilder::createAsyncFunctionBody):

  • parser/Keywords.table:
  • parser/Lexer.cpp:

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

  • parser/Lexer.h:
  • parser/NodeConstructors.h:

(JSC::AwaitExprNode::AwaitExprNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::isArrowFunctionParameters):
(JSC::Parser<LexerType>::parseAsyncFunctionSourceElements):
(JSC::Parser<LexerType>::parseStatementListItem):
(JSC::Parser<LexerType>::parseVariableDeclarationList):
(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseStatement):
(JSC::Parser<LexerType>::parseFunctionDeclarationStatement):
(JSC::Parser<LexerType>::maybeParseAsyncFunctionDeclarationStatement):
(JSC::Parser<LexerType>::parseFormalParameters):
(JSC::stringForFunctionMode):
(JSC::Parser<LexerType>::parseFunctionParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseAsyncFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseExpressionOrLabelStatement):
(JSC::Parser<LexerType>::parseImportClauseItem):
(JSC::Parser<LexerType>::parseImportDeclaration):
(JSC::Parser<LexerType>::parseExportDeclaration):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseProperty): Deleted.
(JSC::Parser<LexerType>::parsePropertyMethod): Deleted.
(JSC::Parser<LexerType>::parsePrimaryExpression): Deleted.
(JSC::Parser<LexerType>::parseMemberExpression): Deleted.
(JSC::Parser<LexerType>::parseArrowFunctionExpression): Deleted.
(JSC::Parser<LexerType>::parseUnaryExpression): Deleted.
(JSC::Parser<LexerType>::printUnexpectedTokenText): Deleted.

  • parser/Parser.h:

(JSC::Scope::Scope):
(JSC::Scope::setSourceParseMode):
(JSC::Scope::isAsyncFunction):
(JSC::Scope::isAsyncFunctionBoundary):
(JSC::Scope::setIsAsyncArrowFunction):
(JSC::Scope::setIsAsyncFunction):
(JSC::Scope::setIsAsyncFunctionBody):
(JSC::Scope::setIsAsyncArrowFunctionBody):
(JSC::Parser::ExpressionErrorClassifier::forceClassifyExpressionError):
(JSC::Parser::ExpressionErrorClassifier::propagateExpressionErrorClass):
(JSC::Parser::ExpressionErrorClassifier::indicatesPossibleAsyncArrowFunction):
(JSC::Parser::forceClassifyExpressionError):
(JSC::Parser::declarationTypeToVariableKind):
(JSC::Parser::upperScope):
(JSC::Parser::pushScope):
(JSC::Parser::matchSpecIdentifier):
(JSC::Parser::isDisallowedIdentifierAwait):
(JSC::Parser::disallowedIdentifierAwaitReason):
(JSC::parse):
(JSC::Scope::isGeneratorBoundary): Deleted.
(JSC::Parser::ExpressionErrorClassifier::indicatesPossiblePattern): Deleted.

  • parser/ParserModes.h:

(JSC::SourceParseModeSet::SourceParseModeSet):
(JSC::SourceParseModeSet::contains):
(JSC::SourceParseModeSet::mergeSourceParseModes):
(JSC::isFunctionParseMode):
(JSC::isAsyncFunctionParseMode):
(JSC::isAsyncArrowFunctionParseMode):
(JSC::isAsyncFunctionWrapperParseMode):
(JSC::isAsyncFunctionBodyParseMode):
(JSC::isMethodParseMode):
(JSC::isModuleParseMode):
(JSC::isProgramParseMode):
(JSC::constructAbilityForParseMode):

  • parser/ParserTokens.h:
  • parser/SourceCodeKey.h:

(JSC::SourceCodeFlags::SourceCodeFlags):
(JSC::SourceCodeKey::SourceCodeKey):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createAwait):
(JSC::SyntaxChecker::createAsyncFunctionBody):
(JSC::SyntaxChecker::createYield): Deleted.
(JSC::SyntaxChecker::createFunctionExpr): Deleted.

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getProgramCodeBlock):
(JSC::CodeCache::getEvalCodeBlock):
(JSC::CodeCache::getModuleProgramCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):

  • runtime/CodeCache.h:
  • runtime/CommonIdentifiers.h:
  • runtime/Completion.cpp:

(JSC::checkSyntax):
(JSC::checkModuleSyntax):

  • runtime/Executable.cpp:

(JSC::ProgramExecutable::checkSyntax):

  • runtime/Executable.h:
  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeParseModule):

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/build-jsc:

(cMakeArgsFromFeatures):

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
2:46 PM Changeset in webkit [206332] by Chris Dumez
  • 13 edits in trunk

Align HTMLLabelElement.prototype.form with the HTML specification
https://bugs.webkit.org/show_bug.cgi?id=162369

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

  • web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt:
  • web-platform-tests/html/semantics/forms/the-label-element/label-attributes-expected.txt:

Source/WebCore:

Align HTMLLabelElement.prototype.form with the HTML specification:

In particular, the following behavior changes:

  • We now return null if the label element has no labeled control.
  • We now return the form element instead of returning null if the label element is outside the form but its labeled control is inside the form.

Firefox and Chrome match the specification.

No new tests, rebaselined existing tests.

  • html/HTMLLabelElement.cpp:

(WebCore::HTMLLabelElement::form):

  • html/HTMLLabelElement.h:

LayoutTests:

Update existing tests to reflect behavior change. I have verified
that Firefox and Chrome were failing those tests.

  • fast/dom/HTMLLabelElement/form/test1.html:
  • fast/forms/form-attribute-expected.txt:
  • fast/forms/form-attribute-nonexistence-form-id-expected.txt:
  • fast/forms/form-attribute-nonexistence-form-id.html:
  • fast/forms/form-attribute.html:
2:20 PM Changeset in webkit [206331] by Jonathan Bedard
  • 4 edits in trunk/Source/WebKit2

Fix Mac CMake build after r206261
https://bugs.webkit.org/show_bug.cgi?id=162493

Reviewed by Alex Christensen.

  • CMakeLists.txt: Exclude WebTextChecker from Mac CMake builds.
  • PlatformEfl.cmake: Ditto.
  • PlatformGTK.cmake: Ditto.
2:01 PM Changeset in webkit [206330] by Ryan Haddad
  • 2 edits in trunk/JSTests

Unreviewed, rolling out r206317.

This change caused timeouts on El Capitan Release JSC tests

Reverted changeset:

"Skip stress/string-joining-long-strings-should-not-crash.js
on memory limited devices"
https://bugs.webkit.org/show_bug.cgi?id=162386
http://trac.webkit.org/changeset/206317

1:58 PM Changeset in webkit [206329] by achristensen@apple.com
  • 8 edits in trunk

Refactor URLParser
https://bugs.webkit.org/show_bug.cgi?id=162511

Reviewed by Brady Eidson.

Source/WebCore:

Make the constructor take the parameters instead of URL::parse.
Now we don't need to copy the input string on failure.
Also, turn some static functions into methods so they will be able to access member variables.

Covered by existing and new API tests.

  • platform/URL.cpp:

(WebCore::URL::URL):
(WebCore::URL::setProtocol):
(WebCore::URL::setHost):
(WebCore::URL::removePort):
(WebCore::URL::setPort):
(WebCore::URL::setHostAndPort):
(WebCore::URL::setUser):
(WebCore::URL::setPass):
(WebCore::URL::setFragmentIdentifier):
(WebCore::URL::removeFragmentIdentifier):
(WebCore::URL::setQuery):
(WebCore::URL::setPath):

  • platform/URLParser.cpp:

(WebCore::URLParser::incrementIteratorSkippingTabAndNewLine):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::checkWindowsDriveLetter):
(WebCore::URLParser::shouldCopyFileURL):
(WebCore::URLParser::failure):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::incrementIteratorSkippingTabAndNewLine): Deleted.
(WebCore::isWindowsDriveLetter): Deleted.
(WebCore::checkWindowsDriveLetter): Deleted.
(WebCore::shouldCopyFileURL): Deleted.

  • platform/URLParser.h:

(WebCore::URLParser::URLParser):
(WebCore::URLParser::result):
(WebCore::URLParser::parse): Deleted.

  • platform/cf/URLCF.cpp:

(WebCore::URL::URL):
Drive-by fix: Actually assign the URL to be the result of parsing.

  • platform/mac/URLMac.mm:

(WebCore::URL::URL):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):
(TestWebKitAPI::checkURL):

1:33 PM Changeset in webkit [206328] by bshafiei@apple.com
  • 2 edits in tags/Safari-603.1.6.0.2/Source/WebCore

Merged r206306. rdar://problem/28436707

1:28 PM Changeset in webkit [206327] by bshafiei@apple.com
  • 2 edits in tags/Safari-603.1.6.0.2/Source/WebCore

Merged r206301. rdar://problem/28436707

1:24 PM Changeset in webkit [206326] by bshafiei@apple.com
  • 10 edits
    2 copies in tags/Safari-603.1.6.0.2

Merged r206300. rdar://problem/28436707

1:23 PM Changeset in webkit [206325] by ap@apple.com
  • 5 edits in trunk/Tools

iOS playback user action tests fail on some machines
https://bugs.webkit.org/show_bug.cgi?id=162504
rdar://problem/28013994

Reviewed by Jer Noble.

Avoid the need to have a timeout.

  • TestWebKitAPI/Tests/WebKit/ios/audio-only.html:
  • TestWebKitAPI/Tests/WebKit/ios/video-with-audio.html:
  • TestWebKitAPI/Tests/WebKit/ios/video-without-audio.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-video-without-audio.html:
1:16 PM Changeset in webkit [206324] by Ryan Haddad
  • 20 edits in trunk/Source

Unreviewed, rolling out r206314, r206316, and r206319.
https://bugs.webkit.org/show_bug.cgi?id=162506

These changes broke various builds (Requested by ryanhaddad on
#webkit).

Reverted changesets:

"Need a store-load fence between setting cell state and
visiting the object in SlotVisitor"
https://bugs.webkit.org/show_bug.cgi?id=162354
http://trac.webkit.org/changeset/206314

"Unreviewed, fix cloop."
http://trac.webkit.org/changeset/206316

"Unreviewed, fix all other builds."
http://trac.webkit.org/changeset/206319

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

12:57 PM Changeset in webkit [206323] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Remove URLParser serialized template
https://bugs.webkit.org/show_bug.cgi?id=162501

Reviewed by Brady Eidson.

No change in behavior.
This optimization conflicts with another optimization I'm doing.
We currently have the ParsedURLString tag, where we tell the parser to assume this URL is valid and canonicalized.
I'm going to instead make URLParser assume all URLs are valid and canonicalized until it finds that it is not,
in which case it will canonicalize it if possible.

  • platform/URL.cpp:

(WebCore::URL::URL):

  • platform/URLParser.cpp:

(WebCore::incrementIteratorSkippingTabAndNewLine):
(WebCore::isWindowsDriveLetter):
(WebCore::checkWindowsDriveLetter):
(WebCore::shouldCopyFileURL):
(WebCore::utf8PercentEncode):
(WebCore::utf8QueryEncode):
(WebCore::URLParser::parse):
(WebCore::URLParser::parseAuthority):
(WebCore::URLParser::parsePort):
(WebCore::URLParser::parseHostAndPort):
(WebCore::URLParser::parseSerializedURL): Deleted.

  • platform/URLParser.h:

(WebCore::URLParser::parse):

12:40 PM Changeset in webkit [206322] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Allow Seeking from the now playing controls
https://bugs.webkit.org/show_bug.cgi?id=162498

Reviewed by Beth Dakin.

We already have a handler for seek commands, we just need to register that handler
with MediaRemote.

  • platform/mac/RemoteCommandListenerMac.mm:

(WebCore::RemoteCommandListenerMac::updateSupportedCommands):

12:33 PM Changeset in webkit [206321] by bshafiei@apple.com
  • 10 edits in branches/safari-602-branch/Source/WebCore

Merge r206315. rdar://problem/28430615

12:33 PM Changeset in webkit [206320] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206272. rdar://problem/28339129

12:31 PM Changeset in webkit [206319] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix all other builds.

  • assembler/AbstractMacroAssembler.h:
12:02 PM Changeset in webkit [206318] by Csaba Osztrogonác
  • 2 edits in trunk/JSTests

Skip mozilla-tests.yaml/js1_5/Array/regress-157652 on memory limited devices
https://bugs.webkit.org/show_bug.cgi?id=162381

Reviewed by Mark Lam.

  • mozilla/mozilla-tests.yaml:
12:00 PM Changeset in webkit [206317] by Csaba Osztrogonác
  • 2 edits in trunk/JSTests

Skip stress/string-joining-long-strings-should-not-crash.js on memory limited devices
https://bugs.webkit.org/show_bug.cgi?id=162386

Reviewed by Mark Lam.

  • stress/string-joining-long-strings-should-not-crash.js:
11:47 AM Changeset in webkit [206316] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, fix cloop.

  • assembler/AbstractMacroAssembler.h:
  • heap/SlotVisitor.cpp:
11:45 AM Changeset in webkit [206315] by Wenson Hsieh
  • 10 edits in trunk/Source/WebCore

MediaSessionManagerMac::nowPlayingEligibleSession() needs to honor the main content heuristic
https://bugs.webkit.org/show_bug.cgi?id=162480
<rdar://problem/28430615>

Reviewed by Jer Noble.

Changes the implementation of nowPlayingEligibleSession to use bestMediaElementForShowingPlaybackControlsManager
and also early return nullptr if the current tab the web process is hosted in is the active tab, and the window
it is hosted in is the main window. This information is derived from the viewState flags in the Page of each
tab -- whenever the (visible && active) state changes, the Page tells the global media session manager to update
its Now Playing info. Then, when each MediaElementSession tries to determine whether it can show playback
controls for the purposes of Now Playing, each session consults its page's visible and active state. If a page
is both visible and active, no Now Playing controls are allowed for that media session.

Also adds some slight adjustments to MediaSessionManagerMac::updateNowPlayingInfo, so we reset the title, rate
and duration of the current active session when clearing out the now playing info. Likewise, when vending an
active video, if the video information matches that of the current session, we mark m_nowPlayingActive anyways.
These tweaks prevent us from getting in a bad state when switching between a tab with media and one without.

Unit tests to come in a future patch.

  • html/HTMLMediaElement.cpp:

(WebCore::mediaElementSessionInfoForSession):
(WebCore::mediaSessionMayBeConfusedWithMainContent):
(WebCore::HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager):
(WebCore::HTMLMediaElement::updatePlaybackControlsManager):
(WebCore::bestMediaSessionForShowingPlaybackControlsManager): Deleted.

  • html/HTMLMediaElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canShowControlsManager):
(WebCore::MediaElementSession::pageAllowsNowPlayingControls):

  • html/MediaElementSession.h:
  • page/Page.cpp:

(WebCore::Page::setViewState):
(WebCore::Page::isVisibleAndActive):

  • page/Page.h:
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary):

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/audio/mac/MediaSessionManagerMac.mm:

(WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary):
(WebCore::MediaSessionManagerMac::nowPlayingEligibleSession):
(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

11:09 AM Changeset in webkit [206314] by fpizlo@apple.com
  • 19 edits in trunk/Source

Source/JavaScriptCore:
Need a store-load fence between setting cell state and visiting the object in SlotVisitor
https://bugs.webkit.org/show_bug.cgi?id=162354

Reviewed by Mark Lam.

This was meant to be a small change, but then it became bigger as I found small
opportunities for improving this code. This adds a store-load fence and is performance-
neutral. That's probably partly due to other optimizations that I did to visitChildren().

Initially, I found that adding an mfence as a store-load fence was terribly expensive. So,
I thought that I needed to buffer up a bunch of objects, set their states, do one mfence,
and then visit all of them. This seemed like a win, so I went with it. Unfortunately, this
made no sense for two reasons:

  • I shouldn't use mfence. I should use ortop (lock orl $0, (%rsp)) instead. Ortop is basically free, and it's what WTF now uses for storeLoadFence().


  • My data saying that buffering up objects was not a slow-down was wrong. That was actually almost as expensive as the mfence.


But in order to implement that, I made some other improvements that I think we should stick
with:

  • SlotVisitor::visitChildren() now uses a switch on type. This replaces what used to be some nasty ClassInfo look-ups.


  • We no longer save the object's old CellState. We would do that so that we would know what state the object had been before we blackened it. But I believe that the more logical solution is to have two kinds of black - one for black-for-the-first-time objects and one for repeat offenders. This is a lot easier to reason about, since you can now just figure this out by looking at the cell directly.


The latter change meant rewiring a bunch of barriers. It didn't make them any more
expensive.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier):

  • heap/CellState.h:

(JSC::blacken):

  • heap/Heap.cpp:

(JSC::Heap::addToRememberedSet):

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

(JSC::Heap::writeBarrier):
(JSC::Heap::reportExtraMemoryVisited):
(JSC::Heap::reportExternalMemoryVisited):

  • heap/MarkStack.cpp:
  • heap/MarkStack.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::visitChildren):

  • heap/SlotVisitor.h:
  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::reportExtraMemoryVisited):
(JSC::SlotVisitor::reportExternalMemoryVisited):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::jumpIfIsRememberedOrInEden):

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSObject.h:

(JSC::isJSFinalObject):

Source/WTF:
REGRESSION(r194387): Crash on github.com in IntlDateTimeFormat::resolvedOptions in C locale
https://bugs.webkit.org/show_bug.cgi?id=162139

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2016-09-23
Reviewed by Michael Catanzaro.

Handle the case of "C" or "POSIX" locale and use "en-US" as default. That matches what ICU and other ports do,
as well as what layout tests expect (some tests like js/intl-collator.html pass in the bots only because we use
en-US as system locale in those bots).

  • wtf/PlatformUserPreferredLanguagesUnix.cpp:

(WTF::platformLanguage):

10:49 AM Changeset in webkit [206313] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Temporarily skipping media/media-source/media-source-duplicate-seeked.html on mac.
https://bugs.webkit.org/show_bug.cgi?id=162496

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:15 AM Changeset in webkit [206312] by commit-queue@webkit.org
  • 24 edits in trunk/Source

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

Broke internal iOS build (Requested by anttik on #webkit).

Reverted changeset:

"Move stylesheet change logic from Document to
AuthorStyleSheets"
https://bugs.webkit.org/show_bug.cgi?id=162488
http://trac.webkit.org/changeset/206311

9:35 AM Changeset in webkit [206311] by Antti Koivisto
  • 23 edits in trunk/Source

Move stylesheet change logic from Document to AuthorStyleSheets
https://bugs.webkit.org/show_bug.cgi?id=162488

Reviewed by Andreas Kling.

That's where it belongs.

  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSStyleSheet.cpp:

(WebCore::CSSStyleSheet::didMutateRules):
(WebCore::CSSStyleSheet::didMutate):
(WebCore::CSSStyleSheet::clearOwnerNode):

  • dom/AuthorStyleSheets.cpp:

(WebCore::AuthorStyleSheets::AuthorStyleSheets):
(WebCore::AuthorStyleSheets::flushPendingUpdates):
(WebCore::AuthorStyleSheets::scheduleOptimizedUpdate):
(WebCore::AuthorStyleSheets::didChange):
(WebCore::AuthorStyleSheets::optimizedUpdateTimerFired):

  • dom/AuthorStyleSheets.h:

(WebCore::AuthorStyleSheets::hasPendingUpdate):
(WebCore::AuthorStyleSheets::pendingUpdateType): Deleted.
(WebCore::AuthorStyleSheets::setPendingUpdateType): Deleted.
(WebCore::AuthorStyleSheets::flushPendingUpdates): Deleted.

  • dom/Document.cpp:

(WebCore::Document::Document):
(WebCore::Document::setContentLanguage):
(WebCore::Document::needsStyleRecalc):
(WebCore::Document::updateStyleIfNeeded):
(WebCore::Document::updateLayoutIgnorePendingStylesheets):
(WebCore::Document::didRemoveAllPendingStylesheet):
(WebCore::Document::processHttpEquiv):
(WebCore::Document::setSelectedStylesheetSet):
(WebCore::Document::updateHoverActiveState):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired): Deleted.
(WebCore::Document::scheduleOptimizedStyleSheetUpdate): Deleted.
(WebCore::Document::styleResolverChanged): Deleted.

  • dom/Document.h:

(WebCore::Document::needsStyleRecalc): Deleted.

  • dom/ExtensionStyleSheets.cpp:

(WebCore::ExtensionStyleSheets::clearPageUserSheet):
(WebCore::ExtensionStyleSheets::updatePageUserSheet):
(WebCore::ExtensionStyleSheets::invalidateInjectedStyleSheetCache):
(WebCore::ExtensionStyleSheets::addUserStyleSheet):
(WebCore::ExtensionStyleSheets::addAuthorStyleSheetForTesting):
(WebCore::ExtensionStyleSheets::styleResolverChangedTimerFired):

  • dom/InlineStyleSheetOwner.cpp:

(WebCore::InlineStyleSheetOwner::removedFromDocument):

  • dom/ProcessingInstruction.cpp:

(WebCore::ProcessingInstruction::removedFrom):

Also fix a bug that prevented document from rendering if a loading processing instruction was removed from the tree.
This is tested by fast/dom/StyleSheet/detached-style-pi-2.xhtml (after other changes in this patch).

  • dom/ShadowRoot.cpp:

(WebCore::ShadowRoot::updateStyle):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::setDisabledState):
(WebCore::HTMLLinkElement::parseAttribute):
(WebCore::HTMLLinkElement::process):
(WebCore::HTMLLinkElement::removedFrom):
(WebCore::HTMLLinkElement::removePendingSheet):

  • html/HTMLStyleElement.cpp:

(WebCore::HTMLStyleElement::parseAttribute):

  • inspector/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::forcePseudoState):
(WebCore::InspectorCSSAgent::resetPseudoStates):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::setEmulatedMedia):

  • page/Frame.cpp:

(WebCore::Frame::setPrinting):

  • page/FrameView.cpp:

(WebCore::FrameView::layout):
(WebCore::FrameView::setPagination):
(WebCore::FrameView::setViewportSizeForCSSViewportUnits):

  • page/Page.cpp:

(WebCore::Page::setViewMode):
(WebCore::Page::setNeedsRecalcStyleInAllFrames):
(WebCore::Page::invalidateInjectedStyleSheetCacheInAllFrames):

  • svg/SVGFontFaceElement.cpp:

(WebCore::SVGFontFaceElement::rebuildFontFace):
(WebCore::SVGFontFaceElement::removedFrom):

  • xml/XMLTreeViewer.cpp:

(WebCore::XMLTreeViewer::transformDocumentToTreeView):

  • xml/parser/XMLDocumentParser.cpp:

(WebCore::XMLDocumentParser::end):

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::doEnd):

9:29 AM Changeset in webkit [206310] by svillar@igalia.com
  • 3 edits
    2 adds in trunk

[css-grid] ASSERT when sizing tracks with percentages inside calc
https://bugs.webkit.org/show_bug.cgi?id=162383

Reviewed by Darin Adler.

Source/WebCore:

There is an ASSERT to check that tracks are at least as wide as the initial base size. This
was added to verify that we never shrink tracks bellow that value. In order to compute the
value used for initialization we need a max size which is the value used to resolve
percentages to. The remaining free space was used to compute that value, that's totally
wrong because the free space decreases as the track sizing algorithm is run. The available
space should be used instead.

An extra ASSERT was removed too because it was redundant, we do always check the sizes of
the tracks after running the track sizing algorithm and that's precisely the unique point
were they could be modified.

Test: fast/css-grid-layout/tracks-wider-min-track-breadth-crash.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::tracksAreWiderThanMinTrackBreadth):

LayoutTests:

  • fast/css-grid-layout/tracks-wider-min-track-breadth-crash-expected.txt: Added.
  • fast/css-grid-layout/tracks-wider-min-track-breadth-crash.html: Added.
9:25 AM Changeset in webkit [206309] by Chris Dumez
  • 6 edits in trunk

document.title getter does not strip / collapse the right whitespace characters
https://bugs.webkit.org/show_bug.cgi?id=162468

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-05-expected.txt:

Source/WebCore:

The document.title getter does not strip / collapse whitespace characters
as per:

This part of the specification provides more information about which
whitespace characters:

Firefox matches the specification. However, WebKit was stripping / collapsing
some characters it should not.

No new tests, rebaselined existing tests.

  • dom/Document.cpp:

(WebCore::canonicalizedTitle):

LayoutTests:

Update existing test to reflect behavior change.

  • fast/dom/Document/script-tests/document-title-get.js:
9:24 AM Changeset in webkit [206308] by Chris Dumez
  • 6 edits
    2 adds in trunk

Align Element.insertAdjacentHTML() with the specification
https://bugs.webkit.org/show_bug.cgi?id=162479

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

  • web-platform-tests/domparsing/insert_adjacent_html-expected.txt:

Source/WebCore:

Align Element.insertAdjacentHTML() with the specification:

In particular, the following changes issues are now fixed:

  • Calling insertAdjacentHTML() on an element whose parent is a DocumentFragment now works insteas of throwing a NO_MODIFICATION_ALLOWED_ERR.
  • Calling insertAdjacentHTML() on child of the <html> element no longer creates duplicate body / head elements.

Firefox agrees with the specification.

Test: fast/dom/insertAdjacentHTML-DocumentFragment-parent.html

  • dom/Element.cpp:

(WebCore::contextNodeForInsertion):
(WebCore::Element::insertAdjacentHTML):

LayoutTests:

Add layout test coverage for calling insertAdjacentHTML on an element
whose parent is a DocumentFragment. I have verified that this test is
passing in Firefox.

  • fast/dom/insertAdjacentHTML-DocumentFragment-crash-expected.txt:
  • fast/dom/insertAdjacentHTML-DocumentFragment-parent-expected.txt: Added.
  • fast/dom/insertAdjacentHTML-DocumentFragment-parent.html: Added.
9:21 AM Changeset in webkit [206307] by achristensen@apple.com
  • 9 edits in trunk

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

needs corresponding API change in bug 162475 (Requested by
alexchristensen on #webkit).

Reverted changeset:

"Non-special URLs should have an opaque origin"
https://bugs.webkit.org/show_bug.cgi?id=162254
http://trac.webkit.org/changeset/206165

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

9:09 AM Changeset in webkit [206306] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Unreviewed. Fix the build after r206300.

  • platform/mock/mediasource/MockSourceBufferPrivate.cpp: Add missing header include.
8:49 AM Changeset in webkit [206305] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] BadDamage X error in /webkit2/WebKitWebView/preferred-size
https://bugs.webkit.org/show_bug.cgi?id=162489

Reviewed by Michael Catanzaro.

Do a XSync right after creating/destroying the XDamage used by the redirected window in X11.

  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::AcceleratedBackingStoreX11::~AcceleratedBackingStoreX11):
(WebKit::AcceleratedBackingStoreX11::update):

8:48 AM Changeset in webkit [206304] by Carlos Garcia Campos
  • 3 edits in trunk/Tools

REGRESSION(r204163): [GTK] API test /webkit2/WebKitSecurityManager/file-xhr is failing
https://bugs.webkit.org/show_bug.cgi?id=161607

Reviewed by Michael Catanzaro.

Since r204163, in case of cross origin error when loading the XHR, the load fails and an error message is shown
in the console, but there isn't any js expcetion, which is what we were checking. Now, we check that there
aren't exceptions, and that the error message is sent to the console.

  • Scripts/run-gtk-tests:

(TestRunner):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:

(consoleMessageReceivedCallback):
(testWebContextSecurityFileXHR):

8:46 AM Changeset in webkit [206303] by Ryan Haddad
  • 2 edits in trunk/Tools

Use correct hardware for Sierra Debug WK2 testers.
https://bugs.webkit.org/show_bug.cgi?id=162474

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
8:45 AM Changeset in webkit [206302] by Carlos Garcia Campos
  • 7 edits in trunk/Tools

[GTK] Make all WebView tests have a WebKitUserContentManager
https://bugs.webkit.org/show_bug.cgi?id=162487

Reviewed by Michael Catanzaro.

It simplifies tests using the user content manager, and allows to use it without having to subclass WebViewTest.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp:

(ConsoleMessageTest::ConsoleMessageTest):
(ConsoleMessageTest::~ConsoleMessageTest):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:
  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp:

(testUserContentManagerInjectedStyleSheet):
(testUserContentManagerInjectedScript):
(UserScriptMessageTest::UserScriptMessageTest):
(beforeAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:

(testWebViewIsPlayingAudio):

  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:

(WebViewTest::WebViewTest):

  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h:
8:43 AM Changeset in webkit [206301] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix; Missed a file in the last checkin.

  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::enqueuedSamplesForTrackID):

8:28 AM Changeset in webkit [206300] by jer.noble@apple.com
  • 10 edits
    2 adds in trunk

REGRESSION (206001): Scrubbed video on Youtube stops playing
https://bugs.webkit.org/show_bug.cgi?id=162481
<rdar://problem/28436707>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-seek-back.html

When re-enqueing samples after a seek, modified the algorithm for finding the first sample
to re-enqueue. Instead of finding a sample which contained the requested presentation time,
we searched for the first sample on-or-after the presentation time. This meant that if the
last buffered sample in that range started before the seek time, and ended after, it would
get skipped during re-enquing, and a far, far future sample would be enqueued instead. Now
revert to the old behavior (find the sample containing the requested time), and only adopt
the new behavior (find the next sample on-or-after the requested time) if the first failed.
In addition, bail out if the second check resulted in a sample whose presentation time was
greater than a "fudge factor" away from the requested time.

To test this behavior, add a new method onto Internals that returns a list of the enqueued
samples from a SourceBuffer.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::reenqueueMediaForTime):
(WebCore::SourceBuffer::enqueuedSamplesForTrackID):

  • Modules/mediasource/SourceBuffer.h:
  • platform/mock/mediasource/MockMediaSourcePrivate.cpp:

(WebCore::MockMediaSourcePrivate::seekToTime):

  • platform/mock/mediasource/MockSourceBufferPrivate.cpp:

(WebCore::MockSourceBufferPrivate::enqueuedSamplesForTrackID):
(WebCore::MockSourceBufferPrivate::enqueueSample):

  • platform/mock/mediasource/MockSourceBufferPrivate.h:
  • testing/Internals.cpp:

(WebCore::Internals::enqueuedSamplesForTrackID):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • media/media-source/media-source-seek-back-expected.txt: Added.
  • media/media-source/media-source-seek-back.html: Added.
7:16 AM Changeset in webkit [206299] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Replace redundant prepareForDestruction() call with RELEASE_ASSERT in Document::removedLastRef.
https://bugs.webkit.org/show_bug.cgi?id=162467

Reviewed by Chris Dumez.

Since r205786 fixed the root cause of webkit.org/b/159372, we no longer need the workaround.
Replace it with a RELEASE_ASSERT to ensure clean state.

No new tests, covered by existing test.

  • dom/Document.cpp:

(WebCore::Document::removedLastRef):

5:05 AM Changeset in webkit [206298] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Skip failing html/syntax web platform test on Windows.
https://bugs.webkit.org/show_bug.cgi?id=162415

Unreviewed test gardening.

  • platform/win/TestExpectations:
2:56 AM Changeset in webkit [206297] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

ARM EABI buildfix after r206289
https://bugs.webkit.org/show_bug.cgi?id=162486

Unreviewed buildfix.

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState):

2:32 AM Changeset in webkit [206296] by graouts@webkit.org
  • 26 edits in trunk

Adding a new runtime flag for modern media controls.

1:20 AM Changeset in webkit [206295] by Carlos Garcia Campos
  • 11 edits
    2 adds in trunk

REGRESSION(r194387): Crash on github.com in IntlDateTimeFormat::resolvedOptions in C locale
https://bugs.webkit.org/show_bug.cgi?id=162139

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

The crash happens in unix ports because the resolved locale is empty when system locale is "C". IntlObject
considers any language tag with a size < 2 to be an invalid language, so "C" is not a valid language to resolve
the locale. We should ensure that WTF::platformUserPreferredLanguages() never returns invalid languages, but
that's not enough, because languages can be overriden from the public API, so we need to handle those cases and
throw exceptions instead of crashing.

  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::initializeCollator): Throw a exception when we fail to resolve the locale.

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::initializeDateTimeFormat): Ditto.

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::initializeNumberFormat): Ditto.

Source/WebKit2:

Handle the case of "C" locale passed by the user using "en-US" as default to match what
WTF::platformUserPreferredLanguages() does.

  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkit_web_context_set_preferred_languages): Remove the call to languageDidChange() because
overrideUserPreferredLanguages() already calls it, so we were actually notifying the observers twice.

Source/WTF:

Handle the case of "C" or "POSIX" locale and use "en-US" as default. That matches what ICU and other ports do,
as well as what layout tests expect (some tests like js/intl-collator.html pass in the bots only because we use
en-US as system locale in those bots).

  • wtf/PlatformUserPreferredLanguagesUnix.cpp:

(WTF::platformLanguage):

Tools:

Add test cases to check the behavior when using the C locale and an invalid locale.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:

(testWebContextLanguages):

LayoutTests:

  • js/intl-invalid-locale-crash-expected.txt: Added.
  • js/intl-invalid-locale-crash.html: Added.
1:02 AM Changeset in webkit [206294] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit2

[GTK] Improve performance when resizing a window with multiple web views in X11
https://bugs.webkit.org/show_bug.cgi?id=162413

Reviewed by Michael Catanzaro.

Resizing a window with a single way view performs good enough, but when adding more tabs, the performance
decreases a lot. This is because resize is a sync operation, and the UI process waits for the web process to
have a new update for the new size, while still draws the previous frame. This is needed for the visible web
view, to avoid flickering and artifacts while resizing, but for all other hidden web views, we don't really need
to block the UI process. This doesn't happen in Wayland, because in Wayland we never block the UI process while
waiting for web process update after a resize.

  • UIProcess/AcceleratedDrawingAreaProxy.cpp:

(WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState): Return early if the web
view is not visible.

  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::AcceleratedBackingStoreX11::update): Only schedule a redraw on a damage event when the view is visible.

  • WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:

(WebKit::AcceleratedSurfaceX11::AcceleratedSurfaceX11): Do a XSync right after creating the new pixmap.
(WebKit::AcceleratedSurfaceX11::resize): Ditto.

Sep 22, 2016:

10:31 PM Changeset in webkit [206293] by bshafiei@apple.com
  • 9 edits in tags/Safari-603.1.6.0.2

Roll out r206165. rdar://problem/28435943

10:29 PM Changeset in webkit [206292] by bshafiei@apple.com
  • 5 edits in tags/Safari-603.1.6.0.2/Source

Versioning.

10:25 PM Changeset in webkit [206291] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.6.0.2

New tag.

9:16 PM Changeset in webkit [206290] by Hunseop Jeong
  • 2 edits in trunk/Tools

[EFL] alert box is not displayed
https://bugs.webkit.org/show_bug.cgi?id=156395

Reviewed by Gyuyoung Kim.

Some popup objects(alert, confirm, prompt, file entry dialog) used the ecore_main_loop_begin() to make
the modal popup but ecore_main_loop_begin() was not executed inside an exisiting main loop. So we have
to use the ecore_main_loop_iterate() instead of the ecore_main_loop_begin().

  • MiniBrowser/efl/main.c:

(_ok_clicked_cb):
(_file_entry_dialog_show):
(_javascript_alert_cb):
(_javascript_confirm_cb):
(_javascript_prompt_cb):
(quit_event_loop): Deleted.

8:50 PM Changeset in webkit [206289] by commit-queue@webkit.org
  • 26 edits
    1 add in trunk

[JSC] Use an inline cache to generate op_negate
https://bugs.webkit.org/show_bug.cgi?id=162371

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-09-22
Reviewed by Saam Barati.

JSTests:

  • stress/op-negate-inline-cache.js: Added.

Source/JavaScriptCore:

Use an inline cache to reduce the amount of code
required to implement op_negate.

For pure integer negate, the generated asm shrinks
from 147 bytes to 125 bytes (14%).
For double negate, the generated asm shrinks
to 130 bytes (11%).
The average size on Sunspider is 100bytes, this is due
to the op_negates that are never executed and do not
generate much.

  • bytecode/ArithProfile.h:

(JSC::ArithProfile::ArithProfile):
(JSC::ArithProfile::observeLHS):
(JSC::ArithProfile::observeLHSAndRHS):

  • bytecode/BytecodeList.json:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::addJITNegIC):

  • bytecode/CodeBlock.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitUnaryOp):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::UnaryOpNode::emitBytecode):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileMathIC):

  • dfg/DFGSpeculativeJIT.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileMathIC):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState):

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

(JSC::JIT::emit_op_negate):
(JSC::JIT::emitSlow_op_negate):
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):

  • jit/JITInlines.h:

(JSC::JIT::callOperation):

  • jit/JITMathIC.h:

(JSC::JITMathIC::generateInline):
(JSC::canGenerateWithBinaryProfile):
(JSC::canGenerateWithUnaryProfile):

  • jit/JITMathICForwards.h:
  • jit/JITNegGenerator.cpp:

(JSC::JITNegGenerator::generateInline):
(JSC::JITNegGenerator::generateFastPath):

  • jit/JITNegGenerator.h:

(JSC::JITNegGenerator::JITNegGenerator):
(JSC::JITNegGenerator::arithProfile):
(JSC::JITNegGenerator::didEmitFastPath): Deleted.
(JSC::JITNegGenerator::endJumpList): Deleted.
(JSC::JITNegGenerator::slowPathJumpList): Deleted.

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::updateArithProfileForUnaryArithOp):
(JSC::SLOW_PATH_DECL):

7:10 PM Changeset in webkit [206288] by bshafiei@apple.com
  • 10 edits in branches/safari-602-branch/Source/WebCore

Merge r206193. rdar://problem/28376161

7:10 PM Changeset in webkit [206287] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Tools

Merge r206038. rdar://problem/28086237

7:10 PM Changeset in webkit [206286] by bshafiei@apple.com
  • 41 edits
    1 copy
    3 adds in branches/safari-602-branch

Merge r206033. rdar://problem/28086237

6:54 PM Changeset in webkit [206285] by Chris Dumez
  • 10 edits in trunk

[ShadowDOM] Add support for Node.getRootNode(options)
https://bugs.webkit.org/show_bug.cgi?id=162457

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline existing W3C DOM tests now that more checks are passing.

  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/dom/nodes/rootNode-expected.txt:

Source/WebCore:

Add support for Node.getRootNode(options):

No new tests, rebaselined existing tests.

  • dom/EventPath.cpp:

(WebCore::RelatedNodeRetargeter::RelatedNodeRetargeter):
(WebCore::RelatedNodeRetargeter::checkConsistency):

  • dom/Node.cpp:

(WebCore::Node::rootNode):
(WebCore::Node::shadowIncludingRoot):
(WebCore::Node::getRootNode):

  • dom/Node.h:
  • dom/Node.idl:
  • editing/Editor.cpp:

(WebCore::correctSpellcheckingPreservingTextCheckingParagraph):

  • xml/XPathPath.cpp:

(WebCore::XPath::LocationPath::evaluate):

6:15 PM Changeset in webkit [206284] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Removed unused hasErrorInfo().
https://bugs.webkit.org/show_bug.cgi?id=162473

Reviewed by Saam Barati.

(JSC::hasErrorInfo): Deleted.

  • runtime/Error.h:
6:14 PM Changeset in webkit [206283] by matthew_hanson@apple.com
  • 2 edits in trunk/Tools

Add an API for getting the branch identifier from a Git or SVN checkout.
https://bugs.webkit.org/show_bug.cgi?id=151570
rdar://problem/17959831

Reviewed by David Kilzer.

This patch adds a function called svnIdentifierForPath. This function returns either "trunk",
the name of the tag, or the name of the branch, as appropriate. This function is necessary for
a VCSUtils client that is not checked in to the WebKit project.

This patch also breaks up pathRelativeToSVNRepositoryRootForPath into four functions:

  • pathRelativeToSVNRepositoryRootForPath
  • svnInfoForPath
  • svnURLForPath
  • svnRepositoryRootForPath

This allows us to reuse logic from pathRelativeToSVNRepositoryRootForPath in svnIdentifierForPath and
allows clients of VCSUtils to extract what arbitrary information from the svn info command regardless
of SCM.

  • Scripts/VCSUtils.pm:

(svnInfoForPath):
Copied logic that previously lived in pathRelativeToSVNRepositoryRootForPath.
Make code safe to use for a path, and not just for the CWD.

(svnURLForPath):
Calls svnInfoForPath and extracts the URL.

(svnRepositoryRootForPath):
Calls svnInfoForPath and extracts the Repository Root.

(svnIdentifierForPath):
Calls pathRelativeToSVNRepositoryRootForPath and extracts the repository identifier.

(pathRelativeToSVNRepositoryRootForPath):
Now uses svnURLForPath and svnRepositoryRootForPath instead of being responsible for
determining both values.

4:53 PM Changeset in webkit [206282] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk

Add long press selection test
https://bugs.webkit.org/show_bug.cgi?id=162367

Patch by Megan Gardner <Megan Gardner> on 2016-09-22
Reviewed by Simon Fraser.

Tools:

Add support to UIScriptController to synthesize long press events on iOS.
This required adding long-press functionality to HIDEventGenerator.

HIDEventGenerator sends the touchDown, but must then send the touchUp with
a dispatch_after (rather than sleeping, as we do for other events) in order
for the gesture recognizers to correctly detect a long press.

Use the long press synthesis in a test that detects whether a long press
gesture triggers text selection.

Fixed incorrect constants. NSTimeInterval is in seconds, original numbers
were nanoseconds and typedefed to long without regard to the type
differences. Redid constants to be the right value, and converted upon use.

Cleaned up unused enum types.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::longPressAtPoint):
(WTR::UIScriptController::forcePressAtPoint):
(WTR::UIScriptController::dragFromPointToPoint): Deleted.

  • Scripts/webkitpy/common/config/contributors.json:
  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::longPressAtPoint):
(WTR::UIScriptController::forcePressAtPoint):
(WTR::UIScriptController::dragFromPointToPoint): Deleted.

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/ios/HIDEventGenerator.h:
  • WebKitTestRunner/ios/HIDEventGenerator.mm:

(-[HIDEventGenerator _createIOHIDEventType:]):
(-[HIDEventGenerator sendTaps:location:withNumberOfTouches:completionBlock:]):
(-[HIDEventGenerator clearTap:]):
(-[HIDEventGenerator longPressTimerCall:]):
(-[HIDEventGenerator longPressFinish:completionBlock:]):
(-[HIDEventGenerator longPress:completionBlock:]):
(-[HIDEventGenerator forcePress:completionBlock:]):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::longPressAtPoint):
(WTR::UIScriptController::forcePressAtPoint):
(WTR::UIScriptController::dragFromPointToPoint): Deleted.

LayoutTests:

Added test for long press selection.

  • fast/events/touch/ios/long-press-to-select-text-expected.txt: Added.
  • fast/events/touch/ios/long-press-to-select-text.html: Added.
4:41 PM Changeset in webkit [206281] by mark.lam@apple.com
  • 6 edits
    1 add in trunk

Array.prototype.join should do overflow checks on string joins.
https://bugs.webkit.org/show_bug.cgi?id=162459

Reviewed by Saam Barati.

JSTests:

  • stress/array-join-on-strings-need-overflow-checks.js: Added.

(assert):
(catch):

Source/JavaScriptCore:

Change the 2 JSRopeString::create() functions that do joins to be private, and
force all clients of it to go through the jsString() utility functions that do
overflow checks before creating the ropes.

  • dfg/DFGOperations.cpp:
  • runtime/ArrayPrototype.cpp:

(JSC::slowJoin):

  • runtime/JSString.h:
  • runtime/Operations.h:

(JSC::jsString):

3:34 PM Changeset in webkit [206280] by beidson@apple.com
  • 3 edits
    5 adds in trunk

IDBIndex.openCursor() matches indices on multiple object stores.
<rdar://problem/28434463> and https://bugs.webkit.org/show_bug.cgi?id=158833

Reviewed by Alex Christensen.

Source/WebCore:

Tests: storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-private.html

storage/indexeddb/modern/multiple-objectstore-index-cursor-collision.html

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::buildIndexStatement): Need to include the object store id in the statement for

index cursors, otherwise there will be collisions amongst multiple object stores that happen to
share primary keys.

(WebCore::IDBServer::SQLiteIDBCursor::bindArguments):

LayoutTests:

  • storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-expected.txt: Added.
  • storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-private-expected.txt: Added.
  • storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-private.html: Added.
  • storage/indexeddb/modern/multiple-objectstore-index-cursor-collision.html: Added.
  • storage/indexeddb/modern/resources/multiple-objectstore-index-cursor-collision.js: Added.
2:56 PM Changeset in webkit [206279] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

ShowRenderTree: Shuffle letters to have better readability.
https://bugs.webkit.org/show_bug.cgi?id=162460

Reviewed by Simon Fraser.
old: (B)lock/(I)nline/I(N)line-block, (R)elative/A(B)solute/Fi(X)ed/Stick(Y) positioned, (O)verflow clipping, (A)nonymous, (G)enerated, (F)loating, has(L)ayer, (C)omposited, (D)irty layout, Dirty (S)tyle.
new: (B)lock/(I)nline/I(N)line-block, (A)bsolute/Fi(X)ed/(R)elative/Stic(K)y, (F)loating, (O)verflow clip, Anon(Y)mous, (G)enerated, has(L)ayer, (C)omposited, (+)Dirty style, (+)Dirty layout.

Not testable.

  • rendering/RenderObject.cpp:

(WebCore::showRenderTreeLegend):
(WebCore::RenderObject::showRenderObject):

2:39 PM Changeset in webkit [206278] by dbates@webkit.org
  • 49 edits in trunk

[CSP] Violation report may be sent to wrong domain on frame-ancestors violation
https://bugs.webkit.org/show_bug.cgi?id=162079
<rdar://problem/28321575>

Reviewed by Andy Estes.

Source/WebCore:

Fixes an issue where a CSP violation report may be sent to the wrong domain when the
frame-ancestors directive is violated. In particular, when the frame-ancestors directive
is violated for a page that specifies a report URI that is a relative URL then the
report URI would be resolved with respect to the parent frame's document URL and hence
be sent to the domain of the parent frame's document.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation): Adjust the report URL with respect
to the blocked URL when we do not have a script execution context.

LayoutTests:

Modified http/tests/security/contentSecurityPolicy/resources/save-report.php to print the HTTP Host header as a means
to validate that the CSP violation report was sent to the appropriate host. Update test expectations.

Note that the presence of "localhost" in the HTTP Host header in the test results for tests
security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html and
security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https.html
verify that we resolve a relative URL CSP report URI with respect to the blocked URL.

  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin.html:
  • http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-and-enforce-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-when-private-browsing-enabled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-child-frame-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-scheme-relative-expected.txt:
  • http/tests/security/contentSecurityPolicy/resources/save-report.php:
  • http/tests/security/xssAuditor/report-script-tag-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-full-block-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-replace-state-expected.txt:
2:34 PM Changeset in webkit [206277] by dbates@webkit.org
  • 3 edits
    2 adds in trunk

[XSS Auditor] HTML5 entities can bypass XSS Auditor
https://bugs.webkit.org/show_bug.cgi?id=161939
<rdar://problem/25819815>

Reviewed by David Kilzer.

Source/WebCore:

Merged from Blink:
<https://chromium.googlesource.com/chromium/src/+/04e44060dccee711842d08652bf1c622a0f43179>

Truncate a src-like URL at the first & character as it may mark the start of an HTML entity.
We will evaluate the effectiveness of this approach and adjust it if necessary if we see an
increase in false positives.

HTML5 defines more named character references, including named character references for common
punctuation characters. Characters following some punctuation characters may come from the page
itself. We truncate src-like strings at punctuation characters to avoid considering such page
content when performing a match.

Test: http/tests/security/xssAuditor/script-tag-with-source-data-url5.html

  • html/parser/XSSAuditor.cpp:

(WebCore::truncateForSrcLikeAttribute):

LayoutTests:

  • http/tests/security/xssAuditor/script-tag-with-source-data-url5-expected.txt: Added.
  • http/tests/security/xssAuditor/script-tag-with-source-data-url5.html: Added.
2:33 PM Changeset in webkit [206276] by dbates@webkit.org
  • 4 edits
    2 adds in trunk

[XSS Auditor] Truncate data URLs at quotes
https://bugs.webkit.org/show_bug.cgi?id=161937

Reviewed by David Kilzer.

Source/WebCore:

Merged from Blink:
<https://chromium.googlesource.com/chromium/src/+/c6d6331190dd43f09459e2341c3111e796f9de12/>

Truncate a data URL at the first single or double quote character to avoid considering
characters that may come from the page content following an injected data URL.

Test: http/tests/security/xssAuditor/script-tag-with-source-data-url4.html

  • html/parser/XSSAuditor.cpp:

(WebCore::truncateForSrcLikeAttribute):

LayoutTests:

  • http/tests/security/xssAuditor/resources/echo-property.pl:
  • http/tests/security/xssAuditor/script-tag-with-source-data-url4-expected.txt: Added.
  • http/tests/security/xssAuditor/script-tag-with-source-data-url4.html: Added.
2:22 PM Changeset in webkit [206275] by dbates@webkit.org
  • 9 edits in trunk

Remove more ENABLE(TEXT_AUTOSIZING) code
https://bugs.webkit.org/show_bug.cgi?id=162456

Reviewed by Simon Fraser.

.:

  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/WebCore:

  • page/Settings.in:
  • rendering/style/StyleVisualData.h:

(WebCore::StyleVisualData::operator==):

Source/WebKit2:

  • UIProcess/API/efl/ewk_settings.cpp:

(ewk_settings_text_autosizing_enabled_set):
(ewk_settings_text_autosizing_enabled_get):

  • UIProcess/API/efl/tests/test_ewk2_settings.cpp:

(TEST_F):

2:11 PM Changeset in webkit [206274] by fpizlo@apple.com
  • 6 edits in trunk/Source

Fences on x86 should be a lot cheaper
https://bugs.webkit.org/show_bug.cgi?id=162417

Reviewed by Mark Lam and Geoffrey Garen.
Source/JavaScriptCore:

It turns out that:

lock; orl $0, (%rsp)


does everything that we wanted from:

mfence


And it's a lot faster. When I tried mfence for making object visiting concurrent-GC-TSO-
friendly, it was a 9% regression on Octane/splay. But when I tried ortop, it was neutral.
So, we should use ortop from now on.

This part of the change is for the JITs. MacroAssembler::memoryFence() appears to always
mean something like an acqrel fence, so it's safe to make this use ortop. Since B3's Fence
compiles to Air MemoryFence, which is just MacroAssembler::memoryFence(), this also changes
B3 codegen.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::memoryFence):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::lock):

  • b3/testb3.cpp:

(JSC::B3::testX86MFence):
(JSC::B3::testX86CompilerFence):

Source/WTF:


It turns out that:

lock; orl $0, (%rsp)


does everything that we wanted from:

mfence


And it's a lot faster. When I tried mfence for making object visiting concurrent-GC-TSO-
friendly, it was a 9% regression on Octane/splay. But when I tried ortop, it was neutral.
So, we should use ortop from now on.

This part of the change just affects our Atomics. I also changed this in the JITs.

  • wtf/Atomics.h:

(WTF::x86_ortop):
(WTF::storeLoadFence):
(WTF::x86_mfence): Deleted.

2:05 PM Changeset in webkit [206273] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source

Versioning.

1:54 PM Changeset in webkit [206272] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Fullscreen controls inoperative in WebKitLegacy web views
https://bugs.webkit.org/show_bug.cgi?id=162374

Reviewed by Eric Carlson.

After r205365, the WebPlaybackSessionInterfaceAVKit was now created after the
WebPlaybackSessionModel which fed it data, so it no longer received the burst of data upon
creation. Instead, it should have always asked the model for its cached data as soon as it
was connected to set up its inital state.

  • platform/ios/WebPlaybackSessionInterfaceAVKit.mm:

(WebCore::WebPlaybackSessionInterfaceAVKit::WebPlaybackSessionInterfaceAVKit):

1:50 PM Changeset in webkit [206271] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.12

New tag.

1:48 PM Changeset in webkit [206270] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206027. rdar://problem/28366812

1:47 PM Changeset in webkit [206269] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source

Versioning.

12:11 PM Changeset in webkit [206268] by commit-queue@webkit.org
  • 17 edits in trunk

test262: Function length should be number of parameters before parameters with default values
https://bugs.webkit.org/show_bug.cgi?id=162377

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-22
Reviewed by Saam Barati.

JSTests:

  • stress/es6-default-parameters.js:

Add our own tests for function lengths with default parameters.

  • test262.yaml:

We now pass all dflt-length tests.

Source/JavaScriptCore:

https://tc39.github.io/ecma262/#sec-function-definitions-static-semantics-expectedargumentcount

NOTE: The ExpectedArgumentCount of a FormalParameterList is the number of
FormalParameters to the left of either the rest parameter or the first
FormalParameter with an Initializer. A FormalParameter without an
initializer is allowed after the first parameter with an initializer
but such parameters are considered to be optional with undefined as
their default value.

Alongside the parameterCount value, maintain a separate count,
functionLength, which will be the count before seeing a rest parameter
or parameter with a default value. This will be the function's length.

  • bytecode/UnlinkedCodeBlock.h:
  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedFunctionExecutable.h:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createFunctionMetadata):

  • parser/Nodes.cpp:

(JSC::FunctionMetadataNode::FunctionMetadataNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::isArrowFunctionParameters):
(JSC::Parser<LexerType>::parseGeneratorFunctionSourceElements):
(JSC::Parser<LexerType>::parseFormalParameters):
(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::Parser<LexerType>::parseFunctionParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):

  • parser/Parser.h:
  • parser/ParserFunctionInfo.h:
  • parser/SourceProviderCacheItem.h:

(JSC::SourceProviderCacheItem::SourceProviderCacheItem):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createFunctionMetadata):

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

(JSC::JSFunction::createBuiltinFunction):
(JSC::JSFunction::reifyLength):

11:59 AM Changeset in webkit [206267] by Joseph Pecoraro
  • 53 edits in trunk/Source/JavaScriptCore

Remove a bunch of unnecessary includes
https://bugs.webkit.org/show_bug.cgi?id=162376

Reviewed by Mark Lam.

11:47 AM Changeset in webkit [206266] by Chris Dumez
  • 4 edits in trunk

Fix serialization of HTML void elements when they have children
https://bugs.webkit.org/show_bug.cgi?id=162418

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/html/syntax/serializing-html-fragments/serializing-expected.txt:

Source/WebCore:

Fix serialization of HTML void elements when they have children.

Void elements (such as <hr>) cannot have a closing tag. When
encountering them, we would properly not serialize the void
element's children (if it had any). However, we would incorrectly
append an end tag (because the element technically has children).

Relevant specification:

In particular, this part:
""
If current node is an area, base, basefont, bgsound, br, col, embed,
frame, hr, img, input, keygen, link, meta, param, source, track or wbr
element, then continue on to the next child node at this point.
""

Firefox matches the specification.

No new tests, rebaselined existing test.

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::serializeNodesWithNamespaces):

11:43 AM Changeset in webkit [206265] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WinCairo] Fix build after r206196

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2016-09-22
Reviewed by Alex Christensen.

  • platform/text/win/LocaleWin.cpp:

(WebCore::LocaleWin::getLocaleInfoString):

11:30 AM Changeset in webkit [206264] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking imported/w3c/web-platform-tests/media-source/mediasource-duration.html as flaky on mac.
https://bugs.webkit.org/show_bug.cgi?id=162308

Unreviewed test gardening.

  • platform/mac/TestExpectations:
11:19 AM Changeset in webkit [206263] by Ryan Haddad
  • 4 edits in trunk/LayoutTests

Unreviewed, rolling out r206112.

This change made inspector/network/xhr-json-blob-has-
content.html very flaky.

Reverted changeset:

"Web Inspector: adopt Object.awaitEvent in
LayoutTests/inspector/network"
https://bugs.webkit.org/show_bug.cgi?id=162099
http://trac.webkit.org/changeset/206112

10:59 AM Changeset in webkit [206262] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/resource-timing/idlharness.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=162414

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-22

10:39 AM Changeset in webkit [206261] by Jonathan Bedard
  • 38 edits in trunk

Automatic Text Replacement Testing in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=161919

Reviewed by Ryosuke Niwa.

Source/WebCore:

Fixing existing tests:

editing/inserting/smart-link-when-caret-is-moved-before-URL.html
editing/inserting/typing-space-to-trigger-smart-link.html

Implemented test hooks for text replacement for WebKit2.
Note that spell checking has not been implemented, so most tests which use text replacement still fail.

  • testing/Internals.cpp:

(WebCore::Internals::Internals): Reset TextChecker.
(WebCore::Internals::setContinuousSpellCheckingEnabled): Converted exception to an assert.
(WebCore::Internals::setAutomaticQuoteSubstitutionEnabled): Converted exception to an assert.
(WebCore::Internals::setAutomaticLinkDetectionEnabled): Converted exception to an assert.
(WebCore::Internals::setAutomaticDashSubstitutionEnabled): Converted exception to an assert.
(WebCore::Internals::setAutomaticTextReplacementEnabled): Converted exception to an assert.
(WebCore::Internals::setAutomaticSpellingCorrectionEnabled): Converted exception to an assert.

  • testing/Internals.h: Removed exception argument for TextChecker setters.
  • testing/Internals.idl: Ditto.

Source/WebKit2:

Implemented test hooks for text replacement for WebKit2.
Note that spell checking has not been implemented, so most tests which use text replacement still fail.

  • UIProcess/API/C/WKTextChecker.cpp: Added #ifdefs to include file for iOS and Mac.

(WKTextCheckerSetTestingMode): Added.

  • UIProcess/API/C/WKTextChecker.h: Added #ifdefs to include file for iOS and Mac.
  • UIProcess/TextChecker.h: Added hooks to bypass writing to NSUserDefaults.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::toggleSmartInsertDelete): New message to toggle TextChecker flag.
(WebKit::WebPageProxy::toggleAutomaticQuoteSubstitution): Ditto.
(WebKit::WebPageProxy::toggleAutomaticLinkDetection): Ditto.
(WebKit::WebPageProxy::toggleAutomaticDashSubstitution): Ditto.
(WebKit::WebPageProxy::toggleAutomaticTextReplacement): Ditto.

  • UIProcess/WebPageProxy.h: Added messages to toggle TextChecker flags.
  • UIProcess/WebPageProxy.messages.in: Ditto.
  • UIProcess/efl/TextCheckerEfl.cpp: Implemented new TextChecker hooks for non-Cocoa platforms.
  • UIProcess/gtk/TextCheckerGtk.cpp: Ditto.

(WebKit::TextChecker::mutableState): Ditto.

  • UIProcess/ios/TextCheckerIOS.mm: Implemented new TextChecker hooks.

(WebKit::TextChecker::mutableState): Allow modification of text checker without writing to NSUserDefaults.
(WebKit::TextChecker::state): Call mutableState.
(WebKit::TextChecker::accessSmartInsertDeleteEnabled): Dummy function.

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::refresh): Reload TextChecker configuration from NSUserDefaults.
(WebKit::TextChecker::mutableState): Allow modification of text checker without writing to NSUserDefaults.
(WebKit::TextChecker::state): Call mutableState().
(WebKit::TextChecker::accessSmartInsertDeleteEnabled): Allow toggling of smartInsertDeleteEnabled without writing to NSUserDefaults.
(WebKit::initializeState): Deleted.

  • WebProcess/InjectedBundle/API/c/WKBundle.cpp:

(WKBundleSetAutomaticLinkDetectionEnabled): Deleted.

  • WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Removed WKBundleSetAutomaticLinkDetectionEnabled.
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setAutomaticLinkDetectionEnabled): Deleted.

  • WebKit2.xcodeproj/project.pbxproj: Added WKTextChecker to Mac and iOS.
  • WebProcess/InjectedBundle/InjectedBundle.h: Remove setAutomaticLinkDetectionEnabled.
  • WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:

(WebKit::WebEditorClient::toggleSmartInsertDelete): Send message to UI process to toggle TextChecker.
(WebKit::WebEditorClient::toggleAutomaticQuoteSubstitution): Ditto.
(WebKit::WebEditorClient::toggleAutomaticLinkDetection): Ditto.
(WebKit::WebEditorClient::toggleAutomaticDashSubstitution): Ditto.
(WebKit::WebEditorClient::toggleAutomaticTextReplacement): Ditto.

Tools:

Implemented test hooks for text replacement for WebKit2.
Note that spell checking has not been implemented, so most tests which use text replacement still fail.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: Removed setAutomaticLinkDetectionEnabled from TestRunner, moved to Internals.
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: Ditto.

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

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

(WTR::TestController::runTest): Place TextChecker into testing mode.

LayoutTests:

Implemented test hooks for text replacement for WebKit2.
Note that spell checking has not been implemented, so most tests which use text replacement still fail.

  • editing/inserting/smart-link-when-caret-is-moved-before-URL.html: Use internals instead of TestRunner.
  • editing/inserting/typing-space-to-trigger-smart-link.html: Ditto.
  • platform/efl/TestExpectations: Added port specific tests.
  • platform/gtk/TestExpectations: Added port specific tests.
  • platform/ios-simulator/TestExpectations: Added port specific tests.
  • platform/ios-simulator-wk1/TestExpectations: Moved skipped tests to ios-simulator.
  • platform/ios-simulator-wk2/TestExpectations: Moved skipped tests to ios-simulator.
  • platform/mac-wk2/TestExpectations: Removed passing test.
  • platform/win/TestExpectations: Added port specific tests.
  • platform/wk2/TestExpectations: Added better explanation for failing test.
9:20 AM Changeset in webkit [206260] by commit-queue@webkit.org
  • 94 edits
    10 copies
    54 adds
    6 deletes in trunk/LayoutTests

Sync web-platform-tests up to revision 3801ab5
https://bugs.webkit.org/show_bug.cgi?id=162375

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-22
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • resources/ImportExpectations:
  • resources/TestRepositories:
  • resources/resource-files.json:
  • resources/web-platform-tests-modules.json:
  • web-platform-tests/IndexedDB/idbindex-multientry-big-expected.txt:
  • web-platform-tests/XMLHttpRequest/responsexml-document-properties-expected.txt:
  • web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt:
  • web-platform-tests/XMLHttpRequest/setrequestheader-header-allowed.htm:
  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/dom/interfaces.html:
  • web-platform-tests/dom/nodes/Document-createEvent-expected.txt:
  • web-platform-tests/dom/nodes/Document-createEvent.html:
  • web-platform-tests/dom/nodes/NodeList-Iterable.html: Added.
  • web-platform-tests/dom/nodes/rootNode.html: Added.
  • web-platform-tests/dom/nodes/w3c-import.log:
  • web-platform-tests/fetch/api/cors/cors-multiple-origins-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-multiple-origins-worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight-referrer-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight-referrer.js:

(corsPreflightReferrer):

  • web-platform-tests/fetch/api/redirect/redirect-to-dataurl-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-to-dataurl-worker-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-to-dataurl.js:

(redirectDataURL):

  • web-platform-tests/fetch/api/response/response-static-redirect.html:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
  • web-platform-tests/html/browsers/origin/origin-of-data-document.html: Added.
  • web-platform-tests/html/browsers/origin/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/w3c-import.log.
  • web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub-expected.txt:
  • web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.sub-expected.txt:
  • web-platform-tests/html/dom/documents/dom-tree-accessors/document.forms-expected.txt:
  • web-platform-tests/html/dom/documents/dom-tree-accessors/document.forms.html:
  • web-platform-tests/html/dom/elements-embedded.js:
  • web-platform-tests/html/dom/elements-metadata.js:
  • web-platform-tests/html/dom/elements-tabular.js:
  • web-platform-tests/html/dom/elements-text.js:
  • web-platform-tests/html/dom/interfaces-expected.txt:
  • web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • web-platform-tests/html/dom/reflection-metadata-expected.txt:
  • web-platform-tests/html/dom/reflection-tabular-expected.txt:
  • web-platform-tests/html/dom/reflection-text-expected.txt:
  • web-platform-tests/html/dom/reflection.js:

(ReflectionTests.resolveUrl):
(ReflectionTests.parseNonneg): Deleted.
(ReflectionTests.parseInt): Deleted.

  • web-platform-tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-style-element/historical.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-style-element/style_scoped-expected.txt: Removed.
  • web-platform-tests/html/semantics/document-metadata/the-style-element/style_scoped.html: Removed.
  • web-platform-tests/html/semantics/document-metadata/the-style-element/w3c-import.log:
  • web-platform-tests/html/semantics/embedded-content/media-elements/historical-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/historical.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src.html:
  • web-platform-tests/html/semantics/embedded-content/the-area-element/area-shape-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-area-element/area-shape.html:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/historical-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/historical.html:
  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/historical.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/nonexistent-image.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-checkValidity-expected.txt:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-checkValidity.html:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-reportValidity-expected.txt:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-reportValidity.html:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow-expected.txt:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow.html:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow-expected.txt:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow.html:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-stepMismatch-expected.txt:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-stepMismatch.html:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing.html:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html:
  • web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt:
  • web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application.html:
  • web-platform-tests/html/semantics/forms/the-input-element/cloning-steps.html: Added.
  • web-platform-tests/html/semantics/forms/the-input-element/datetime-2-expected.txt: Removed.
  • web-platform-tests/html/semantics/forms/the-input-element/datetime-2.html: Removed.
  • web-platform-tests/html/semantics/forms/the-input-element/files-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/files.html:
  • web-platform-tests/html/semantics/forms/the-input-element/month-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/month.html:
  • web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/type-change-state.html:
  • web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/valueMode.html:
  • web-platform-tests/html/semantics/forms/the-input-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-option-element/option-form.html: Added.
  • web-platform-tests/html/semantics/forms/the-option-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-textarea-element/cloning-steps.html:
  • web-platform-tests/html/semantics/forms/the-textarea-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-textarea-element/wrap-reflect-1a-expected.html: Added.
  • web-platform-tests/html/semantics/forms/the-textarea-element/wrap-reflect-1a.html: Added.
  • web-platform-tests/html/semantics/forms/the-textarea-element/wrap-reflect-1b-expected.html: Added.
  • web-platform-tests/html/semantics/forms/the-textarea-element/wrap-reflect-1b.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-close-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-close.html:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/historical.html: Added.
  • web-platform-tests/html/semantics/scripting-1/the-script-element/script-before-after-events-expected.txt: Removed.
  • web-platform-tests/html/semantics/scripting-1/the-script-element/script-before-after-events.html: Removed.
  • web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log:
  • web-platform-tests/html/semantics/tabular-data/historical.html: Added.
  • web-platform-tests/html/semantics/tabular-data/w3c-import.log:
  • web-platform-tests/html/semantics/text-level-semantics/historical.html: Added.
  • web-platform-tests/html/semantics/text-level-semantics/w3c-import.log: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/w3c-import.log.
  • web-platform-tests/html/syntax/parsing/foreign_content_001.html: Added.
  • web-platform-tests/html/syntax/parsing/foreign_content_003.html: Added.
  • web-platform-tests/html/syntax/parsing/foreign_content_004.html: Added.
  • web-platform-tests/html/syntax/parsing/foreign_content_005.html: Added.
  • web-platform-tests/html/syntax/parsing/foreign_content_006.html: Added.
  • web-platform-tests/html/syntax/parsing/foreign_content_008.html: Added.
  • web-platform-tests/html/syntax/parsing/foreign_content_009.html: Added.
  • web-platform-tests/html/syntax/parsing/foreign_content_010.html: Added.
  • web-platform-tests/html/syntax/parsing/foreign_content_013.html: Added.
  • web-platform-tests/media-source/import_tests.sh:
  • web-platform-tests/media-source/mediasource-append-buffer-expected.txt:
  • web-platform-tests/media-source/mediasource-is-type-supported-expected.txt:
  • web-platform-tests/media-source/mediasource-sourcebuffer-mode-expected.txt:
  • web-platform-tests/media-source/mp4/w3c-import.log: Added.
  • web-platform-tests/media-source/w3c-import.log: Added.
  • web-platform-tests/media-source/webm/w3c-import.log: Added.
  • web-platform-tests/resource-timing/idlharness-expected.txt: Added.
  • web-platform-tests/resource-timing/idlharness.html: Added.
  • web-platform-tests/resource-timing/resource-timing-expected.txt:
  • web-platform-tests/resource-timing/resource-timing.js:

(window.onload):

  • web-platform-tests/resource-timing/w3c-import.log:

LayoutTests:

  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-checkValidity-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-reportValidity-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeOverflow-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-rangeUnderflow-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-stepMismatch-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/month-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/resource-timing/idlharness-expected.txt: Added.
  • platform/wk2/imported/w3c/web-platform-tests/html/semantics/document-metadata/styling/LinkStyle-expected.txt:
  • tests-options.json:
8:14 AM Changeset in webkit [206259] by n_wang@apple.com
  • 6 edits in trunk

AX: aria-pressed state not correctly conveyed to VoiceOver iOS on <button> unless role=button added
https://bugs.webkit.org/show_bug.cgi?id=162269

Reviewed by Chris Fleizach.

Source/WebCore:

<button> with aria-pressed attribute has a toggle button role, however, we were looking for explicit
roles in order to convey the aria-press state. Since there's no spec requiring authors explicitly defining
default ARIA semantics in such case, I'm exposing the aria-pressed state for all valid toggle buttons.

Changes are covered in modified test.

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::isPressed):

LayoutTests:

Added test cases and also fixed a wrong expected output.

  • accessibility/ios-simulator/aria-pressed-state-expected.txt:
  • accessibility/ios-simulator/aria-pressed-state.html:
7:15 AM Changeset in webkit [206258] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Attempt to fix the open source iOS build.

  • platform/spi/cocoa/PassKitSPI.h:
5:43 AM Changeset in webkit [206257] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[GStreamer] Support a direct GPU-to-GPU copy of video textures to WebGL
https://bugs.webkit.org/show_bug.cgi?id=159928

Patch by Olivier Blin <Olivier Blin> on 2016-09-22
Reviewed by Carlos Garcia Campos.

Copy of GStreamer video frames to WebGL textures was not accelerated.

WebGLRenderingContextBase::texImage2D(HTMLVideoElement) went
through a slow software paint() wrapping the video frame into
cairo surface (ImageGStreamer), downloading it to draw to the
image cache context, copying it again in software, and uploading
it back to an OpenGL texture.

This patch implements copyVideoTextureToPlatformTexture() for
the GStreamer media player backend, to do GPU-to-GPU copy, by
extracting code from nativeImageForCurrentTime().

Doing this also fixes bug #159621: red and blue colors were
swapped in video rendered through WebGL with GSTREAMER_GL enabled.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::prepareContextForCairoPaint):
(WebCore::MediaPlayerPrivateGStreamerBase::paintToCairoSurface):
(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
5:14 AM Changeset in webkit [206256] by Carlos Garcia Campos
  • 35 edits
    4 moves in trunk/Source

[GTK] Rename DataObjectGtk as SelectionData
https://bugs.webkit.org/show_bug.cgi?id=162380

Reviewed by Žan Doberšek.

Source/WebCore:

DataObjectGtk represents the data of a selection, like GtkSelectionData, used for clipboard and drag adn drop
operations. Data object is a very generic name, and the Gtk suffix sounds like if this is the GTK implementation
of a generic DataObject class.

  • PlatformGTK.cmake:
  • editing/gtk/EditorGtk.cpp:

(WebCore::createFragmentFromPasteboardData):

  • page/gtk/DragControllerGtk.cpp:
  • platform/DragData.h:
  • platform/Pasteboard.h:
  • platform/PasteboardStrategy.h:

(WebCore::PasteboardStrategy::~PasteboardStrategy): Deleted.

  • platform/PlatformPasteboard.h:
  • platform/gtk/DragDataGtk.cpp:
  • platform/gtk/PasteboardGtk.cpp:

(WebCore::Pasteboard::createPrivate):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::selectionData):
(WebCore::selectionDataTypeFromHTMLClipboardType):
(WebCore::Pasteboard::writeToClipboard):
(WebCore::Pasteboard::readFromClipboard):
(WebCore::Pasteboard::writeString):
(WebCore::Pasteboard::writePlainText):
(WebCore::Pasteboard::write):
(WebCore::Pasteboard::writePasteboard):
(WebCore::Pasteboard::clear):
(WebCore::Pasteboard::canSmartReplace):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::hasData):
(WebCore::Pasteboard::types):
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::readFilenames):

  • platform/gtk/PasteboardHelper.cpp:

(WebCore::PasteboardHelper::getClipboardContents):
(WebCore::PasteboardHelper::targetListForSelectionData):
(WebCore::PasteboardHelper::fillSelectionData):
(WebCore::ClipboardSetData::ClipboardSetData):
(WebCore::getClipboardContentsCallback):
(WebCore::PasteboardHelper::writeClipboardContents):
(WebCore::clearClipboardContentsCallback): Deleted.

  • platform/gtk/PasteboardHelper.h:
  • platform/gtk/PlatformPasteboardGtk.cpp:

(WebCore::PlatformPasteboard::writeToClipboard):
(WebCore::PlatformPasteboard::readFromClipboard):

  • platform/gtk/SelectionData.cpp: Renamed from Source/WebCore/platform/gtk/DataObjectGtk.cpp.

(WebCore::SelectionData::setText):
(WebCore::SelectionData::setURIList):
(WebCore::SelectionData::setURL):
(WebCore::SelectionData::urlLabel):
(WebCore::SelectionData::clearAllExceptFilenames):
(WebCore::SelectionData::clearAll):

  • platform/gtk/SelectionData.h: Renamed from Source/WebCore/platform/gtk/DataObjectGtk.h.

(WebCore::SelectionData::create):
(WebCore::SelectionData::text):
(WebCore::SelectionData::hasText):
(WebCore::SelectionData::clearText):
(WebCore::SelectionData::setMarkup):
(WebCore::SelectionData::markup):
(WebCore::SelectionData::hasMarkup):
(WebCore::SelectionData::clearMarkup):
(WebCore::SelectionData::hasURL):
(WebCore::SelectionData::clearURL):
(WebCore::SelectionData::filenames):
(WebCore::SelectionData::hasURIList):
(WebCore::SelectionData::hasFilenames):
(WebCore::SelectionData::setImage):
(WebCore::SelectionData::image):
(WebCore::SelectionData::hasImage):
(WebCore::SelectionData::unknownTypeData):
(WebCore::SelectionData::unknownTypes):
(WebCore::SelectionData::hasUnknownTypeData):
(WebCore::SelectionData::canSmartReplace):
(WebCore::SelectionData::url): Deleted.
(WebCore::SelectionData::uriList): Deleted.
(WebCore::SelectionData::clearURIList): Deleted.
(WebCore::SelectionData::clearImage): Deleted.
(WebCore::SelectionData::setUnknownTypeData): Deleted.

Source/WebKit2:

  • PlatformGTK.cmake:
  • Shared/gtk/ArgumentCodersGtk.cpp:

(IPC::ArgumentCoder<SelectionData>::encode):
(IPC::ArgumentCoder<SelectionData>::decode):

  • Shared/gtk/ArgumentCodersGtk.h:
  • Shared/gtk/WebSelectionData.cpp: Renamed from Source/WebKit2/Shared/gtk/PasteboardContent.cpp.

(WebKit::WebSelectionData::WebSelectionData):
(WebKit::WebSelectionData::encode):
(WebKit::WebSelectionData::decode):

  • Shared/gtk/WebSelectionData.h: Renamed from Source/WebKit2/Shared/gtk/PasteboardContent.h.
  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::startDrag):

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::performDragControllerAction):
(WebKit::WebPageProxy::startDrag):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
  • UIProcess/gtk/DragAndDropHandler.cpp:

(WebKit::DragAndDropHandler::DroppingContext::DroppingContext):
(WebKit::DragAndDropHandler::startDrag):
(WebKit::DragAndDropHandler::fillDragData):
(WebKit::DragAndDropHandler::finishDrag):
(WebKit::DragAndDropHandler::dropDataSelection):
(WebKit::DragAndDropHandler::dragEntered):
(WebKit::DragAndDropHandler::dragDataSelection):
(WebKit::DragAndDropHandler::dragMotion):
(WebKit::DragAndDropHandler::dragLeave):
(WebKit::DragAndDropHandler::drop):

  • UIProcess/gtk/DragAndDropHandler.h:
  • UIProcess/gtk/WebPasteboardProxyGtk.cpp:

(WebKit::WebPasteboardProxy::writeToClipboard):
(WebKit::WebPasteboardProxy::readFromClipboard):
(WebKit::WebPasteboardProxy::setPrimarySelectionOwner): Deleted.

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::writeToClipboard):
(WebKit::WebPlatformStrategies::readFromClipboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:
  • WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:

(WebKit::WebDragClient::startDrag):

  • WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::performDragControllerAction):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
1:57 AM Changeset in webkit [206255] by commit-queue@webkit.org
  • 8 edits
    1 move
    1 add
    1 delete in trunk

CachedResourceRequest should store a SecurityOrigin
https://bugs.webkit.org/show_bug.cgi?id=162258

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-22
Reviewed by Sam Weinig.

Source/WebCore:

Test: http/tests/local/script-crossorigin-loads-file-scheme.html

Passing SecurityOrigin from loader clients to CachedResource through CachedResourceRequest.
This ensures that specific origin properties like universal access are well preserved.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::loadRequest): Set origin to the request.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::CachedResource): Setting origin from the request.
Computing CORS state based on that origin.
(WebCore::CachedResource::load): Removing origin computation.
(WebCore::CachedResource::loadFrom): Ditto.
(WebCore::CachedResource::computeOrigin): Deleted.

  • loader/cache/CachedResource.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::updateCachedResourceWithCurrentRequest):
(WebCore::CachedResourceLoader::prepareFetch): Introduced to implement step 1 to 7 of https://fetch.spec.whatwg.org/#fetching.
(WebCore::CachedResourceLoader::requestResource):

  • loader/cache/CachedResourceLoader.h:
  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): Storing origin.

  • loader/cache/CachedResourceRequest.h:

(WebCore::CachedResourceRequest::setOrigin):
(WebCore::CachedResourceRequest::releaseOrigin):
(WebCore::CachedResourceRequest::origin):

LayoutTests:

Updated test to expect load even though CORS checks should fail as the document origin has universal access.

  • http/tests/local/script-crossorigin-loads-fail-origin-expected.txt: Removed.
  • http/tests/local/script-crossorigin-loads-file-scheme-expected.txt: Added.
  • http/tests/local/script-crossorigin-loads-file-scheme.html: Renamed from LayoutTests/http/tests/local/script-crossorigin-loads-fail-origin.html.
1:28 AM Changeset in webkit [206254] by commit-queue@webkit.org
  • 18 edits in trunk/Source/WebCore

Refactor ContentSecurityPolicy::allow* methods
https://bugs.webkit.org/show_bug.cgi?id=162335

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-22
Reviewed by Darin Adler.

No change of behavior.

Removing the second parameter of ContentSecurityPolicy::allow* methods.
When true, this parameter makes the methods return true.
This patch updates the callers of allow* methods to check for the parameter before making the call.

Made some refactoring to share more code between the various allow* methods.

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::connect):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::isSafeToLoadURL):
(WebCore::HTMLMediaElement::outOfBandTrackSources):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::allowedToLoadPluginContent):

  • html/HTMLTrackElement.cpp:

(WebCore::HTMLTrackElement::canLoadURL):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
(WebCore::DocumentThreadableLoader::redirectReceived):
(WebCore::DocumentThreadableLoader::loadRequest):
(WebCore::DocumentThreadableLoader::isAllowedByContentSecurityPolicy):

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

(WebCore::FrameLoader::checkIfFormActionAllowedByCSP):

  • loader/PolicyChecker.cpp:

(WebCore::isAllowedByContentSecurityPolicy):

  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::createJavaAppletWidget):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::allowedByContentSecurityPolicy):

  • page/EventSource.cpp:

(WebCore::EventSource::create):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allowObjectFromSource):
(WebCore::ContentSecurityPolicy::allowChildFrameFromSource):
(WebCore::ContentSecurityPolicy::allowResourceFromSource):
(WebCore::ContentSecurityPolicy::allowChildContextFromSource):
(WebCore::ContentSecurityPolicy::allowScriptFromSource):
(WebCore::ContentSecurityPolicy::allowImageFromSource):
(WebCore::ContentSecurityPolicy::allowStyleFromSource):
(WebCore::ContentSecurityPolicy::allowFontFromSource):
(WebCore::ContentSecurityPolicy::allowMediaFromSource):
(WebCore::ContentSecurityPolicy::allowConnectToSource):
(WebCore::ContentSecurityPolicy::allowFormAction):

  • page/csp/ContentSecurityPolicy.h:
  • workers/AbstractWorker.cpp:

(WebCore::AbstractWorker::resolveURL):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::importScripts):

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::initSend):

12:57 AM Changeset in webkit [206253] by svillar@igalia.com
  • 7 edits
    3 adds in trunk

[css-grid] Remove the x2 computation of row sizes with indefinite heights
https://bugs.webkit.org/show_bug.cgi?id=162150

Reviewed by Darin Adler.

PerformanceTests:

Added a new test case which checks the layout performance of grids inside other grids, i.e,
grids acting both as grid container and grid item.

  • Layout/nested-grid.html: Added.

Source/WebCore:

On r192154, among other things, we added a second pass of the track sizing algorithm for
rows in order to properly compute row sizes when the height was indefinite. We did that in
order to have a symmetrical implementation for columns and rows, but unfortunatelly that was
not correct.

Apart from issuing incorrect results in some cases it created a huge performance issue in
the case of having nested grids because we were exponentially increasing the amount of
executions of the track sizing algorithm. The attached performance test shows a 200%
improvement with the patch (26 vs 80 runs/s).

Test: fast/css-grid-layout/nested-grid.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutBlock):
(WebCore::RenderGrid::computeIntrinsicLogicalHeight):
(WebCore::RenderGrid::layoutGridItems):

LayoutTests:

Added a new reftest to check the behavior of grids acting also as grid items and how the
track sizing of rows depend on that. It includes tests for grids which stretch their
children and grids which do not.

Apart from that some expected results were updated so that they no longer fail.

  • fast/css-grid-layout/maximize-tracks-definite-indefinite-height.html: Updated expectations.
  • fast/css-grid-layout/nested-grid-expected.html: Added.
  • fast/css-grid-layout/nested-grid.html: Added.
  • fast/css-grid-layout/percent-track-breadths-regarding-container-size.html: Removed FIXME.
  • fast/css-grid-layout/percent-track-breadths-regarding-container-size-expected.txt: Fixed 2

failing tests.

12:35 AM Changeset in webkit [206252] by commit-queue@webkit.org
  • 34 edits in trunk/Source/WebCore

Improve DeferredWrapper code
https://bugs.webkit.org/show_bug.cgi?id=161787

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-22
Reviewed by Darin Adler.

No change of behavior.

Renaming DeferredWrapper to DeferredPromise.
Adding create method that creates the underlying JSC::JSPromiseDeferred in non-worker environments.
Updated create method to take references.
Introducing domWindow helper accessor into JSDOMObject to ease creation of promise in non-worker environments.
Doing some minor clean up (renaming of m_wrapper to m_promiseDeferred, accessor change).

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::canMakePaymentsWithActiveCard):

  • Modules/applepay/ApplePaySession.h:
  • Modules/fetch/DOMWindowFetch.cpp:

(WebCore::DOMWindowFetch::fetch):

  • Modules/fetch/DOMWindowFetch.h: Updated to take a DeferredPromise to make it consistent with WorkerGlobalScopeFetch.
  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::arrayBuffer):
(WebCore::FetchBody::blob):
(WebCore::FetchBody::json):
(WebCore::FetchBody::text):
(WebCore::FetchBody::consume):
(WebCore::FetchBody::consumeArrayBuffer):
(WebCore::FetchBody::consumeArrayBufferView):
(WebCore::FetchBody::consumeText):
(WebCore::FetchBody::consumeBlob):

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::formData):

  • Modules/fetch/FetchBodyConsumer.cpp:

(WebCore::FetchBodyConsumer::resolveWithData):
(WebCore::FetchBodyConsumer::resolve):

  • Modules/fetch/FetchBodyConsumer.h:
  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::arrayBuffer):
(WebCore::FetchBodyOwner::blob):
(WebCore::FetchBodyOwner::formData):
(WebCore::FetchBodyOwner::json):
(WebCore::FetchBodyOwner::text):

  • Modules/fetch/FetchBodyOwner.h:
  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::consume):
(WebCore::FetchResponse::finishConsumingStream):

  • Modules/fetch/FetchResponse.h:
  • Modules/fetch/WorkerGlobalScopeFetch.cpp:

(WebCore::WorkerGlobalScopeFetch::fetch):

  • Modules/fetch/WorkerGlobalScopeFetch.h:
  • bindings/js/JSCustomElementRegistryCustom.cpp:

(WebCore::whenDefinedPromise):
(WebCore::JSCustomElementRegistry::whenDefined):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::visitChildren):

  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMPromise.cpp:

(WebCore::DOMDeferredPromise::DOMDeferredPromise):
(WebCore::DOMDeferredPromise::~DOMDeferredPromise):
(WebCore::DOMDeferredPromise::clear):
(WebCore::DOMDeferredPromise::contextDestroyed):
(WebCore::DOMDeferredPromise::promise):
(WebCore::DOMDeferredPromise::callFunction):
(WebCore::DOMDeferredPromise::reject):
(WebCore::rejectPromiseWithExceptionIfAny):
(WebCore::fulfillPromiseWithJSON):
(WebCore::fulfillPromiseWithArrayBuffer):
(WebCore::DeferredWrapper::DeferredWrapper): Deleted.
(WebCore::DeferredWrapper::~DeferredWrapper): Deleted.
(WebCore::DeferredWrapper::clear): Deleted.
(WebCore::DeferredWrapper::contextDestroyed): Deleted.
(WebCore::DeferredWrapper::promise): Deleted.
(WebCore::DeferredWrapper::callFunction): Deleted.
(WebCore::DeferredWrapper::reject): Deleted.

  • bindings/js/JSDOMPromise.h:

(WebCore::DOMDeferredPromise::create):
(WebCore::callPromiseFunction):
(WebCore::DOMPromise::DOMPromise):
(WebCore::DOMPromise::deferredPromise):
(WebCore::DOMDeferredPromise::resolveWithValue):
(WebCore::DOMDeferredPromise::resolveWithNewlyCreated):
(WebCore::DOMDeferredPromise::rejectWithValue):
(WebCore::DOMDeferredPromise::resolve):
(WebCore::DOMDeferredPromise::reject):
(WebCore::DeferredWrapper::create): Deleted.
(WebCore::DOMPromise::deferredWrapper): Deleted.
(WebCore::DeferredWrapper::resolveWithValue): Deleted.
(WebCore::DeferredWrapper::resolveWithNewlyCreated): Deleted.
(WebCore::DeferredWrapper::rejectWithValue): Deleted.
(WebCore::DeferredWrapper::resolve): Deleted.
(WebCore::DeferredWrapper::reject): Deleted.

  • bindings/js/JSDOMWrapper.cpp: Introducing domWindow() accessor.
  • bindings/js/JSDOMWrapper.h:
  • bindings/js/JSFontFaceCustom.cpp:

(WebCore::JSFontFace::loaded):

  • bindings/js/JSFontFaceSetCustom.cpp:

(WebCore::JSFontFaceSet::ready):

  • bindings/js/JSMediaDevicesCustom.cpp:

(WebCore::JSMediaDevices::getUserMedia):

  • bindings/js/JSMediaStreamTrackCustom.cpp:

(WebCore::JSMediaStreamTrack::applyConstraints):

  • bindings/js/JSReadableStreamSourceCustom.cpp:

(WebCore::JSReadableStreamSource::start):

  • bindings/js/JSWebKitSubtleCryptoCustom.cpp:

(WebCore::JSWebKitSubtleCrypto::encrypt):
(WebCore::JSWebKitSubtleCrypto::decrypt):
(WebCore::JSWebKitSubtleCrypto::sign):
(WebCore::JSWebKitSubtleCrypto::verify):
(WebCore::JSWebKitSubtleCrypto::digest):
(WebCore::JSWebKitSubtleCrypto::generateKey):
(WebCore::JSWebKitSubtleCrypto::importKey):
(WebCore::JSWebKitSubtleCrypto::exportKey):
(WebCore::JSWebKitSubtleCrypto::wrapKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):
(GenerateReturnParameters):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise):

  • dom/CustomElementRegistry.h:

(WebCore::CustomElementRegistry::promiseMap):

Sep 21, 2016:

11:07 PM Changeset in webkit [206251] by bshafiei@apple.com
  • 5 edits in tags/Safari-603.1.6.0.1/Source

Versioning.

11:03 PM Changeset in webkit [206250] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.6.0.1

New tag.

11:01 PM Changeset in webkit [206249] by ap@apple.com
  • 6 edits in trunk/Source

Rolling out r206244, as it caused flaky crashes on tests.
Was: Correct uses of 'safeCast'

Source/WebCore:

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::adjustSize):

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::destroyMetadataAndNotify):
(WebCore::BitmapImage::cacheFrame):
(WebCore::BitmapImage::didDecodeProperties):
(WebCore::BitmapImage::dataChanged):
(WebCore::BitmapImage::frameImageAtIndex):

  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::decodedSizeChanged):
(WebCore::PDFDocumentImage::updateCachedImageIfNeeded):

Source/WTF:

  • wtf/StdLibExtras.h:

(WTF::safeCast):

10:19 PM Changeset in webkit [206248] by jiewen_tan@apple.com
  • 3 edits in trunk/LayoutTests

Unreviewed, update ios-simulator-wk1 test expectations

  • platform/ios-simulator-wk1/TestExpectations:
  • platform/ios-simulator/TestExpectations:
10:03 PM Changeset in webkit [206247] by mitz@apple.com
  • 6 edits in trunk

[macOS] Upon layout, _webView:renderingProgressDidChange: fires before the intrinsic content size is updated
https://bugs.webkit.org/show_bug.cgi?id=162359
<rdar://problem/27776454>

Reviewed by Tim Horton.

Source/WebKit2:

Test: added to TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm

  • WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: Fixed a bug where m_pendingNewlyReachedLayoutMilestones was never initialized.
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: Added m_pendingNewlyReachedLayoutMilestones member variable to this derived class as well.
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::flushLayers): If we have pending milestones, notify

the WebPageProxy now, after any content size changes have been sent.

(WebKit::TiledCoreAnimationDrawingArea::dispatchDidReachLayoutMilestone): New override that

accumulates the milestones into m_pendingNewlyReachedLayoutMilestones and returns true,
so that the caller won’t notify the WebPageProxy immediately.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm:

(TEST):

9:36 PM Changeset in webkit [206246] by Chris Dumez
  • 6 edits
    2 adds in trunk

Fix serialization of bgsound, keygen and track elements
https://bugs.webkit.org/show_bug.cgi?id=162353

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline W3C tests now that more checks are passing.

  • web-platform-tests/html/syntax/serializing-html-fragments/outerHTML-expected.txt:
  • web-platform-tests/html/syntax/serializing-html-fragments/serializing-expected.txt:
  • web-platform-tests/html/syntax/serializing-xml-fragments/outerHTML-expected.txt:

Source/WebCore:

Fix serialization of keygen and track elements to match the specification:

They are not supposed to have an end tag. Firefox and Chrome agree with
the specification.

No new tests, rebaselined existing tests.

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::elementCannotHaveEndTag):

9:32 PM Changeset in webkit [206245] by keith_miller@apple.com
  • 22 edits in trunk

Fix build for future versions of Clang.
https://bugs.webkit.org/show_bug.cgi?id=162346

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This fixes issues with the WebCore build where inline
template-class function definitions are marked as exported. This
genereates a weak external symobl that our build does not like.

  • runtime/VM.h:

(JSC::VM::setGlobalConstRedeclarationShouldThrow):

Source/WebCore:

This fixes issues with the WebCore build where inline
template-class function definitions are marked as exported. This
genereates a weak external symobl that our build does not like.

  • Configurations/WebCore.unexp:
  • dom/Exception.h:
  • page/Frame.h:
  • platform/cocoa/WebPlaybackSessionModelMediaElement.h:
  • platform/cocoa/WebVideoFullscreenModelVideoElement.h:

(WebCore::WebVideoFullscreenModelVideoElement::videoElement):

  • platform/graphics/Color.h:
  • platform/graphics/transforms/TransformationMatrix.h:

(WebCore::TransformationMatrix::rotate):

  • platform/mac/WebVideoFullscreenInterfaceMac.h:
  • platform/network/ParsedContentRange.h:

(WebCore::ParsedContentRange::ParsedContentRange):
(WebCore::ParsedContentRange::isValid):

  • platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::certificateInfo):

  • platform/text/TextStream.h:

(WebCore::TextStream::increaseIndent):
(WebCore::TextStream::decreaseIndent):

Source/WTF:

This fixes issues with the WebCore build where inline
template-class function definitions are marked as exported. This
genereates a weak external symobl that our build does not like.

  • wtf/text/StringImpl.h:

Tools:

  • TestWebKitAPI/Counters.cpp:
  • TestWebKitAPI/Counters.h:

(DeleterCounter::deleterCount):
(DeleterCounter::TestingScope::TestingScope):
(DeleterCounter::operator()):

  • TestWebKitAPI/Tests/WTF/HashCountedSet.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::TEST):

6:23 PM Changeset in webkit [206244] by Brent Fulgham
  • 6 edits in trunk/Source

Correct uses of 'safeCast'
https://bugs.webkit.org/show_bug.cgi?id=162301
<rdar://problem/28343658>

Reviewed by Antti Koivisto.

Source/WebCore:

A number of integer calculations in BitmapImage and PDFDocumentImage
are not properly checked for overflow. Correct this.

Tested by fast/images/large-size-image-crash.html

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::adjustSize): RELEASE_ASSERT on overflow.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::destroyMetadataAndNotify):
(WebCore::BitmapImage::cacheFrame):
(WebCore::BitmapImage::didDecodeProperties):
(WebCore::BitmapImage::dataChanged):
(WebCore::BitmapImage::ensureFrameAtIndexIsCached):
(WebCore::BitmapImage::frameImageAtIndex):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::decodedSizeChanged):
(WebCore::PDFDocumentImage::updateCachedImageIfNeeded):

Source/WTF:

  • wtf/StdLibExtras.h:

(WTF::safeCast): RELEASE_ASSERT on overflow.

4:50 PM Changeset in webkit [206243] by Chris Dumez
  • 11 edits in trunk

Setting HTMLMeterElement's attributes to non-finite values throws wrong exception type
https://bugs.webkit.org/show_bug.cgi?id=162364

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Merge meter test changes from https://github.com/w3c/web-platform-tests/pull/3791.

  • web-platform-tests/html/semantics/forms/the-meter-element/meter-expected.txt:
  • web-platform-tests/html/semantics/forms/the-meter-element/meter.html:

Source/WebCore:

Setting HTMLMeterElement's attributes to non-finite values throws wrong exception type.
It should throw a TypeError because their type is 'double' but we throw a
NOT_SUPPORTED_ERR.

Specification:

Firefox and Chrome agree with the specification.

No new tests, updated existing test.

  • html/HTMLMeterElement.cpp:

(WebCore::HTMLMeterElement::setMin):
(WebCore::HTMLMeterElement::setMax):
(WebCore::HTMLMeterElement::setValue):
(WebCore::HTMLMeterElement::setLow):
(WebCore::HTMLMeterElement::setHigh):
(WebCore::HTMLMeterElement::setOptimum):

  • html/HTMLMeterElement.h:
  • html/HTMLMeterElement.idl:

LayoutTests:

Update existing test to reflect behavior change.

  • fast/dom/HTMLMeterElement/script-tests/set-meter-properties.js:
  • fast/dom/HTMLMeterElement/set-meter-properties-expected.txt:
4:20 PM Changeset in webkit [206242] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Fix open source build.

  • platform/spi/cocoa/PassKitSPI.h:
4:08 PM Changeset in webkit [206241] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Fix spelling errors (that were supposed to be part of my previous commit).

3:52 PM Changeset in webkit [206240] by Chris Dumez
  • 7 edits in trunk

Fix serialization of HTML Element attributes
https://bugs.webkit.org/show_bug.cgi?id=162356

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/html/semantics/embedded-content/the-img-element/current-pixel-density/basic-expected.txt:
  • web-platform-tests/html/syntax/serializing-html-fragments/serializing-expected.txt:

Source/WebCore:

Fix serialization of HTML Element attributes to align with:

In particular, we should not escape '<' and '>'.

Firefox and Chrome both match the specification.

Note that we keep escaping '<' and '>' for Element attributes in the
context of XML serialization, as per:

No new tests, rebaselined existing test.

  • editing/MarkupAccumulator.h:

LayoutTests:

Rebaseline test to reflect behavior change.

  • editing/pasteboard/paste-noscript-expected.txt:
3:52 PM Changeset in webkit [206239] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

Inline function only used in one place
https://bugs.webkit.org/show_bug.cgi?id=162363

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-21
Reviewed by Saam Barati.

  • bytecompiler/NodesCodegen.cpp:

(JSC::ForInNode::emitBytecode):
(JSC::ForInNode::emitMultiLoopBytecode):

  • parser/Nodes.h:

No need for the extra function, it adds no clarification.

3:51 PM Changeset in webkit [206238] by andersca@apple.com
  • 20 edits in trunk/Source

Source/WebCore:
support openPaymentSetup API on ApplePaySession object
https://bugs.webkit.org/show_bug.cgi?id=162357
rdar://problem/26776939

Reviewed by Tim Horton.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::openPaymentSetup):
Perform security checks and then call into the PaymentCoordiantor. In its completion handler, we resolve the promise.

  • Modules/applepay/ApplePaySession.h:

Add new members.

  • Modules/applepay/ApplePaySession.idl:

Add openPaymentSetup declaration.

  • Modules/applepay/PaymentCoordinator.cpp:

(WebCore::PaymentCoordinator::openPaymentSetup):
Call through to the clients.

  • Modules/applepay/PaymentCoordinator.h:
  • Modules/applepay/PaymentCoordinatorClient.h:

Add new members.

  • loader/EmptyClients.cpp:

Add new stub.

  • platform/spi/cocoa/PassKitSPI.h:

Add SPI declaration.

Source/WebKit/mac:
Support openPaymentSetup API on ApplePaySession object
https://bugs.webkit.org/show_bug.cgi?id=162357
rdar://problem/26776939

Reviewed by Tim Horton.

Add openPaymentSetup stub.

  • WebCoreSupport/WebPaymentCoordinatorClient.h:
  • WebCoreSupport/WebPaymentCoordinatorClient.mm:

(WebPaymentCoordinatorClient::openPaymentSetup):

Source/WebKit2:
support openPaymentSetup API on ApplePaySession object
https://bugs.webkit.org/show_bug.cgi?id=162357
rdar://problem/26776939

Reviewed by Tim Horton.

  • UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:

(WebKit::WebPaymentCoordinatorProxy::openPaymentSetup):
Call through to platformOpenPaymentSetup, and in the completion handler, send back a OpenPaymentSetupReply message.

  • UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:

Add new members.

  • UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in:

Add OpenPaymentSetup message.

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):
Allocate a PKPassLibrary and call openPaymentSetupForMerchantIdentifier:domain:completion: on it.

  • WebProcess/ApplePay/WebPaymentCoordinator.cpp:

(WebKit::generateOpenPaymentSetupReplyID):
New helper function to generate a reply ID.

(WebKit::WebPaymentCoordinator::openPaymentSetup):
Add the completion handler to m_pendingOpenPaymentSetupCallbacks and send a OpenPaymentSetup message to the UI process.

(WebKit::WebPaymentCoordinator::openPaymentSetupReply):
Grab the callback given its ID and invoke it.

  • WebProcess/ApplePay/WebPaymentCoordinator.h:

Add new members.

  • WebProcess/ApplePay/WebPaymentCoordinator.messages.in:

Add OpenPaymentSetupReply message.

2:40 PM Changeset in webkit [206237] by Matt Baker
  • 7 edits in trunk

Web Inspector: Improve output of TestHarness.expect* failures
https://bugs.webkit.org/show_bug.cgi?id=162177
<rdar://problem/28367186>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

This patch adds specific expectation functions to TestHarness, to better
express intent when writing tests, and to allow more details to be logged
in the event of a failure.

For functions taking both actual and expected parameters, the actual
parameter comes first. This convention simplifies the implementation of
TestHarness, improves the readability of tests involving inequalities,
and is consistent with XCTest assertions.

  • UserInterface/Test/TestHarness.js:

(TestHarness):
(TestHarness.prototype.expectThat):
(TestHarness.prototype.expectFalse):
(TestHarness.prototype.expectNull):
(TestHarness.prototype.expectNotNull):
(TestHarness.prototype.expectEqual):
(TestHarness.prototype.expectNotEqual):
(TestHarness.prototype.expectShallowEqual):
(TestHarness.prototype.expectNotShallowEqual):
(TestHarness.prototype.expectEqualWithAccuracy):
(TestHarness.prototype.expectLessThan):
(TestHarness.prototype.expectLessThanOrEqual):
(TestHarness.prototype.expectGreaterThan):
(TestHarness.prototype.expectGreaterThanOrEqual):
New expectation functions, all of which call _expect under the hood.

(TestHarness.prototype._expect):
Helper method which calls pass or fail. Creates a message when no user
message is provided, and logs expected and actual values in the event
of a failure.

(TestHarness.prototype._expectationValueAsString):
(TestHarness.prototype._expectationMessageFormat):
Get a message format string for the expectation type. Used to create
pass/fail message when no user message is provided.

(TestHarness.prototype._expectedValueFormat):
Get a format string for displaying the expected value. Used to create
the "Expected: " failure message line.

LayoutTests:

Extend coverage to more TestHarness messages by omitting the optional
message parameter when calling expect* functions.

Other improvements:

  • expectEqual/expectNotEqual should test WebInspector object instances, to cover more TestHarness message formatting cases.
  • expectEqual/expectNotEqual should test shallow equal arrays, since the test is for strict equality.
  • inspector/indexeddb/requestData-expected.txt:
  • inspector/unit-tests/number-utilities-expected.txt:

Updated expectations for new TestHarness output.

  • inspector/unit-tests/test-harness-expect-functions-expected.txt:
  • inspector/unit-tests/test-harness-expect-functions.html:
2:22 PM Changeset in webkit [206236] by commit-queue@webkit.org
  • 22 edits in trunk

Unreviewed, rolling out r206222 and r206227.
https://bugs.webkit.org/show_bug.cgi?id=162361

"broke the windows build" (Requested by keith_mi_ on #webkit).

Reverted changesets:

"Fix build for future versions of Clang."
https://bugs.webkit.org/show_bug.cgi?id=162346
http://trac.webkit.org/changeset/206222

"Attempt to fix windows build after r206222."
http://trac.webkit.org/changeset/206227

2:16 PM Changeset in webkit [206235] by achristensen@apple.com
  • 4 edits in trunk

URLParser should match URL::parse when parsing data urls with slashes in them
https://bugs.webkit.org/show_bug.cgi?id=162352

Reviewed by Darin Adler.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

1:53 PM Changeset in webkit [206234] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] Null pointer crash under WebCore::CACFLayerTreeHost::create().
https://bugs.webkit.org/show_bug.cgi?id=162266
<rdar://problem/28345073>

Reviewed by Brent Fulgham.

Add null pointer check.

  • platform/graphics/ca/win/CACFLayerTreeHost.cpp:

(WebCore::CACFLayerTreeHost::create):

1:47 PM Changeset in webkit [206233] by Chris Dumez
  • 5 edits in trunk

Fix enumeration of properties cross origin
https://bugs.webkit.org/show_bug.cgi?id=162328

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:

Source/WebCore:

All cross origin properties for Window / Location are supposed to be not enumerable:

Therefore, there should be no properties to iterate on for cross origin Window /
Location objects.

No new tests, rebaselined existing test.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertyNames):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::getOwnPropertyNames):

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

Marking inspector/css/manager-preferredInspectorStyleSheetForFrame.html as flaky on mac.
https://bugs.webkit.org/show_bug.cgi?id=162305

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:19 PM Changeset in webkit [206231] by achristensen@apple.com
  • 4 edits in trunk

URLParser should fail when parsing invalid relative URLs with no schemes
https://bugs.webkit.org/show_bug.cgi?id=162355

Reviewed by Tim Horton.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::copyASCIIStringUntil):
When copying from a null String, is8Bit dereferences a null pointer. We don't want to do that.
(WebCore::URLParser::parse):
What the spec calls a "null" URL matches !url.isValid(), not url.isNull().
The former reflects whether the parsing succeeded,
the latter whether the contained String (which could be an invalid URL) is null.

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

12:59 PM Changeset in webkit [206230] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Document::styleResolverChanged simplification
https://bugs.webkit.org/show_bug.cgi?id=162347

Reviewed by Anders Carlsson.

  • dom/Document.cpp:

(WebCore::Document::implicitClose):
(WebCore::Document::setParsing):
(WebCore::Document::write):
(WebCore::Document::styleResolverChanged):

  • Remove unncessary AnimationUpdateBlock, it is created by recalcStyle.
  • Remove explicit setNeedsLayoutAndPrefWidthsRecalc/scheduleRelayout calls, style resolution invalidates those as needed.
  • Remove evaluateMediaQueryList call, that is done on layout as needed.
  • Remove the ancient INSTRUMENT_LAYOUT_SCHEDULING and the related printfs.
12:42 PM Changeset in webkit [206229] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

12:38 PM Changeset in webkit [206228] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.6

New tag.

12:33 PM Changeset in webkit [206227] by keith_miller@apple.com
  • 2 edits in trunk/Source/WebCore

Attempt to fix windows build after r206222.

  • page/MainFrame.h:

(WebCore::Frame::isMainFrame):

12:09 PM Changeset in webkit [206226] by fpizlo@apple.com
  • 17 edits
    2 adds in trunk

Add a Fence opcode to B3
https://bugs.webkit.org/show_bug.cgi?id=162343

Reviewed by Geoffrey Garen.
Source/JavaScriptCore:


This adds the most basic fence support to B3. Currently, this is optimal on x86 and correct
on ARM. It also happens to be sufficient and optimal for what we'll do in the concurrent GC.

The idea of Fence is that it can represent any standalone fence instruction by having two
additional params: a read range and a write range. If the write range is empty, this is
taken to be a store-store fence, which turns into zero code on x86 and a cheaper fence on
ARM.

It turns out that this is powerful enough to express store-load and store-store fences. For
load-store and load-load fences, you wouldn't have wanted to use any code on x86 and you
wouldn't have wanted a standalone barrier on ARM. For those cases, you'd want either a
fenced load (load acquire) or a dependency. See bug 162349 and bug 162350, respectively.

This isn't yet optimized for store-store fences on ARM because we don't have the
MacroAssembler support. Also, the support for "dmb ish" is not really what we want (it seems
to use a heavier fence). I don't think that this is urgent because of how the concurrent GC
will use this facility. I've left that to bug 162342.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssemblerCodeRef.cpp:

(JSC::MacroAssemblerCodeRef::tryToDisassemble):
(JSC::MacroAssemblerCodeRef::disassembly):

  • assembler/MacroAssemblerCodeRef.h:

(JSC::MacroAssemblerCodeRef::size): Deleted.
(JSC::MacroAssemblerCodeRef::tryToDisassemble): Deleted.

  • b3/B3Compilation.h:

(JSC::B3::Compilation::codeRef):
(JSC::B3::Compilation::disassembly):
(JSC::B3::Compilation::code): Deleted.

  • b3/B3Effects.h:
  • b3/B3FenceValue.cpp: Added.

(JSC::B3::FenceValue::~FenceValue):
(JSC::B3::FenceValue::cloneImpl):
(JSC::B3::FenceValue::FenceValue):

  • b3/B3FenceValue.h: Added.
  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::lower):

  • b3/B3Opcode.cpp:

(WTF::printInternal):

  • b3/B3Opcode.h:
  • b3/B3Validate.cpp:
  • b3/B3Value.cpp:

(JSC::B3::Value::effects):

  • b3/air/AirOpcode.opcodes:
  • b3/testb3.cpp:

(JSC::B3::checkUsesInstruction):
(JSC::B3::checkDoesNotUseInstruction):
(JSC::B3::testX86MFence):
(JSC::B3::testX86CompilerFence):
(JSC::B3::run):

Websites/webkit.org:

  • docs/b3/intermediate-representation.html:
11:42 AM Changeset in webkit [206225] by Gustavo Noronha Silva
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge 206216 - Unreviewed, build fix.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::paint): fix usage of deviceScaleFactor variable which was
removed.

11:41 AM Changeset in webkit [206224] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

New DocumentLoader logging causes crashes
https://bugs.webkit.org/show_bug.cgi?id=162348
<rdar://problem/28404744>

Patch by Keith Rollin <Keith Rollin> on 2016-09-21
Reviewed by Chris Dumez

Check for NULL m_frame before using it.

No new tests -- no tests for logging, though this issue was found by
contentfiltering/block-after-will-send-request-then-allow-unblock.html

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startLoadingMainResource):

11:33 AM Changeset in webkit [206223] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Optimize URLParser
https://bugs.webkit.org/show_bug.cgi?id=162338

Reviewed by Tim Horton.

No change in behavior. Just a marginal performance improvement.

  • platform/URLParser.cpp:

(WebCore::isValidSchemeCharacter):
Added to reduce branches when parsing the scheme of a URL. Now there is a table lookup instead of many range checks.
(WebCore::URLParser::parse):
Use appendVector, which uses memcpy.
(WebCore::URLParser::parseHostAndPort):
If we know that we are parsing the serialized output of a valid URL,
we do not need to convert host characters to lower case.
They are already lower case.

11:24 AM Changeset in webkit [206222] by keith_miller@apple.com
  • 21 edits in trunk

Fix build for future versions of Clang.
https://bugs.webkit.org/show_bug.cgi?id=162346

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This fixes issues with the WebCore build where inline
template-class function definitions are marked as exported. This
genereates a weak external symobl that our build does not like.

  • runtime/VM.h:

(JSC::VM::setGlobalConstRedeclarationShouldThrow):

Source/WebCore:

This fixes issues with the WebCore build where inline
template-class function definitions are marked as exported. This
genereates a weak external symobl that our build does not like.

  • Configurations/WebCore.unexp:
  • dom/Exception.h:
  • page/Frame.h:
  • platform/cocoa/WebPlaybackSessionModelMediaElement.h:
  • platform/cocoa/WebVideoFullscreenModelVideoElement.h:

(WebCore::WebVideoFullscreenModelVideoElement::videoElement):

  • platform/graphics/Color.h:
  • platform/graphics/transforms/TransformationMatrix.h:

(WebCore::TransformationMatrix::rotate):

  • platform/mac/WebVideoFullscreenInterfaceMac.h:
  • platform/network/ParsedContentRange.h:

(WebCore::ParsedContentRange::ParsedContentRange):
(WebCore::ParsedContentRange::isValid):

  • platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::certificateInfo):

  • platform/text/TextStream.h:

(WebCore::TextStream::increaseIndent):
(WebCore::TextStream::decreaseIndent):

Source/WTF:

This fixes issues with the WebCore build where inline
template-class function definitions are marked as exported. This
genereates a weak external symobl that our build does not like.

  • wtf/text/StringImpl.h:

Tools:

  • TestWebKitAPI/Counters.cpp:
  • TestWebKitAPI/Counters.h:

(DeleterCounter::deleterCount):
(DeleterCounter::TestingScope::TestingScope):
(DeleterCounter::operator()):

  • TestWebKitAPI/Tests/WTF/HashCountedSet.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::TEST):

11:23 AM Changeset in webkit [206221] by Chris Dumez
  • 10 edits
    2 adds in trunk

Object.getOwnPropertyDescriptor() does not work correctly cross origin
https://bugs.webkit.org/show_bug.cgi?id=162311

Reviewed by Gavin Barraclough.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:

Source/JavaScriptCore:

Add a CustomGetterSetter field to PropertySlot that gets populated
by getOwnPropertySlot() and use it in getOwnPropertyDescriptor()
to properly populate the descriptor. We used to rely on reifying
the properties and then call getDirect() in order to get the
CustomGetterSetter. However, this hack was insufficient to support
the cross-origin case because we need to control more precisely
the visibility of the getter and the setter. For example, Location's
href property has both a getter and a setter in the same origin
case but only has a setter in the cross-origin case.

In the future, we can extend the use of PropertySlot's
customGetterSetter field to the same origin case and get rid of the
reification + getDirect() hack in getOwnPropertyDescriptor().

  • runtime/JSObject.cpp:

(JSC::JSObject::getOwnPropertyDescriptor):

  • runtime/PropertySlot.cpp:

(JSC::PropertySlot::customAccessorGetter):

  • runtime/PropertySlot.h:

Source/WebCore:

Object.getOwnPropertyDescriptor() does not work correctly cross origin. In particular:

  • We return value descriptors for attributes instead of getter/setter descriptors
  • attributes / operations are wrongly marked as non-configurable

Corresponding specification:

Test: http/tests/security/cross-origin-descriptors.html

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::getOwnPropertySlotDelegate):

LayoutTests:

Add layout test coverage.

  • http/tests/security/cross-origin-descriptors-expected.txt: Added.
  • http/tests/security/cross-origin-descriptors.html: Added.
11:04 AM Changeset in webkit [206220] by achristensen@apple.com
  • 2 edits in trunk/Tools

Prepare API tests for enabling URLParser by default
https://bugs.webkit.org/show_bug.cgi?id=162341

Reviewed by Tim Horton.

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::checkURL):
(TestWebKitAPI::checkRelativeURL):
(TestWebKitAPI::checkURLDifferences):
(TestWebKitAPI::checkRelativeURLDifferences):
(TestWebKitAPI::shouldFail):

11:02 AM Changeset in webkit [206219] by achristensen@apple.com
  • 4 edits in trunk

URLParser: Correctly parse URLs that are just nonspecialscheme:/
https://bugs.webkit.org/show_bug.cgi?id=162340

Reviewed by Tim Horton.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):
r206162 wasn't quite right. If a url is just nonspecialscheme:/ then the path should indeed be /

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

11:00 AM Changeset in webkit [206218] by achristensen@apple.com
  • 4 edits in trunk

URLParser: correctly parse relative URLs that are just one character
https://bugs.webkit.org/show_bug.cgi?id=162344

Reviewed by Tim Horton.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

10:44 AM Changeset in webkit [206217] by dbates@webkit.org
  • 4 edits
    11 adds in trunk

REGRESSION (r201090): Setting style.webkitTextSizeAdjust does not change text change on iPad
https://bugs.webkit.org/show_bug.cgi?id=162227
<rdar://problem/27201529>

Reviewed by Simon Fraser.

Source/WebCore:

The CSS property -webkit-text-size-adjust should be respected on all iOS devices. Following
r201090 we respect it only on iPhone and in iPhone-apps run on iPad.

Tests: fast/text-autosizing/ios/ipad/programmatic-text-size-adjust.html

fast/text-autosizing/ios/ipad/text-size-adjust-inline-style.html
fast/text-autosizing/ios/programmatic-text-size-adjust.html
fast/text-autosizing/ios/text-size-adjust-inline-style.html
fast/text-autosizing/text-size-adjust-inline-style.html

  • css/parser/CSSParser.cpp:

(WebCore::isValidKeywordPropertyAndValue): Remove unused code to validate -webkit-text-size-adjust.
This code is never used because -webkit-text-size-adjust is a value property (since it accepts a
<percentage> as a value and CSSParserFastPaths::isKeywordPropertyID(CSSPropertyWebkitTextSizeAdjust)
returns false). That is, it is not a keyword property.
(WebCore::CSSParser::parseValue): Always enable the -webkit-text-size-adjust CSS property when
building for iOS regardless of whether Settings:textAutosizingEnabled() is enabled.

LayoutTests:

Add tests to ensure setting the CSS property -webkit-text-size-adjust in a stylesheet or
programmatically is respected on iPhone and iPad. Also added a test to ensure that this
CSS property is ignored on macOS by default.

Note that we have existing tests that ensure that -webkit-text-size-adjust is respected
on macOS when the internal setting Settings::textAutosizingEnabled() is enabled.

  • fast/text-autosizing/ios/ipad/programmatic-text-size-adjust-expected.txt: Added.
  • fast/text-autosizing/ios/ipad/programmatic-text-size-adjust.html: Added.
  • fast/text-autosizing/ios/ipad/text-size-adjust-inline-style-expected.html: Added.
  • fast/text-autosizing/ios/ipad/text-size-adjust-inline-style.html: Added.
  • fast/text-autosizing/ios/programmatic-text-size-adjust-expected.txt: Added.
  • fast/text-autosizing/ios/programmatic-text-size-adjust.html: Added.
  • fast/text-autosizing/ios/text-size-adjust-inline-style-expected.html: Added.
  • fast/text-autosizing/ios/text-size-adjust-inline-style.html: Added.
  • fast/text-autosizing/text-size-adjust-inline-style-expected.html: Added.
  • fast/text-autosizing/text-size-adjust-inline-style.html: Added.
  • platform/mac/TestExpectations: Skip the iOS and iPad tests on Mac. Otherwise, they will fail

because these tests intentionally do not call window.internal.settings.setTextAutosizingEnabled(true)
so as to test the default port behavior. And on Mac automatic text size adjustment is disabled
by default.

10:35 AM Changeset in webkit [206216] by Gustavo Noronha Silva
  • 2 edits in trunk/Source/WebKit2

Unreviewed, build fix.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::paint): fix usage of deviceScaleFactor variable which was
removed.

10:20 AM Changeset in webkit [206215] by jer.noble@apple.com
  • 3 edits in trunk/LayoutTests

Unreviewed gardening; after r206208, update url-null.html test to reflect current (specced) behavior.

  • fast/files/url-null-expected.txt:
  • fast/files/url-null.html:
10:16 AM Changeset in webkit [206214] by jer.noble@apple.com
  • 2 edits in trunk/LayoutTests/imported/w3c

Unreviewed gardening; add some whitespace to expected results.

  • web-platform-tests/media-source/URL-createObjectURL-null-expected.txt:
9:28 AM Changeset in webkit [206213] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK] Build fails with GSTREAMER_GL enabled
https://bugs.webkit.org/show_bug.cgi?id=162337

Patch by Miguel Gomez <magomez@igalia.com> on 2016-09-21
Reviewed by Michael Catanzaro.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): Remove uneeded const.

9:26 AM Changeset in webkit [206212] by msaboff@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

FTL needs to reserve callee stack space in bytes
https://bugs.webkit.org/show_bug.cgi?id=162324

Reviewed by Geoffrey Garen.

Changed two instances where we call B3::Procedure::requestCallArgAreaSize() with the
number of JSValue sized objects of stack space instead of bytes. The correct units
to use is bytes.

Renamed both the Air and B3 related callArgAreaSize() to callArgAreaSizeInBytes().

No new tests as this doesn't surface as an issue when arguments are passed on the stack.

  • b3/B3Procedure.cpp:

(JSC::B3::Procedure::callArgAreaSizeInBytes):
(JSC::B3::Procedure::requestCallArgAreaSizeInBytes):
(JSC::B3::Procedure::callArgAreaSize): Deleted.
(JSC::B3::Procedure::requestCallArgAreaSize): Deleted.

  • b3/B3Procedure.h:
  • b3/air/AirAllocateStack.cpp:

(JSC::B3::Air::allocateStack):

  • b3/air/AirCCallingConvention.cpp:

(JSC::B3::Air::computeCCallingConvention):

  • b3/air/AirCode.h:

(JSC::B3::Air::Code::callArgAreaSizeInBytes):
(JSC::B3::Air::Code::requestCallArgAreaSizeInBytes):
(JSC::B3::Air::Code::callArgAreaSize): Deleted.
(JSC::B3::Air::Code::requestCallArgAreaSize): Deleted.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileCallEval):

9:25 AM Changeset in webkit [206211] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r206127): ASSERTION FAILED: !isClosed() in WebCore::MediaSource::detachFromElement
https://bugs.webkit.org/show_bug.cgi?id=162307

Reviewed by Eric Carlson.

The test is crashing when the ScriptExecutionContext is calling stop() on the media element before
it's attached MediaSource has been open()ed, which is a valid state. Removing this ASSERT().

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::detachFromElement):

9:16 AM Changeset in webkit [206210] by jer.noble@apple.com
  • 3 edits
    2 adds in trunk/LayoutTests

LayoutTests/imported/w3c:
Unreviewed gardening; added test expectations for new tests.

  • web-platform-tests/media-source/mediasource-attach-stops-delaying-load-event-expected.txt: Added.
  • web-platform-tests/media-source/mediasource-sourcebuffer-mode-timestamps-expected.txt: Added.

LayoutTests:
Unreviewed gardening; mark imported/w3c/web-platform-tests/media-source/ tests as passing by default
and mark specific tests to skip or fail (rather than vice versa).

  • platform/mac/TestExpectations:
9:13 AM Changeset in webkit [206209] by jer.noble@apple.com
  • 4 edits in trunk

[media-source] Fix imported/w3c/web-platform-tests/media-source/mediasource-activesourcebuffers.html
https://bugs.webkit.org/show_bug.cgi?id=162257

Reviewed by Eric Carlson.

Source/WebCore:

Some of the conditions in the track changed methods were reversed, and all failed to schedule
a change event.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::videoTrackSelectedChanged):
(WebCore::SourceBuffer::audioTrackEnabledChanged):
(WebCore::SourceBuffer::textTrackModeChanged):

LayoutTests:

  • platform/mac/TestExpectations:
9:12 AM Changeset in webkit [206208] by jer.noble@apple.com
  • 21 edits in trunk

[media-source] Fix imported/w3c/web-platform-tests/media-source/URL-createObjectURL-null.html
https://bugs.webkit.org/show_bug.cgi?id=162299

Reviewed by Eric Carlson.

Source/WebCore:

URL.createObjectURL() should not take an optional parameter (nor return an optional String).
(Ref: https://w3c.github.io/FileAPI/#dfn-createObjectURL)

  • Modules/mediasource/DOMURLMediaSource.cpp:

(WebCore::DOMURLMediaSource::createObjectURL):

  • Modules/mediasource/DOMURLMediaSource.h:
  • Modules/mediasource/DOMURLMediaSource.idl:
  • Modules/mediasource/MediaSourceRegistry.cpp:

(WebCore::MediaSourceRegistry::registerURL):

  • Modules/mediasource/MediaSourceRegistry.h:
  • Modules/mediastream/DOMURLMediaStream.cpp:

(WebCore::DOMURLMediaStream::createObjectURL):

  • Modules/mediastream/DOMURLMediaStream.h:
  • Modules/mediastream/DOMURLMediaStream.idl:
  • Modules/mediastream/MediaStreamRegistry.cpp:

(WebCore::MediaStreamRegistry::registerURL):

  • Modules/mediastream/MediaStreamRegistry.h:
  • fileapi/Blob.cpp:

(WebCore::BlobURLRegistry::registerURL):

  • html/DOMURL.cpp:

(WebCore::DOMURL::createObjectURL):
(WebCore::DOMURL::createPublicURL):

  • html/DOMURL.h:
  • html/DOMURL.idl:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setSrcObject):

  • html/PublicURLManager.cpp:

(WebCore::PublicURLManager::registerURL):

  • html/PublicURLManager.h:
  • html/URLRegistry.h:

LayoutTests:

  • platform/mac/TestExpectations:
5:39 AM Changeset in webkit [206207] by Csaba Osztrogonác
  • 3 edits in trunk/Source/JavaScriptCore

[ARM] Unreviewed buildfix after r206136.

  • assembler/MacroAssembler.h:
  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::branchPtr): Added.

5:16 AM WebKitGTK/Roadmap edited by Michael Catanzaro
Remove Iulian as primary contact of GAction work, mark as stalled (diff)
5:15 AM WebKitGTK/Roadmap edited by Michael Catanzaro
Use a different bug to track sandboxing, remove my name as primary contact (diff)
2:56 AM Changeset in webkit [206206] by commit-queue@webkit.org
  • 17 edits in trunk

[Fetch] Align Accept header default values with fetch spec
https://bugs.webkit.org/show_bug.cgi?id=162260

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-21
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Ensuring Accept and Accept-Language user-specific values are going up to the server.

  • web-platform-tests/fetch/api/basic/accept-header-expected.txt:
  • web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/accept-header.js:

(promise_test):

Source/WebCore:

Covered by existing and updated tests.

To start implementing step 1 to 7 of fetch algorithm, this patch updates Accept header handling.

Default values are set according the spec based on resource type.
Some resource types are not defined in the spec and we keep using existing values.

We check if Accept header is already present in the request. If that is the case, no change is done to that header.

If the Accept header is not set, the default value '*/*' is used.
An Accept header is therefore always set at CachedResourceLoader level.

  • loader/cache/CachedCSSStyleSheet.cpp:

(WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet): Removing accept initialization.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load): Removing accept header setting.

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::accept): Deleted.
(WebCore::CachedResource::setAccept): Deleted.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::acceptHeaderValueFromType): helper routine merging fetch spec and existing WebKit accept values.
(WebCore::CachedResourceLoader::prepareFetch): Should implement step 1 to 7 of https://fetch.spec.whatwg.org/#fetching.
(WebCore::CachedResourceLoader::requestResource): Making use of prepareFetch.

  • loader/cache/CachedResourceLoader.h:
  • loader/cache/CachedSVGDocument.cpp:

(WebCore::CachedSVGDocument::CachedSVGDocument): Removing accept initialization.

  • loader/cache/CachedScript.cpp:

(WebCore::CachedScript::CachedScript): Removing accept initialization.

  • loader/cache/CachedXSLStyleSheet.cpp:

(WebCore::CachedXSLStyleSheet::CachedXSLStyleSheet): Removing accept initialization.

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::hasHTTPHeader): Introduced to check for header presence.

  • platform/network/ResourceRequestBase.h:

LayoutTests:

  • http/tests/misc/resources/image-checks-for-accept.php: Updated according new image Accept header value.
2:48 AM Changeset in webkit [206205] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK] Fix build failure of ScrollbarThemeGtk with libc++
https://bugs.webkit.org/show_bug.cgi?id=162302

Patch by Jeremy Huddleston Sequoia <jeremyhu@apple.com> on 2016-09-21
Reviewed by Carlos Garcia Campos.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::paint): Add missing #include <cstdlib>

2:44 AM Changeset in webkit [206204] by Philippe Normand
  • 3 edits in trunk/Source/WebCore

[OpenWebRTC] Miscellaneous fixes
https://bugs.webkit.org/show_bug.cgi?id=162332

Reviewed by Alejandro G. Castro.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:

(WebCore::MediaPlayerPrivateGStreamerOwr::currentTime): Improved logging.
(WebCore::MediaPlayerPrivateGStreamerOwr::load): Ditto.
(WebCore::MediaPlayerPrivateGStreamerOwr::loadingFailed): Ditto.
(WebCore::MediaPlayerPrivateGStreamerOwr::createGSTAudioSinkBin):
Pre-roll the autoaudiosink, fetch the underlying platform audio
sink and pass it to the OpenWebRTC renderer.
(WebCore::MediaPlayerPrivateGStreamerOwr::maybeHandleChangeMutedState): Improved logging.
(WebCore::MediaPlayerPrivateGStreamerOwr::setSize): Don't configure invalid video renderer.

  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:

(WebCore::RealtimeMediaSourceCenterOwr::createMediaStream): Fix copy-paste error.

2:28 AM WebKitGTK/Roadmap edited by eocanha@igalia.com
(diff)
2:25 AM WebKitGTK/Roadmap edited by eocanha@igalia.com
(diff)
1:43 AM Changeset in webkit [206203] by commit-queue@webkit.org
  • 14 edits in trunk/Source/WebCore

Refactor CachedResourceLoader::canRequest
https://bugs.webkit.org/show_bug.cgi?id=162144

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-21
Reviewed by Darin Adler.

Covered by existing tests.

Simplifying CachedResourceLoader::canRequest by doing:

  • CSP checks in another method
  • Removing Same-Origin type-specific checks by setting FetchOptions::Mode appropriately in resource loader clients
  • Moving script specific check in ScriptElement

Note that the last check may affect the loading behavior in the case scripts are enabled when starting the load
of a script, but gets disabled before receiving a redirection for the script load.

  • dom/ProcessingInstruction.cpp:

(WebCore::ProcessingInstruction::checkStyleSheet): Setting XSLT stylesheet fetch mode to SameOrigin.

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::requestScriptWithCache): Returning early if scripts are disabled.

  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::startPreflight): Bypassing CSP checks.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startLoadingMainResource): Bypassing CSP checks as CachedResourceLoader was not
checking them for MainResource.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::loadRequest): Ditto.

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::preloadIfNeeded): Using new CachedResourceRequest constructor to enable moving the ResourceRequest.
(WebCore::LinkLoader::loadLink): Skipping CSP checks for link prefetch/subresources as CachedResourceLoader was
not checking them for Link Prefetch and Subresource types.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::allowedByContentSecurityPolicy): Helper routine to check for CSP.
(WebCore::CachedResourceLoader::canRequest): Making use of introduced helper routine.
Simplified same origin check as all requests should have their options set.

  • loader/cache/CachedResourceLoader.h:
  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::CachedResourceRequest): More efficient constructor.

  • loader/cache/CachedResourceRequest.h:
  • loader/cache/CachedSVGDocumentReference.cpp:

(WebCore::CachedSVGDocumentReference::load): Setting fetch mode to SameOrigin.

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::updateExternalDocument): Ditto.

  • xml/XSLImportRule.cpp:

(WebCore::XSLImportRule::loadSheet): Ditto.

12:48 AM Changeset in webkit [206202] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Build fails with GSTREAMER_GL when both desktop GL and GLES2 are enabled in gst-plugins-bad
https://bugs.webkit.org/show_bug.cgi?id=159562

Patch by Miguel Gomez <magomez@igalia.com> on 2016-09-21
Reviewed by Philippe Normand.

Refactor video orientation code so including TextureMapperGL in MediaPlayerPrivateGStreamerBase.h
is not necessary.

Covered by existent tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::texMapFlagFromOrientation):
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::paintToTextureMapper):
(WebCore::MediaPlayerPrivateGStreamerBase::setVideoSourceOrientation):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
12:14 AM Changeset in webkit [206201] by Chris Dumez
  • 4 edits
    193 adds in trunk/LayoutTests

Import html/syntax web platform tests
https://bugs.webkit.org/show_bug.cgi?id=162331

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Import html/syntax web platform tests to improve test coverage.

  • web-platform-tests/html/syntax/*: Added.

LayoutTests:

  • tests-options.json:
12:09 AM Changeset in webkit [206200] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[GTK] Fix build failure in clipboard support
https://bugs.webkit.org/show_bug.cgi?id=162261

Patch by Jeremy Huddleston Sequoia <jeremyhu@apple.com> on 2016-09-21
Reviewed by Carlos Garcia Campos.

  • platform/PlatformPasteboard.h: Add missing #include <functional>
  • platform/gtk/PasteboardHelper.h: Add missing #include <functional>

Sep 20, 2016:

11:44 PM Changeset in webkit [206199] by nael.ouedraogo@crf.canon.fr
  • 2 edits in trunk/Source/WebCore

VariadicHelper::Result should not include constructor to initialize members
https://bugs.webkit.org/show_bug.cgi?id=162298

Reviewed by Darin Adler.

Remove the constructor since member-wise initialization does the same thing.

No new tests required.

  • bindings/js/JSDOMBinding.h: Remove useless constructor.
11:42 PM WebKitGTK/Roadmap edited by Carlos Garcia Campos
(diff)
11:34 PM Changeset in webkit [206198] by achristensen@apple.com
  • 4 edits in trunk

Optimize URLParser
https://bugs.webkit.org/show_bug.cgi?id=162105

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by new API tests.
This is about a 5% speedup on my URLParser benchmark.

  • platform/URLParser.cpp:

(WebCore::percentEncodeByte):
(WebCore::utf8PercentEncode):
(WebCore::utf8QueryEncode):
(WebCore::encodeQuery):
(WebCore::URLParser::parse):
(WebCore::serializeURLEncodedForm):
(WebCore::percentEncode): Deleted.
(WebCore::utf8PercentEncodeQuery): Deleted.

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

11:17 PM Changeset in webkit [206197] by Carlos Garcia Campos
  • 28 edits in trunk/Source

[GTK] Clean up DataObjectGtk handling
https://bugs.webkit.org/show_bug.cgi?id=162267

Reviewed by Michael Catanzaro.

Source/WebCore:

  • platform/Pasteboard.h: Use Ref instead of RefPtr for DataObjectGtk member.
  • platform/PasteboardStrategy.h: Pass a const reference to DataObjectGtk in write method and return a Ref from read.
  • platform/PlatformPasteboard.h: Ditto.
  • platform/gtk/DataObjectGtk.h:

(WebCore::DataObjectGtk::image): Use Image instead of GdkPixbuf.
(WebCore::DataObjectGtk::setImage):

  • platform/gtk/PasteboardGtk.cpp:

(WebCore::Pasteboard::createForDragAndDrop): Use a reference instead of a pointer.
(WebCore::Pasteboard::Pasteboard): Receives a reference, so we can also remove the ASSERT.
(WebCore::Pasteboard::dataObject):
(WebCore::Pasteboard::writeToClipboard): Remove the ShouldIncludeSmartPaste parameter, callers should also update
canSmartPaste property of DataObjectGtk before calling this.
(WebCore::Pasteboard::writePlainText):
(WebCore::Pasteboard::write): Do not convert the image the GdkPixbuf, pass the image to the DataObjectGtk instead.

  • platform/gtk/PasteboardHelper.cpp:

(WebCore::PasteboardHelper::fillSelectionData): Convert the DataObjectGtk image to GdkPixbuf right before
passing it to gtk_selection_data_set_pixbuf().
(WebCore::ClipboardSetData::ClipboardSetData): Use reference instead of pointer.
(WebCore::getClipboardContentsCallback):
(WebCore::clearClipboardContentsCallback): Never clear the saved DataObjectGtk, that was only needed when we had
a global DataObjectGtk associated to a GtkClipboard.
(WebCore::PasteboardHelper::writeClipboardContents): Use TemporaryChange to set the settingClipboardDataObject global.

  • platform/gtk/PlatformPasteboardGtk.cpp:

(WebCore::PlatformPasteboard::writeToClipboard):
(WebCore::PlatformPasteboard::readFromClipboard):

Source/WebKit2:

In some cases the ownership of DataObjectGtk instances is not clear enough, and we have hacks to avoid memory
leaks because of that.

  • Shared/gtk/ArgumentCodersGtk.cpp:

(IPC::encodeImage): Use Image instead of GdkPixbuf.
(IPC::decodeImage): Ditto.
(IPC::ArgumentCoder<DataObjectGtk>::encode):
(IPC::ArgumentCoder<DataObjectGtk>::decode):
(IPC::encode): Deleted.
(IPC::decode): Deleted.
(IPC::ArgumentCoder<DragData>::encode): Deleted.
(IPC::ArgumentCoder<DragData>::decode): Deleted.

  • Shared/gtk/ArgumentCodersGtk.h:
  • Shared/gtk/PasteboardContent.cpp:

(WebKit::PasteboardContent::PasteboardContent): Add empty constructor that creates a new DataObjectGtk, a
constructor that receives a const reference and another one that takes the ownership of the given DataObjectGtk.
(WebKit::PasteboardContent::encode):
(WebKit::PasteboardContent::decode):

  • Shared/gtk/PasteboardContent.h: Use Ref instead of RefPtr for the DataObjectGtk member.
  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::startDrag): Transfer the DataObjectGtk to the DragAndDropHandler, instead of using DragData.

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::performDragControllerAction): Instead of sending a DragData object to the web process,
send the DataObjectGtk and DragData members needed as parameters.
(WebKit::WebPageProxy::startDrag): Transfer the received DataObjectGtk to page client, instead of using
DragData. Also notify the web process that drag started.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in: Update StartDrag message parameters.
  • UIProcess/gtk/DragAndDropHandler.cpp:

(WebKit::DragAndDropHandler::DragAndDropHandler): Remove unneeded initialization.
(WebKit::DragAndDropHandler::startDrag): Take ownership of the given DataObjectGtk.

  • UIProcess/gtk/DragAndDropHandler.h:
  • UIProcess/gtk/WebPasteboardProxyGtk.cpp:

(WebKit::WebPasteboardProxy::writeToClipboard):
(WebKit::WebPasteboardProxy::readFromClipboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::writeToClipboard):
(WebKit::WebPlatformStrategies::readFromClipboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:
  • WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:

(WebKit::convertCairoSurfaceToShareableBitmap):
(WebKit::WebDragClient::startDrag): Do not create a DragData and pass the DataObjectGtk directly to the
message. Also notify the WebPage that drag is about to start.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::performDragControllerAction): Remove explicit DataObjectGtk derefs and simply create a
DragData using the DataObjectGtk pointer as platform data.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in: Update PerformDragControllerAction message parameters.
8:10 PM Changeset in webkit [206196] by achristensen@apple.com
  • 20 edits in trunk/Source

Require WTFMove for String::adopt
https://bugs.webkit.org/show_bug.cgi?id=162313

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

  • runtime/JSStringBuilder.h:

(JSC::JSStringBuilder::build):

Source/WebCore:

No change in behavior. This just makes it more clear what is going on when a String adopts a Vector.

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readString):

  • css/parser/CSSParser.cpp:

(WebCore::quoteCSSStringInternal):

  • dom/Document.cpp:

(WebCore::canonicalizedTitle):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::normalizeSpaces):

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::takeRemainingWhitespace):

  • platform/Length.cpp:

(WebCore::newCoordsArray):

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):
(WebCore::URLParser::serialize):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::ReplicaState::cloneID):

  • platform/text/TextCodecUTF16.cpp:

(WebCore::TextCodecUTF16::decode):

  • platform/text/TextCodecUTF8.cpp:

(WebCore::TextCodecUTF8::decode):

  • platform/text/mac/TextCodecMac.cpp:

(WebCore::TextCodecMac::decode):

Source/WTF:

  • wtf/text/StringImpl.cpp:

(WTF::StringImpl::removeCharacters):
(WTF::StringImpl::simplifyMatchedCharactersToSpace):
(WTF::StringImpl::adopt):

  • wtf/text/StringImpl.h:

(WTF::StringImpl::adopt):

  • wtf/text/WTFString.h:

(WTF::String::adopt):

7:46 PM Changeset in webkit [206195] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Reload unexpectedly switches to Storage Tab
https://bugs.webkit.org/show_bug.cgi?id=162323
<rdar://problem/28393954>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-20
Reviewed by Matt Baker.

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel.prototype.showDefaultContentViewForTreeElement):
We aren't stealing if the ContentView doesn't yet have a parent!
This fixes restoration when switching to the Storage tab at a
later time after a reload.

  • UserInterface/Views/StorageSidebarPanel.js:

(WebInspector.StorageSidebarPanel._treeSelectionDidChange):
Don't showRepresentedObject if we aren't visible. That would force this
tab to the foreground and we don't want that. This only happens when
tree elements are removed (main frame navigation) and TreeOutline
selects the next available tree element.

(WebInspector.StorageSidebarPanel.prototype._storageCleared):
Simplify and close all content views. We were missing IndexedDB content views.

7:34 PM Changeset in webkit [206194] by Hunseop Jeong
  • 2 edits in trunk/Source/WebKit2

[EFL] ewk_context_menu_item_select test have been failed
https://bugs.webkit.org/show_bug.cgi?id=162143

Reviewed by Gyuyoung Kim.

ewk_context_menu_item_select has been waited until test page loading is finished, but it is
unnecessary to wait the loading is finished. It would be good to pass if *testFinished*
flag is true.

  • UIProcess/API/efl/tests/test_ewk2_context_menu.cpp:

(EWK2ContextMenuTest::checkBasicContextMenuItem):
(EWK2ContextMenuTest::testContextMenu):
(TEST_F):

6:10 PM Changeset in webkit [206193] by jer.noble@apple.com
  • 10 edits in trunk/Source/WebCore

Adopt MRMediaRemoteSetParentApplication.
https://bugs.webkit.org/show_bug.cgi?id=162259
<rdar://problem/28376161>

Reviewed by Anders Carlsson.

Allow MediaSessionManagerMac to retrieve the correct parent application identifier
from a PlatformMediaSession so that it can pass that identifier through to MediaRemote
via MRMediaRemoteSetParentApplication.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::sourceApplicationIdentifier):

  • Modules/webaudio/AudioContext.h:
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::sourceApplicationIdentifier):

  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSession::resetPlaybackSessionState): Deleted.

  • platform/audio/mac/MediaSessionManagerMac.mm:

(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

  • platform/mac/MediaRemoteSoftLink.cpp:
  • platform/mac/MediaRemoteSoftLink.h:
6:03 PM Changeset in webkit [206192] by Joseph Pecoraro
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r205692): Minified builds have broken inspector
https://bugs.webkit.org/show_bug.cgi?id=162327
<rdar://problem/28370137>

Reviewed by Matt Baker.

  • Scripts/cssmin.py:

(cssminify):
Converge on the newer cssmin that we mistakenly dropped in r205692.
This knows how to handle more cases.

5:34 PM Changeset in webkit [206191] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.11

New tag.

5:27 PM Changeset in webkit [206190] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: AppleVisUser: VO can't navigate web dialogs iOS10
https://bugs.webkit.org/show_bug.cgi?id=162322

Reviewed by Chris Fleizach.

Source/WebCore:

When using VoiceOver to navigate a web dialog's children, we were setting focus
onto the focusable parent in accessibilityElementDidBecomeFocused. When the focusable
parent is the dialog, it will cause the VO cursor jumping back and forward. Fixed it
by not setting focus on web dialogs in such case.

Test: accessibility/ios-simulator/dialog-did-become-focused.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityElementDidBecomeFocused]):

LayoutTests:

  • accessibility/ios-simulator/dialog-did-become-focused-expected.txt: Added.
  • accessibility/ios-simulator/dialog-did-become-focused.html: Added.
5:27 PM Changeset in webkit [206189] by Keith Rollin
  • 12 edits in trunk/Source

Add new logging for network resource loading
https://bugs.webkit.org/show_bug.cgi?id=162237

Reviewed by Antti Koivisto.

Add new logging along the non-main path for resource loading. This
logging should allow us to differentiate between lack-of-logging due
execution along a path that doesn't have logging statements and
lack-of-logging due to a hung process.

Source/WebCore:

No new tests -- there are no tests for logging.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startLoadingMainResource):
(WebCore::DocumentLoader::isAlwaysOnLoggingAllowed):

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

(WebCore::FrameLoader::continueLoadAfterWillSubmitForm):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::isAlwaysOnLoggingAllowed):

  • loader/cache/CachedResourceLoader.h:
  • page/Frame.h:

Source/WebKit2:

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::start):
(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::setDefersLoading):
(WebKit::NetworkResourceLoader::abort):
(WebKit::NetworkResourceLoader::didReceiveBuffer):

  • NetworkProcess/NetworkResourceLoader.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::loadResource):
(WebKit::WebLoaderStrategy::scheduleLoad):

5:25 PM Changeset in webkit [206188] by Alan Bujtas
  • 5 edits
    2 adds in trunk

REGRESSION (r204552): Athlete search on Strava gives bad rendering.
https://bugs.webkit.org/show_bug.cgi?id=162250

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/layers/blank-content-when-child-layer-is-at-negative-big-number.html

  • platform/graphics/LayoutRect.cpp:

(WebCore::LayoutRect::checkedUnite):

  • platform/graphics/LayoutRect.h:

(WebCore::LayoutRect::isMaxXMaxYRepresentable):
(WebCore::LayoutRect::maxXMaxYCorner): Deleted.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects):

LayoutTests:

While computing the size of a particular layer, we unite the content size and the descendant layers' size.
If a descendant layer is positioned far off, the computed rectangle might not fully cover the original rectangles.
This happens when the 2 rectangles' distance is close to the maximum LayoutUnit value.
It's fairly common technic to put some content offscreen (top: -99999999px;). In order to keep the main content
visible, we need to ensure that the parent layer never gets cut off, while uniting it with the descendant layers.

  • fast/layers/blank-content-when-child-layer-is-at-negative-big-number-expected.html: Added.
  • fast/layers/blank-content-when-child-layer-is-at-negative-big-number.html: Added.
5:21 PM Changeset in webkit [206187] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

enable remote_api (for debugging) in flakiness dashboard app
https://bugs.webkit.org/show_bug.cgi?id=162325

Reviewed by Alexey Proskuryakov.

  • TestResultServer/app.yaml: enabled remote_api and datastore_admin.
4:58 PM Changeset in webkit [206186] by jer.noble@apple.com
  • 5 edits in trunk

[media-source] Fix imported/w3c/web-platform-tests/media-source/mediasource-appendwindow.html
https://bugs.webkit.org/show_bug.cgi?id=162306

Reviewed by Darin Adler.

Source/WebCore:

appendWindowStart should be a restricted double, and both it and appendWindowEnd should throw
TypeError exceptions when setting them to disallowed values.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::setAppendWindowStart):
(WebCore::SourceBuffer::setAppendWindowEnd):

  • Modules/mediasource/SourceBuffer.idl:

LayoutTests:

  • platform/mac/TestExpectations:
4:56 PM Changeset in webkit [206185] by jer.noble@apple.com
  • 4 edits in trunk

[media-source] Fix imported/w3c/web-platform-tests/media-source/mediasource-preload.html
https://bugs.webkit.org/show_bug.cgi?id=162304

Reviewed by Darin Adler.

Source/WebCore:

If an error occurs while loading a URL on behalf of MediaPlayerPrivateAVFObjC, make sure to signal
that error to AVFoundation, so that the HTMLMediaElement is notified of the error.

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

(WebCore::WebCoreAVFResourceLoader::notifyFinished):

LayoutTests:

  • platform/mac/TestExpectations:
4:11 PM Changeset in webkit [206184] by Ryan Haddad
  • 4 edits in trunk/Tools

Unreviewed, rolling out r206180.

Roll r206178 back in as the necessary changes have been made
on the build master.

Reverted changeset:

"Unreviewed, rolling out r206178."
https://bugs.webkit.org/show_bug.cgi?id=162249
http://trac.webkit.org/changeset/206180

3:57 PM Changeset in webkit [206183] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

DFG::StoreBarrierInsertionPhase should assume that any epoch increment may make objects older
https://bugs.webkit.org/show_bug.cgi?id=162319

Reviewed by Saam Barati.

The store barrier phase needs to be aware of the fact that an object that is not in the
OldBlack state may be concurrently brought into that state. That means that:

  • We cannot reason about the relative ages of objects. An object is either new, in which case we can store to it without barriers, or it's not in which case it needs a barrier.


  • After we insert a barrier on an object, the object is no longer new, because now the GC knows about it and the GC may do things to it, like make it OldBlack.


This is a perf-neutral change. These optimizations were never particularly profitable.

  • dfg/DFGStoreBarrierInsertionPhase.cpp:
3:36 PM Changeset in webkit [206182] by ap@apple.com
  • 2 edits in trunk/Tools

Use a hardcoded patch for sRGB color profile
https://bugs.webkit.org/show_bug.cgi?id=162320
rdar://problem/28387318

Reviewed by Simon Fraser.

This is a workaround for rdar://problem/28392768

  • DumpRenderTree/mac/LayoutTestHelper.m:

(installLayoutTestColorProfile):

3:30 PM Changeset in webkit [206181] by andersca@apple.com
  • 7 edits in trunk/Source/WebCore

Remove "in-store" from "-apple-pay-button-type"
https://bugs.webkit.org/show_bug.cgi?id=162321
rdar://problem/28394581

Reviewed by Beth Dakin.

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ApplePayButtonType):

  • css/CSSValueKeywords.in:
  • css/parser/CSSParser.cpp:

(WebCore::isValidKeywordPropertyAndValue):

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):

  • rendering/RenderThemeCocoa.mm:

(WebCore::toPKPaymentButtonType):

  • rendering/style/RenderStyleConstants.h:
3:30 PM Changeset in webkit [206180] by Ryan Haddad
  • 4 edits in trunk/Tools

Unreviewed, rolling out r206178.

This change caused buildbot config issues.

Reverted changeset:

"Add Sierra bots to buildbot and dashboard."
https://bugs.webkit.org/show_bug.cgi?id=162249
http://trac.webkit.org/changeset/206178

3:19 PM Changeset in webkit [206179] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix occasional using uninitialized memory crashes after r206168.
https://bugs.webkit.org/show_bug.cgi?id=162247

This fixes a crash in imported/w3c/web-platform-tests/url/urlsearchparams-constructor.html
I could reproduce about 10% of the time.

  • html/URLSearchParams.h:

Initialize the pointer to nullptr.

3:16 PM Changeset in webkit [206178] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Add Sierra bots to buildbot and dashboard.
https://bugs.webkit.org/show_bug.cgi?id=162249

Patch by Dean Johnson <dean_johnson@apple.com> on 2016-09-20
Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
  • BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot):

2:50 PM Changeset in webkit [206177] by achristensen@apple.com
  • 5 edits in trunk

Reduce allocations in URLParser
https://bugs.webkit.org/show_bug.cgi?id=162241

Reviewed by Chris Dumez.

Source/WebCore:

Use Vectors instead of StringBuilders. This allows us to use the inline capacity on the stack
for short URLs (<2KB) and also allows us to skip branches because we know whether the
contained type is UChar or LChar at compile time. It also allows us to use uncheckedAppend.

Added new API tests for parts that were less tested, but there is
no change in behavior except for a performance improvement.

  • platform/URLParser.cpp:

(WebCore::appendCodePoint):
(WebCore::encodeQuery):
(WebCore::URLParser::failure):
(WebCore::URLParser::parse):
(WebCore::percentDecode):
(WebCore::domainToASCII):
(WebCore::hasInvalidDomainCharacter):
(WebCore::URLParser::parseHost):
(WebCore::formURLDecode):
(WebCore::isC0Control): Deleted.

  • platform/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):
(TestWebKitAPI::checkURL):

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

Can't present a payment sheet if a sheet is already active in another window
https://bugs.webkit.org/show_bug.cgi?id=162314
rdar://problem/27643511

Reviewed by Tim Horton.

Instead of keeping track of whether a sheet is active or not, keep track of its underlying payment coordinator proxy,
so we can hide it and send a cancel event to WebCore if another sheet is being presented.

  • UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:

(WebKit::WebPaymentCoordinatorProxy::~WebPaymentCoordinatorProxy):
(WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
(WebKit::WebPaymentCoordinatorProxy::didReachFinalState):

2:19 PM Changeset in webkit [206175] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source

Versioning.

2:19 PM Changeset in webkit [206174] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.2.7.1/Source

Versioning.

2:10 PM Changeset in webkit [206173] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.7.1

New tag.

2:04 PM Changeset in webkit [206172] by fpizlo@apple.com
  • 15 edits in trunk/Source/JavaScriptCore

Rename MarkedSpace::version/MarkedBlock::version to MarkedSpace::markingVersion/MarkedBlock::markingVersion
https://bugs.webkit.org/show_bug.cgi?id=162310

Reviewed by Geoffrey Garen.

In bug 162309, which is part of my concurrent GC work, I'll need to introduce a second
version-based flip. This one will be for newlyAllocated bits. This will allow me to
cheaply preserve per-object live state during marking. MarkedBlock::aboutToMarkSlow() will
do this instead of clearMarks():

  • Walk the mark bits, simultaneously counting the number of set bits and clearing them.
  • If the count is zero, then we're done.
  • If the count is equal to the max number of cells in the block, then set the allocated bit for the block.
  • If the count is something else, create a newlyAllocated vector.


The hope is that the last mode is going to be rare, since most blocks are not fragmented
at end of GC. Usually, we will fill them in with objects by allocating! But if we do
create newlyAllocated bits then we need to have some way of blowing them away later.

This is where a second version comes in. We can have a version for newlyAllocated bits,
which we increment at the end of marking, at around the same time that we clear all
allocated bits.

This means that the MarkedBlock will have two different version-based flips, so terms like
"flip" and "version" aren't enough.

This patch gets rid of the term "flip" entirely. It's a term of art in GCs that refers to
the state change at the beginning or end of GC. It refers to the logical state change, not
the physical one. It doesn't actually make sense to speak of a block being flipped
independently of other blocks. It's true that our implementation of the flip makes some
state updates happen lazily, but the block updating itself in some way (like clearing mark
bits) isn't the flip - the flip already happened when the version was incremented.

We no longer refer to a version without qualifying what kind of version it is. The type is
HeapVersion. All of the version members were renamed to markingVersion, to reflect the
fact that this version is just used for doing things to marking state. Instead of asking
if the block needsFlip(), we ask if areMarksStale().

This will let us introduce a second version for newlyAllocated, and will let us speak of
the two versions unambiguously.

  • heap/CellContainer.h:
  • heap/CellContainerInlines.h:

(JSC::CellContainer::isMarked):
(JSC::CellContainer::isMarkedOrNewlyAllocated):
(JSC::CellContainer::aboutToMark):
(JSC::CellContainer::areMarksStale):
(JSC::CellContainer::needsFlip): Deleted.

  • heap/ConservativeRoots.cpp:

(JSC::ConservativeRoots::genericAddPointer):
(JSC::ConservativeRoots::genericAddSpan):

  • heap/HeapInlines.h:

(JSC::Heap::isMarked):
(JSC::Heap::isMarkedConcurrently):
(JSC::Heap::testAndSetMarked):

  • heap/HeapUtil.h:

(JSC::HeapUtil::findGCObjectPointersForMarking):

  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::isPagedOut):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::MarkedBlock):
(JSC::MarkedBlock::Handle::specializedSweep):
(JSC::MarkedBlock::Handle::sweepHelperSelectSweepMode):
(JSC::MarkedBlock::Handle::sweepHelperSelectMarksMode):
(JSC::MarkedBlock::aboutToMarkSlow):
(JSC::MarkedBlock::clearMarks):
(JSC::MarkedBlock::assertMarksNotStale):
(JSC::MarkedBlock::areMarksStale):
(JSC::MarkedBlock::Handle::areMarksStale):
(JSC::MarkedBlock::isMarked):
(JSC::MarkedBlock::Handle::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::markCount):
(JSC::MarkedBlock::Handle::isLive):
(JSC::MarkedBlock::Handle::isLiveCell):
(JSC::MarkedBlock::Handle::sweepHelperSelectFlipMode): Deleted.
(JSC::MarkedBlock::assertFlipped): Deleted.
(JSC::MarkedBlock::needsFlip): Deleted.
(JSC::MarkedBlock::Handle::needsFlip): Deleted.

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::areMarksStale):
(JSC::MarkedBlock::aboutToMark):
(JSC::MarkedBlock::assertMarksNotStale):
(JSC::MarkedBlock::Handle::assertMarksNotStale):
(JSC::MarkedBlock::isMarked):
(JSC::MarkedBlock::isMarkedConcurrently):
(JSC::MarkedBlock::testAndSetMarked):
(JSC::MarkedBlock::Handle::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::needsFlip): Deleted.
(JSC::MarkedBlock::assertFlipped): Deleted.
(JSC::MarkedBlock::Handle::assertFlipped): Deleted.

  • heap/MarkedBlockInlines.h:

(JSC::MarkedBlock::Handle::isLive):
(JSC::MarkedBlock::Handle::isLiveCell):
(JSC::MarkedBlock::resetMarkingVersion):
(JSC::MarkedBlock::resetVersion): Deleted.

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::beginMarking):

  • heap/MarkedSpace.h:

(JSC::MarkedSpace::markingVersion):
(JSC::MarkedSpace::version): Deleted.

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::SlotVisitor):
(JSC::SlotVisitor::didStartMarking):
(JSC::SlotVisitor::appendJSCellOrAuxiliary):
(JSC::SlotVisitor::setMarkedAndAppendToMarkStack):
(JSC::SlotVisitor::markAuxiliary):

  • heap/SlotVisitor.h:

(JSC::SlotVisitor::markingVersion):
(JSC::SlotVisitor::version): Deleted.

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::specializedVisit):
(JSC::WeakBlock::reap):

1:57 PM Changeset in webkit [206171] by commit-queue@webkit.org
  • 14 edits in trunk/JSTests

[JSC] Do not use EagerRun on tests counting recompilation
https://bugs.webkit.org/show_bug.cgi?id=162248

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-09-20
Reviewed by Geoffrey Garen.

This patch adds defaultNoEagerRun to all the tests
for which recompilation is the symptom of a bug.
The reason is that an OSR Exit can be unrelated to the tested
nodes when we are running in Eager mode.

  • stress/arith-abs-on-various-types.js:
  • stress/arith-ceil-on-various-types.js:
  • stress/arith-clz32-on-various-types.js:
  • stress/arith-cos-on-various-types.js:
  • stress/arith-floor-on-various-types.js:
  • stress/arith-fround-on-various-types.js:
  • stress/arith-log-on-various-types.js:
  • stress/arith-round-on-various-types.js:
  • stress/arith-sin-on-various-types.js:
  • stress/arith-sqrt-on-various-types.js:
  • stress/arith-tan-on-various-types.js:
  • stress/arith-trunc-on-various-types.js:
  • stress/compare-strict-eq-on-various-types.js:

(testAllTypesCall):
The value 2 came from the other tests.
CompareStrictEq supports many more cases, the worst case
is bool->int->int52->number->polymorphic.

1:44 PM Changeset in webkit [206170] by n_wang@apple.com
  • 5 edits in trunk

AX: voiceover does not read contents of input role="spinbutton"
https://bugs.webkit.org/show_bug.cgi?id=162137

Reviewed by Chris Fleizach.

Source/WebCore:

The aria-valuenow attribute value on the spinbutton is not exposed
on iOS. We should expose aria-valuenow attribute for range controls
based on https://www.w3.org/TR/wai-aria/states_and_properties#aria-valuenow

Changes are covered in the modified test.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityValue]):

LayoutTests:

  • accessibility/ios-simulator/spinbutton-expected.txt:
  • accessibility/ios-simulator/spinbutton.html:
1:25 PM Changeset in webkit [206169] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

URLParser: uidna_IDNToASCII_56 is deprecated
https://bugs.webkit.org/show_bug.cgi?id=161841

Patch by Michael Catanzaro <Michael Catanzaro> on 2016-09-20
Reviewed by Alex Christensen.

Add pragmas to silence the warning, plus a FIXME.

  • platform/URLParser.cpp:

(WebCore::domainToASCII):

1:11 PM Changeset in webkit [206168] by achristensen@apple.com
  • 7 edits in trunk

Make URLSearchParams spec-compliant
https://bugs.webkit.org/show_bug.cgi?id=162247

Reviewed by Chris Dumez and Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/url/url-constructor-expected.txt:

Source/WebCore:

Covered by newly-passing web platform tests.

  • html/DOMURL.cpp:

(WebCore::DOMURL::~DOMURL):
(WebCore::DOMURL::setHref):
(WebCore::DOMURL::setQuery):
Update any associated URLSearchParams object when the query could change.
(WebCore::DOMURL::searchParams):
The lifetime of the URLSearchParams was wrong. We were creating a new URLSearchParams each time
URL.searchParams was called, and we should have been creating one the first time and returning the
same instance for subsequent calls. This means the DOMURL must own the URLSearchParams if it is associated,
but if it is not associated, then a URLSearchParams can live on its own.

  • html/DOMURL.h:
  • html/URLSearchParams.h:

(WebCore::URLSearchParams::URLDestroyed):
(WebCore::URLSearchParams::setContents):

1:05 PM Changeset in webkit [206167] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Remove AuthorStyleSheets::m_hadActiveLoadingStylesheet bit
https://bugs.webkit.org/show_bug.cgi?id=162312

Reviewed by Chris Dumez.

  • dom/AuthorStyleSheets.cpp:

(WebCore::AuthorStyleSheets::analyzeStyleSheetChange):

We can handle loading sheets with the normal stylesheet change logic. Remove the special case.

(WebCore::filterEnabledNonemptyCSSStyleSheets):

Filter out loading stylesheets.

  • dom/AuthorStyleSheets.h:
1:03 PM Changeset in webkit [206166] by Keith Rollin
  • 8 edits in trunk/Source

Adjust current networking logging
https://bugs.webkit.org/show_bug.cgi?id=162235

Reviewed by Antti Koivisto.

Update the "always on" network logging in order to better track the
loading of a particular resource and to better bind together the
resources downloaded for a particular page and frame. Do this by
consistently logging pageID, frameID, and resourceID.

Source/WebCore:

No new tests -- there are no tests for logging.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::checkLoadCompleteForThisFrame):

  • loader/ResourceLoader.h:

(WebCore::ResourceLoader::frame):

Source/WebKit2:

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::didFailLoading):
(WebKit::NetworkResourceLoader::continueWillSendRequest):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):
(WebKit::WebLoaderStrategy::startLocalLoad):

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::create):
(WebKit::WebResourceLoader::WebResourceLoader):
(WebKit::WebResourceLoader::willSendRequest):
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::didFailResourceLoad):
(WebKit::WebResourceLoader::didReceiveResource):

  • WebProcess/Network/WebResourceLoader.h:
1:01 PM Changeset in webkit [206165] by achristensen@apple.com
  • 9 edits in trunk

Non-special URLs should have an opaque origin
https://bugs.webkit.org/show_bug.cgi?id=162254

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WebCore:

Covered by newly passing web platform tests.

  • page/SecurityOrigin.cpp:

(WebCore::shouldTreatAsUniqueOrigin):
According to https://url.spec.whatwg.org/#origin all URLs with non-special protocols
should have a unique SecurityOrigin whose serialization is "null".

LayoutTests:

  • http/tests/security/postMessage/invalid-origin-throws-exception-expected.txt:
  • http/tests/security/postMessage/invalid-origin-throws-exception.html:
12:31 PM Changeset in webkit [206164] by Ryan Haddad
  • 2 edits in trunk/Source/JavaScriptCore

Rebaseline builtins generator tests after r206155.

Unreviewed test gardening.

  • Scripts/tests/builtins/expected/WebCoreJSBuiltins.h-result:
12:11 PM Changeset in webkit [206163] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[WinCairo] Not building since 206044
https://bugs.webkit.org/show_bug.cgi?id=162246

Patch by Christopher Reid <Christopher.Reid@am.sony.com> on 2016-09-20
Reviewed by Alex Christensen.

No new tests. No change in behaviour.

  • bindings/js/JSWebGLRenderingContextCustom.cpp:
  • platform/network/curl/CookieJarCurl.cpp:
11:46 AM Changeset in webkit [206162] by achristensen@apple.com
  • 5 edits in trunk

Align URLParser with web platform tests when parsing non-special relative URLs ending in AuthorityOrHost state
https://bugs.webkit.org/show_bug.cgi?id=162251

Reviewed by Tim Horton.

Source/WebCore:

Covered by new and updated API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):
Fix parsing of non-special URLs that end after scheme:// with no authority.
We used to assume that parsing non-special schemes would never end with just scheme:// but a string can indeed end right there.
When a non-special relative URL contains just scheme:// we need the resulting URL to be valid to conform with the web platform tests.
(WebCore::URLParser::parseHostAndPort):
Renamed to reflect what the function actually does.
(WebCore::URLParser::internalValuesConsistent):
Add utility function for testing.
(WebCore::URLParser::parseHost): Deleted.

  • platform/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::checkURL):
(TestWebKitAPI::TEST_F):
(TestWebKitAPI::checkRelativeURL):
(TestWebKitAPI::checkURLDifferences):
(TestWebKitAPI::checkRelativeURLDifferences):

11:41 AM Changeset in webkit [206161] by jfernandez@igalia.com
  • 6 edits in trunk

[css-grid] The 'grid' shorthand has a new syntax.
https://bugs.webkit.org/show_bug.cgi?id=161954

Reviewed by Darin Adler.

Source/WebCore:

Implementation of the new CSS syntax for the 'grid' shorthand, as
defined in the CSS Grid Layout specification:

No new tests, just adapted the ones we already have and added a few additional test cases.

  • css/CSSValueKeywords.in:
  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseImplicitAutoFlow): Added. Similar to parseGridAutoFlow, but using the new 'auto-flow' keyword.
(WebCore::CSSParser::parseGridShorthand): New syntax of the 'grid' shorthand.

  • css/parser/CSSParser.h:

LayoutTests:

Adapted the already defined test cases to the new syntax of the
'grid' shorthand. Also added a few additional test cases.

  • fast/css-grid-layout/grid-shorthand-get-set-expected.txt:
  • fast/css-grid-layout/grid-shorthand-get-set.html:
11:35 AM Changeset in webkit [206160] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix cloop build.

  • runtime/VM.h:
11:34 AM Changeset in webkit [206159] by achristensen@apple.com
  • 4 edits in trunk

URLParser should allow '@' in user
https://bugs.webkit.org/show_bug.cgi?id=162272

Reviewed by Tim Horton.

Source/WebCore:

Covered by a new API test.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):
The spec describes using an "@ flag" and rewinding iterators. I've implemented the authority parsing
and host parsing a little differently, but this makes it equivalent.

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

11:31 AM Changeset in webkit [206158] by achristensen@apple.com
  • 4 edits in trunk

URLParser: Fix parsing relative URLs with one slash after the scheme:
https://bugs.webkit.org/show_bug.cgi?id=162294

Reviewed by Tim Horton.

Source/WebCore:

This fixes the relatively-obscure case where a relative URL has the same special scheme as the base,
but there is only one slash after the scheme: at the beginning of the relative URL. According to spec,
this should be interpreted the same as if the scheme: were not there.
For example, parsing "http:/example.com/" relative to "http://example.org/foo/bar" should be the same as
parsing "/example.com/" relative to "http://example.org/foo/bar".

Covered by a new API test.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

11:27 AM Changeset in webkit [206157] by achristensen@apple.com
  • 4 edits in trunk

Fix Windows file URL quirks in URLParser
https://bugs.webkit.org/show_bug.cgi?id=162303

Reviewed by Tim Horton.

Source/WebCore:

Windows file urls allow c:\ and c|\ to have the same meaning, but when serialized they should both be c:/.
This is now standardized to allow cross-platform uniform behavior of URLs.

Covered by new API tests and progress on web platform tests when URLParser is enabled.

  • platform/URLParser.cpp:

(WebCore::incrementIteratorSkippingTabAndNewLine):
(WebCore::isWindowsDriveLetter):
(WebCore::checkWindowsDriveLetter):
(WebCore::shouldCopyFileURL):
(WebCore::URLParser::parseSerializedURL):
(WebCore::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

11:24 AM Changeset in webkit [206156] by commit-queue@webkit.org
  • 27 edits
    2 adds in trunk/Source/WebCore

Rename FrameData to ImageFrame, move it to a separate file and use it for all ports
https://bugs.webkit.org/show_bug.cgi?id=159819

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-09-20
Reviewed by Simon Fraser.

Rename FrameData to ImageFrame and move it to a separate file so caching
it can be managed outside the BitmapImage object. Make the data members
of FrameData be private and add getters to return their values. Add backing
store and disposalMethod members, getter and setters to ImageFrame so it can
replace the non-CG ImageFrame class.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add ImageFrame class to WebCore project.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::BitmapImage): The metadata for the non-decoder case is now calculated in the ImageFrame::initialize().
(WebCore::BitmapImage::haveFrameImageAtIndex): Call ImageFrame's getters instead of access private members.
(WebCore::BitmapImage::destroyDecodedData): Pass ImageFrame::Caching::Metadata to ImageFrame::clear() to clear the image only.
(WebCore::BitmapImage::destroyDecodedDataIfNecessary): ImageFrame::usedFrameBytes() is now renamed to ImageFrame::frameBytes().
(WebCore::BitmapImage::cacheFrame): Call ImageFrame::initialize() to set the image and cache the frame's metadata.
(WebCore::BitmapImage::dataChanged): Pass ImageFrame::Caching::Empty to ImageFrame::clear() to clear the frame's image and metadata.
(WebCore::BitmapImage::ensureFrameAtIndexIsCached): Call ImageFrame's getters instead of access private members.
(WebCore::BitmapImage::frameImageAtIndex): Call ImageFrame's getters instead of access private members.
(WebCore::BitmapImage::frameIsCompleteAtIndex): Pass ImageFrame::Caching::Metadata to ensureFrameAtIndexIsCached() to ensure the frame's metadata is cached.
(WebCore::BitmapImage::frameDurationAtIndex): Pass ImageFrame::Caching::Metadata to ensureFrameAtIndexIsCached() to ensure the frame's metadata is cached.
(WebCore::BitmapImage::frameHasAlphaAtIndex): Pass ImageFrame::Caching::Metadata to ensureFrameAtIndexIsCached() to ensure the frame's metadata is cached.
(WebCore::BitmapImage::frameOrientationAtIndex): Pass ImageFrame::Caching::Metadata to ensureFrameAtIndexIsCached() to ensure the frame's metadata is cached.
(WebCore::BitmapImage::singlePixelSolidColor): Call ImageFrame's getters instead of access private members.
(WebCore::BitmapImage::repetitionCount): Change the return type to be RepetitionCount instead of int.
(WebCore::BitmapImage::shouldAnimate): Use a simpler condition since RepetitionCountNone is equal to zero.
(WebCore::BitmapImage::startAnimation): Replace the cAnimation* constants by the new RepetitionCount* enum.
(WebCore::BitmapImage::internalAdvanceAnimation): Replace the cAnimation* constants by the new RepetitionCount* enum.

  • platform/graphics/BitmapImage.h: FrameData is renamed to ImageFrame and moved to a separate file named ImageFrame.h.

(WebCore::FrameData::FrameData): Deleted.
(WebCore::FrameData::~FrameData): Deleted.
(WebCore::FrameData::clear): Deleted.
(WebCore::FrameData::usedFrameBytes): Deleted.

  • platform/graphics/ImageBackingStore.h:

(WebCore::ImageBackingStore::fillRect): Make it efficient to fill a rect in the ImageBackingStore with the same color.
(WebCore::ImageBackingStore::pixelAt): Asserts the point is in the bounds of the ImageBackingStore size.
(WebCore::ImageBackingStore::setPixel): Use pixelValue().
(WebCore::ImageBackingStore::inBounds): Private functions check whether a point or a rect is in the bounds of the ImageBackingStore size.
(WebCore::ImageBackingStore::pixelValue): Calculate the RGBA value form red, green, blue and alpha values.

  • platform/graphics/ImageFrame.cpp: Added.

(WebCore::ImageFrame::ImageFrame):
(WebCore::ImageFrame::~ImageFrame):
(WebCore::ImageFrame::operator=):
(WebCore::ImageFrame::fillMetaData): Caches the ImageFrame's metadata.
(WebCore::ImageFrame::clearImage): Deletes all the allocated memory by ImageFrame which can be the ImageBackingStore or the NativeImagePtr.
(WebCore::ImageFrame::clear): Deletes the allocated memory and may or may not clears the metadata also.
(WebCore::ImageFrame::initialize): Sets a new ImageBackingStore or a new NativeImagePtr in the ImageFrame.
(WebCore::ImageFrame::size): Returns the size of the ImageFrame which can be the size of ImageBackingStore or the size of NativeImagePtr.
(WebCore::ImageFrame::singlePixelSolidColor): Returns whether the ImageFrame can be drawn by filling the image rectangle with a solid color.

  • platform/graphics/ImageFrame.h: Added.

(WebCore::operator++): SubsamplingLevel is strongly typed but RepetitionCount is not since it can be any unsigned value in addition to -1.
(WebCore::ImageFrame::ImageFrame):
(WebCore::ImageFrame::setDecoding):
(WebCore::ImageFrame::decoding):
(WebCore::ImageFrame::isEmpty):
(WebCore::ImageFrame::isPartial):
(WebCore::ImageFrame::isComplete):
(WebCore::ImageFrame::sizeRespectingOrientation):
(WebCore::ImageFrame::frameBytes):
(WebCore::ImageFrame::subsamplingLevel):
(WebCore::ImageFrame::setDisposalMethod):
(WebCore::ImageFrame::disposalMethod):
(WebCore::ImageFrame::image):
(WebCore::ImageFrame::setOrientation):
(WebCore::ImageFrame::orientation):
(WebCore::ImageFrame::setDuration):
(WebCore::ImageFrame::duration):
(WebCore::ImageFrame::setHasAlpha):
(WebCore::ImageFrame::hasAlpha):
(WebCore::ImageFrame::hasImage):
(WebCore::ImageFrame::hasInvalidImage):
(WebCore::ImageFrame::hasMetadata):
(WebCore::ImageFrame::backingStore):
(WebCore::ImageFrame::hasBackingStore):
Setters and getters for the private members.

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::calculateMaximumSubsamplingLevel): allowSubsamplingOfFrameAtIndex() is renamed to frameAllowSubsamplingAtIndex().
(WebCore::ImageSource::subsamplingLevelForScale): Use the values of the enum class SubsamplingLevel.
(WebCore::ImageSource::size): Use the values of the enum class SubsamplingLevel.
(WebCore::ImageSource::sizeRespectingOrientation): Use the values of the enum class SubsamplingLevel.
(WebCore::ImageSource::repetitionCount): Replace the constants cAnimation* by the enum RepetitionCount*.
(WebCore::ImageSource::frameAllowSubsamplingAtIndex): Rename allowSubsamplingOfFrameAtIndex() to frameAllowSubsamplingAtIndex().
(WebCore::ImageSource::frameSizeAtIndex): Replace the call to orientationAtIndex() by frameOrientationAtIndex().
(WebCore::ImageSource::frameOrientationAtIndex): Rename orientationAtIndex() to frameOrientationAtIndex().
(WebCore::ImageSource::dump): Replace the call to orientationAtIndex() by frameOrientationAtIndex().
(WebCore::ImageSource::allowSubsamplingOfFrameAtIndex): Deleted.
(WebCore::ImageSource::orientationAtIndex): Deleted.

  • platform/graphics/ImageSource.h:

(WebCore::ImageSource::decoder): We need this function temporarily till we move caching the frames outside BitmapImage.

(WebCore::clearNativeImageSubimages):
(WebCore::clearNativeImageSubImages): Deleted.

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::createImageSourceOptions): Use the values of the enum class SubsamplingLevel.
(WebCore::imageSourceOptions): Use the values of the enum class SubsamplingLevel.
(WebCore::ImageDecoder::repetitionCount): Change the return type to be RepetitionCount instead of int.
(WebCore::ImageDecoder::frameOrientationAtIndex): orientationAtIndex() is renamed to frameOrientationAtIndex().
(WebCore::ImageDecoder::frameAllowSubsamplingAtIndex): allowSubsamplingOfFrameAtIndex() is renamed to frameAllowSubsamplingAtIndex().
(WebCore::ImageDecoder::orientationAtIndex): Deleted.
(WebCore::ImageDecoder::allowSubsamplingOfFrameAtIndex): Deleted.

  • platform/graphics/cg/ImageDecoderCG.h:
  • platform/graphics/cg/NativeImageCG.cpp:

(WebCore::clearNativeImageSubimages): Change SubImages() to Subimages().
(WebCore::clearNativeImageSubImages): Deleted.

  • platform/image-decoders/ImageDecoder.cpp:

(WebCore::ImageDecoder::frameIsCompleteAtIndex): Use ImageFrame::isComplete() instead of checking the value of the decoding status().
(WebCore::ImageDecoder::frameHasAlphaAtIndex): Use ImageFrame::isComplete() instead of checking the value of the decoding status().
(WebCore::ImageDecoder::frameDurationAtIndex): Use ImageFrame::isEmpty() instead of checking the value of the decoding status().
(WebCore::ImageDecoder::createFrameImageAtIndex): Access the ImageBackingStore::image() function directly.
(WebCore::ImageFrame::ImageFrame): Deleted.
(WebCore::ImageFrame::operator=): Deleted.
(WebCore::ImageFrame::clearPixelData): Deleted.
(WebCore::ImageFrame::zeroFillPixelData): Deleted.
(WebCore::ImageFrame::zeroFillFrameRect): Deleted.
(WebCore::ImageFrame::initializeBackingStore): Deleted.
(WebCore::ImageFrame::hasAlpha): Deleted.
(WebCore::ImageFrame::setHasAlpha): Deleted.
(WebCore::ImageFrame::setOriginalFrameRect): Deleted.
(WebCore::ImageFrame::setStatus): Deleted.

  • platform/image-decoders/ImageDecoder.h:

(WebCore::ImageDecoder::repetitionCount): Use the type RepetitionCount and the enum RepetitionCount* values.
(WebCore::ImageDecoder::frameOrientationAtIndex): Rename orientationAtIndex() to frameOrientationAtIndex().
(WebCore::ImageDecoder::frameAllowSubsamplingAtIndex): Rename allowSubsamplingOfFrameAtIndex() to frameAllowSubsamplingAtIndex().
(WebCore::ImageDecoder::subsamplingLevelForScale): Use the enum class SubsamplingLevel value instead of integer values.
(WebCore::ImageFrame::ImageFrame): Deleted.
(WebCore::ImageFrame::copyRowNTimes): Deleted.
(WebCore::ImageFrame::size): Deleted.
(WebCore::ImageFrame::asNewNativeImage): Deleted.
(WebCore::ImageFrame::backingStore): Deleted.
(WebCore::ImageFrame::hasBackingStore): Deleted.
(WebCore::ImageFrame::originalFrameRect): Deleted.
(WebCore::ImageFrame::status): Deleted.
(WebCore::ImageFrame::duration): Deleted.
(WebCore::ImageFrame::disposalMethod): Deleted.
(WebCore::ImageFrame::setDuration): Deleted.
(WebCore::ImageFrame::setDisposalMethod): Deleted.
(WebCore::ImageFrame::pixelAt): Deleted.
(WebCore::ImageFrame::setPixel): Deleted.
(WebCore::ImageFrame::blendPixel): Deleted.
(WebCore::ImageDecoder::orientationAtIndex): Deleted.
(WebCore::ImageDecoder::allowSubsamplingOfFrameAtIndex): Deleted.

  • platform/image-decoders/bmp/BMPImageDecoder.cpp:

(WebCore::BMPImageDecoder::frameBufferAtIndex): Call ImageFrame::isComplete() instead of checking the value of the decoding status().
(WebCore::BMPImageDecoder::decode): Ditto.

  • platform/image-decoders/bmp/BMPImageReader.cpp:

(WebCore::BMPImageReader::decodeBMP): Call ImageFrame::isEmpty(). ImageBuffer::initializeBackingStore() is renamed to initialize().
(WebCore::BMPImageReader::processNonRLEData): Replace ImageFrame::zeroFillPixelData() by ImageBackingStore::clear() and ImageFrame::setAlpha().

  • platform/image-decoders/bmp/BMPImageReader.h:

(WebCore::BMPImageReader::setPixel): Call ImageBackingStore::setPixel() directly.
(WebCore::BMPImageReader::fillRGBA): Replace an efficient loop to call setPixel() by ImageBackingStore::fillRect().

  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::GIFImageDecoder): Move the initialization of m_repetitionCount to the header file.
(WebCore::GIFImageDecoder::repetitionCount): Change the return type.
(WebCore::GIFImageDecoder::frameBufferAtIndex): Call ImageFrame::isComplete() instead of checking the value of the decoding status().
(WebCore::GIFImageDecoder::clearFrameBufferCache): Use the values of the new enum class ImageFrame::DisposalMethod.
(WebCore::GIFImageDecoder::haveDecodedRow): Call the ImageBackingStore API's directly.
(WebCore::GIFImageDecoder::frameComplete): Use the values of the new enum class ImageFrame::DisposalMethod.
(WebCore::GIFImageDecoder::initFrameBuffer): Move calling ImageBackingStore::setFrameRect() to be after initializing the ImageBackingStore itself.

  • platform/image-decoders/gif/GIFImageDecoder.h: Make repetitionCount() returns RepetitionCount and use the new enum class ImageFrame::DisposalMethod.
  • platform/image-decoders/gif/GIFImageReader.cpp:

(GIFImageReader::parse):

  • platform/image-decoders/gif/GIFImageReader.h:

(GIFFrameContext::GIFFrameContext): Use new enum class ImageFrame::DisposalMethod.

  • platform/image-decoders/ico/ICOImageDecoder.cpp:

(WebCore::ICOImageDecoder::frameBufferAtIndex): Call ImageFrame::isComplete() instead of checking the value of the decoding status().
(WebCore::ICOImageDecoder::decode): Ditto.

  • platform/image-decoders/jpeg/JPEGImageDecoder.cpp:

(WebCore::JPEGImageDecoder::frameBufferAtIndex): Call ImageFrame::isComplete() instead of checking the value of the decoding status().
(WebCore::setPixel): Call ImageBackingStore::setPixel() directly.
(WebCore::JPEGImageDecoder::outputScanlines): ImageFrame::initializeBackingStore() is renamed to initialize().
(WebCore::JPEGImageDecoder::jpegComplete): ImageFrame::setStatus() is renamed to ImageFrame::setDecoding().
(WebCore::JPEGImageDecoder::decode): Call ImageFrame::isComplete() instead of checking the value of the decoding status().

  • platform/image-decoders/png/PNGImageDecoder.cpp:

(WebCore::PNGImageDecoder::frameBufferAtIndex): Call ImageFrame::isComplete() instead of checking the value of the decoding status().
(WebCore::PNGImageDecoder::rowAvailable): Call the ImageBackingStore APIs directly.
(WebCore::PNGImageDecoder::pngComplete): ImageFrame::setStatus() is renamed to setDecoding().
(WebCore::PNGImageDecoder::readChunks): Use the values of the new enum class ImageFrame::DisposalMethod.
(WebCore::PNGImageDecoder::clearFrameBufferCache): Replace the call to ImageFrame::clearPixelData() by ImageFrame::clear().
(WebCore::PNGImageDecoder::initFrameBuffer): Move calling ImageBackingStore::setFrameRect() to be after initializing the ImageBackingStore itself.
(WebCore::PNGImageDecoder::frameComplete): Call the ImageBackingStore APIs directly.

  • platform/image-decoders/png/PNGImageDecoder.h: Call ImageFrame::isComplete() instead of checking the value of the decoding status().
  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::frameBufferAtIndex): Call ImageFrame::isComplete() instead of checking the value of the decoding status().
(WebCore::WEBPImageDecoder::decode): ImageFrame::setStatus() is renamed to setDecoding(). And initializeBackingStore() is renamed to initialize().

11:12 AM Changeset in webkit [206155] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking js/regress-139548.html as a flaky timeout on mac-wk2 debug.
https://bugs.webkit.org/show_bug.cgi?id=160017

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:12 AM Changeset in webkit [206154] by fpizlo@apple.com
  • 46 edits
    6 adds in trunk

Make MarkedBlock state tracking support overlapped allocation and marking state
https://bugs.webkit.org/show_bug.cgi?id=161581

Reviewed by Geoffrey Garen.

JSTests:

Add a microbenchmark for why we want to reclaim empty blocks from other allocators.

  • microbenchmarks/switching-size-classes.js: Added.

Source/JavaScriptCore:

Concurrent GCs must allow for mutation and allocation during collection. We already know
how to mutate during collection. We have a write barrier for that. Allocation during
collection is more involved: the collector modifies the the mark bits, as well as other
kinds of MarkedBlock state, in-place during a collection. The allocator uses that same
MarkedBlock state to decide which regions of memory are free. This works if the allocator
never runs while the collector is running, but if we want to allow them to run at the same
time, then we need to have two versions of the state: one version built up by the
collector and another consumed by the allocator. We clear the collector state at the
beginning of collection, and splat the collector state onto the allocator state after
collection.

This could be super expensive, but we can make it cheap with some cleverness. The biggest
observation is just that most of the state is a handful of bits per block: is the block
free-listed? is it completely full? completely empty? in the incremental sweeper's
snapshot? is it retired? is it in eden? There is also state inside blocks, like the mark
bits, but I have a solid plan there and I'll save it for another patch. Once we view the
state of blocks as bits, we can put that state into bitvectors, so that if the collector
needs to transform the state of some blocks, it can do it with a single operation over
bitvectors. I like to think of this as 32-way parallelizing block operations, since
doing one operation on a 32-bit word in one of those bitvectors instantly affects 32
blocks.

This change converts all previous collections of MarkedBlocks, along with the MarkedBlock
state, into 8 bitvectors (live, empty, allocated, canAllocateButNotEmpty, eden, unswept,
markingNotEmpty, and markingRetired). The bitvectors separate allocator state (empty,
allocated, canAllocateButNotEmpty) from marking state (markingNotEmpty, markingRetired).

As a nice side-effect of switching to bitvectors, we get size class rebalancing for free.
It used to be that if a MarkedAllocator had an empty block, we would only allow that
memory to be reused by a different MarkedAllocator if we did an incremental sweep or a
full eager sweep. Now we hunt down all destructorless empty blocks before allocating new
MarkedBlocks. It would be relatively easy to also hunt down destructor empty blocks, but
the theory is that those might be expensive to sweep, so it might still be better to leave
those to the incremental sweeper.

This change is perf-neutral all around. I did some tests with two different kinds of
allocation strategies - something that is somewhat easier to do now that you can look for
blocks that are candidates for allocation by just scanning some bitvectors. I tried two
variants:

  • Allocate out of non-empty blocks first, leaving empty blocks for last in case a different allocator needed them. This is sort of a best-fit strategy. I tried this first, and it can be expressed as:


m_allocationCursor = m_canAllocateButNotEmpty.findBit(m_allocationCursor, true)


  • Allocate out of lower-indexed blocks first, treating empty and canAllocateButNotEmpty blocks equally. This is sort of a first-fit strategy. This is what I ended up settling on, and it can be expressed as:


m_allocationCursor = (m_canAllocateButNotEmpty | m_empty).findBit(m_allocationCursor, true)


The best-fit strategy meant 1% regressions in LongSpider and Octane overall, and a 11%
regression on Octane/earley. First-fit means perf-neutrality. Most great allocators skew
towards first-fit because it's empirically better, so this result is not surprising.

Overall, the performance of this patch on my machine is as follows, where "neutral" means
less than 1% and not statistically significant.

run-jsc-benchmarks:

SunSpider: neutral
LongSpider: 0.6% slower
V8Spider: neutral
Octane: neutral
Kraken: neutral
Microbenchmarks: 0.37% slower
AsmBench: neutral
CompressionBench: maybe 1% faster


For browser benchmarks, I report the ratio of means (bigger / smaller) along with a T-test
from Mathematica reported as % chance of not [sic] the null hypothesis. Note that we
normally consider anything less than 95% confidence to be inconclusive.

Browser benchmarks:

PLT3: 0.3% faster with 67% confidence
membuster:

Snap2FinishedLoadingPost: 0.68% more memory with 50% confidence
Snap3EndPost: 2.4% more memory with 61% confidence

JetStream: 0.2% slower with 32% confidence
Speedometer: 0.7% faster with 82% confidence


Additionally, Octane/splay's heap capacity goes down to ~180KB from ~200KB, so about a 10%
progression. This is due to the allocator rebalancing feature.

Finally, this breaks --useImmortalObjects. It was already broken as far as I can tell. I
filed a bug to reimplement it (bug 162296). Unless someone urgently needs this internal
tool, it's probably best to reimplement it after I'm done refactoring MarkedSpace.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • debugger/Debugger.cpp:
  • heap/CellContainer.h:
  • heap/CellContainerInlines.h:

(JSC::CellContainer::vm):
(JSC::CellContainer::heap):
(JSC::CellContainer::isMarkedOrNewlyAllocated):
(JSC::CellContainer::aboutToMark):
(JSC::CellContainer::isMarked): Deleted.
(JSC::CellContainer::flipIfNecessary): Deleted.

  • heap/ConservativeRoots.cpp:
  • heap/Heap.cpp:

(JSC::Heap::beginMarking):
(JSC::Heap::endMarking):
(JSC::Heap::collectAllGarbage):
(JSC::Heap::collectImpl):
(JSC::Heap::snapshotMarkedSpace):
(JSC::Heap::prepareForAllocation):
(JSC::Heap::zombifyDeadObjects):
(JSC::MarkedBlockSnapshotFunctor::MarkedBlockSnapshotFunctor): Deleted.
(JSC::MarkedBlockSnapshotFunctor::operator()): Deleted.
(JSC::Heap::resetAllocators): Deleted.

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

(JSC::Heap::isMarked):
(JSC::Heap::isMarkedConcurrently):
(JSC::Heap::testAndSetMarked):

  • heap/HeapStatistics.cpp:
  • heap/HeapUtil.h:

(JSC::HeapUtil::findGCObjectPointersForMarking):
(JSC::HeapUtil::isPointerGCObjectJSCell):

  • heap/HeapVerifier.cpp:
  • heap/IncrementalSweeper.cpp:

(JSC::IncrementalSweeper::IncrementalSweeper):
(JSC::IncrementalSweeper::doSweep):
(JSC::IncrementalSweeper::sweepNextBlock):
(JSC::IncrementalSweeper::startSweeping):
(JSC::IncrementalSweeper::willFinishSweeping):

  • heap/IncrementalSweeper.h:
  • heap/LargeAllocation.h:

(JSC::LargeAllocation::isMarked):
(JSC::LargeAllocation::isMarkedConcurrently):
(JSC::LargeAllocation::isMarkedOrNewlyAllocated):
(JSC::LargeAllocation::aboutToMark):
(JSC::LargeAllocation::isMarkedDuringWeakVisiting): Deleted.
(JSC::LargeAllocation::flipIfNecessary): Deleted.
(JSC::LargeAllocation::flipIfNecessaryDuringMarking): Deleted.

  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::MarkedAllocator):
(JSC::MarkedAllocator::isPagedOut):
(JSC::MarkedAllocator::findEmptyBlock):
(JSC::MarkedAllocator::tryAllocateWithoutCollectingImpl):
(JSC::MarkedAllocator::allocateIn):
(JSC::MarkedAllocator::tryAllocateIn):
(JSC::MarkedAllocator::allocateSlowCaseImpl):
(JSC::MarkedAllocator::tryAllocateBlock):
(JSC::MarkedAllocator::addBlock):
(JSC::MarkedAllocator::removeBlock):
(JSC::MarkedAllocator::stopAllocating):
(JSC::MarkedAllocator::prepareForAllocation):
(JSC::MarkedAllocator::lastChanceToFinalize):
(JSC::MarkedAllocator::resumeAllocating):
(JSC::MarkedAllocator::beginMarkingForFullCollection):
(JSC::MarkedAllocator::endMarking):
(JSC::MarkedAllocator::snapshotForEdenCollection):
(JSC::MarkedAllocator::snapshotForFullCollection):
(JSC::MarkedAllocator::findBlockToSweep):
(JSC::MarkedAllocator::sweep):
(JSC::MarkedAllocator::shrink):
(JSC::MarkedAllocator::assertSnapshotEmpty):
(JSC::MarkedAllocator::dump):
(JSC::MarkedAllocator::dumpBits):
(JSC::MarkedAllocator::retire): Deleted.
(JSC::MarkedAllocator::filterNextBlock): Deleted.
(JSC::MarkedAllocator::setNextBlockToSweep): Deleted.
(JSC::MarkedAllocator::reset): Deleted.

  • heap/MarkedAllocator.h:

(JSC::MarkedAllocator::forEachBitVector):
(JSC::MarkedAllocator::forEachBitVectorWithName):
(JSC::MarkedAllocator::nextAllocator):
(JSC::MarkedAllocator::setNextAllocator):
(JSC::MarkedAllocator::forEachBlock):
(JSC::MarkedAllocator::resumeAllocating): Deleted.

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::tryCreate):
(JSC::MarkedBlock::Handle::Handle):
(JSC::MarkedBlock::Handle::~Handle):
(JSC::MarkedBlock::MarkedBlock):
(JSC::MarkedBlock::Handle::specializedSweep):
(JSC::MarkedBlock::Handle::sweep):
(JSC::MarkedBlock::Handle::sweepHelperSelectScribbleMode):
(JSC::MarkedBlock::Handle::sweepHelperSelectEmptyMode):
(JSC::MarkedBlock::Handle::sweepHelperSelectHasNewlyAllocated):
(JSC::MarkedBlock::Handle::sweepHelperSelectSweepMode):
(JSC::MarkedBlock::Handle::sweepHelperSelectFlipMode):
(JSC::MarkedBlock::Handle::unsweepWithNoNewlyAllocated):
(JSC::MarkedBlock::Handle::setIsFreeListed):
(JSC::MarkedBlock::Handle::stopAllocating):
(JSC::MarkedBlock::Handle::lastChanceToFinalize):
(JSC::MarkedBlock::Handle::resumeAllocating):
(JSC::MarkedBlock::aboutToMarkSlow):
(JSC::MarkedBlock::clearMarks):
(JSC::MarkedBlock::isMarked):
(JSC::MarkedBlock::Handle::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::Handle::didConsumeFreeList):
(JSC::MarkedBlock::markCount):
(JSC::MarkedBlock::Handle::isEmpty):
(JSC::MarkedBlock::noteMarkedSlow):
(JSC::MarkedBlock::Handle::removeFromAllocator):
(JSC::MarkedBlock::Handle::didAddToAllocator):
(JSC::MarkedBlock::Handle::didRemoveFromAllocator):
(JSC::MarkedBlock::Handle::isLive):
(JSC::MarkedBlock::Handle::isLiveCell):
(JSC::MarkedBlock::Handle::sweepHelperSelectStateAndSweepMode): Deleted.
(JSC::MarkedBlock::flipIfNecessary): Deleted.
(JSC::MarkedBlock::Handle::flipIfNecessary): Deleted.
(JSC::MarkedBlock::flipIfNecessarySlow): Deleted.
(JSC::MarkedBlock::flipIfNecessaryDuringMarkingSlow): Deleted.
(JSC::MarkedBlock::Handle::willRemoveBlock): Deleted.
(WTF::printInternal): Deleted.

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::Handle::isFreeListed):
(JSC::MarkedBlock::Handle::index):
(JSC::MarkedBlock::aboutToMark):
(JSC::MarkedBlock::isMarked):
(JSC::MarkedBlock::isMarkedConcurrently):
(JSC::MarkedBlock::Handle::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::Handle::isOnBlocksToSweep): Deleted.
(JSC::MarkedBlock::Handle::setIsOnBlocksToSweep): Deleted.
(JSC::MarkedBlock::Handle::state): Deleted.
(JSC::MarkedBlock::flipIfNecessary): Deleted.
(JSC::MarkedBlock::flipIfNecessaryDuringMarking): Deleted.
(JSC::MarkedBlock::Handle::flipIfNecessary): Deleted.
(JSC::MarkedBlock::Handle::flipIfNecessaryDuringMarking): Deleted.
(JSC::MarkedBlock::Handle::flipForEdenCollection): Deleted.
(JSC::MarkedBlock::isMarkedDuringWeakVisiting): Deleted.
(JSC::MarkedBlock::Handle::isLive): Deleted.
(JSC::MarkedBlock::Handle::isLiveCell): Deleted.
(JSC::MarkedBlock::Handle::forEachLiveCell): Deleted.
(JSC::MarkedBlock::Handle::forEachDeadCell): Deleted.
(JSC::MarkedBlock::Handle::needsSweeping): Deleted.
(JSC::MarkedBlock::Handle::isAllocated): Deleted.
(JSC::MarkedBlock::Handle::isMarked): Deleted.

  • heap/MarkedBlockInlines.h: Added.

(JSC::MarkedBlock::Handle::isLive):
(JSC::MarkedBlock::Handle::isLiveCell):
(JSC::MarkedBlock::Handle::forEachLiveCell):
(JSC::MarkedBlock::Handle::forEachDeadCell):
(JSC::MarkedBlock::resetVersion):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::MarkedSpace):
(JSC::MarkedSpace::allocate):
(JSC::MarkedSpace::tryAllocate):
(JSC::MarkedSpace::sweep):
(JSC::MarkedSpace::prepareForAllocation):
(JSC::MarkedSpace::shrink):
(JSC::MarkedSpace::clearNewlyAllocated):
(JSC::MarkedSpace::beginMarking):
(JSC::MarkedSpace::endMarking):
(JSC::MarkedSpace::didAllocateInBlock):
(JSC::MarkedSpace::findEmptyBlock):
(JSC::MarkedSpace::snapshot):
(JSC::MarkedSpace::assertSnapshotEmpty):
(JSC::MarkedSpace::dumpBits):
(JSC::MarkedSpace::zombifySweep): Deleted.
(JSC::MarkedSpace::resetAllocators): Deleted.
(JSC::VerifyMarked::operator()): Deleted.
(JSC::MarkedSpace::flip): Deleted.

  • heap/MarkedSpace.h:

(JSC::MarkedSpace::nextVersion):
(JSC::MarkedSpace::firstAllocator):
(JSC::MarkedSpace::allocatorForEmptyAllocation):
(JSC::MarkedSpace::forEachAllocator):
(JSC::MarkedSpace::blocksWithNewObjects): Deleted.
(JSC::MarkedSpace::setIsMarking): Deleted.
(JSC::MarkedSpace::forEachLiveCell): Deleted.
(JSC::MarkedSpace::forEachDeadCell): Deleted.

  • heap/MarkedSpaceInlines.h: Added.

(JSC::MarkedSpace::forEachLiveCell):
(JSC::MarkedSpace::forEachDeadCell):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::setMarkedAndAppendToMarkStack):
(JSC::SlotVisitor::markAuxiliary):
(JSC::SlotVisitor::visitChildren):

  • heap/Weak.h:

(WTF::HashTraits<JSC::Weak<T>>::emptyValue):
(WTF::HashTraits<JSC::Weak<T>>::peek):

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::specializedVisit):
(JSC::WeakBlock::reap):

  • heap/WeakInlines.h:

(WTF::HashTraits<JSC::Weak<T>>::emptyValue): Deleted.
(WTF::HashTraits<JSC::Weak<T>>::peek): Deleted.

  • jit/JITThunks.h:
  • runtime/JSGlobalObject.cpp:
  • runtime/PrototypeMap.h:
  • runtime/SamplingProfiler.cpp:
  • runtime/WeakGCMap.h:
  • tools/JSDollarVMPrototype.cpp:

Source/WTF:

The main change here is to bring back FastBitVector.cpp, so that I could outline some
large slow path functions. This also adds some utilities, like atomicSetAndCheck() and
isEmpty(). The GC uses these.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/FastBitVector.cpp: Added.

(WTF::FastBitVectorWordOwner::setEqualsSlow):
(WTF::FastBitVectorWordOwner::resizeSlow):

  • wtf/FastBitVector.h:

(WTF::FastBitVectorWordOwner::operator=):
(WTF::FastBitVectorWordOwner::resize):
(WTF::FastBitVectorImpl::isEmpty):
(WTF::FastBitVector::atomicSetAndCheck):
(WTF::FastBitVector::operator[]): Deleted.

Tools:

Remove the always-trigger-copy-phase configuration.

  • Scripts/run-jsc-stress-tests:
11:07 AM Changeset in webkit [206153] by commit-queue@webkit.org
  • 10 edits in trunk

[WinCairo] Use find_package cairo in build
https://bugs.webkit.org/show_bug.cgi?id=162239

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2016-09-20
Reviewed by Alex Christensen.

.:

  • Source/cmake/FindCairo.cmake:
  • Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

No new tests. No change in behavior.

  • PlatformWinCairo.cmake:

Source/WebKit:

  • PlatformWin.cmake:

Tools:

  • DumpRenderTree/PlatformWin.cmake:
  • TestWebKitAPI/PlatformWin.cmake:
10:28 AM Changeset in webkit [206152] by commit-queue@webkit.org
  • 6 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/inspector/model
https://bugs.webkit.org/show_bug.cgi?id=162074

Patch by Devin Rousso <Devin Rousso> on 2016-09-20
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • inspector/model/frame-extra-scripts.html:
  • inspector/model/scope-chain-node.html:
  • inspector/model/script-resource-relationship-expected.txt:
  • inspector/model/script-resource-relationship.html:
  • inspector/model/stack-trace.html:
10:14 AM Changeset in webkit [206151] by Jonathan Bedard
  • 5 edits in trunk/Source

Undefined behavior: Left shift negative number
https://bugs.webkit.org/show_bug.cgi?id=161866

Reviewed by Keith Miller.

Left shifting a negative number is undefined behavior in C/C++, although most implementations do define it. Explicitly clarifying the intended behavior due to shifting negative number in some cases.

Source/JavaScriptCore:

  • dfg/DFGAbstractHeap.h:

(JSC::DFG::AbstractHeap::encode): Explicitly cast signed integer for left shift.

Source/WTF:

  • wtf/text/Base64.cpp:

(WTF::base64EncodeInternal): Changed signed character to unsigned when shifting.
(WTF::base64Encode): Ditto.
(WTF::base64URLEncode): Ditto.
(WTF::base64DecodeInternal): Ditto.

  • wtf/text/Base64.h: Ditto.

(WTF::SignedOrUnsignedCharVectorAdapter): Rebuilt to stop using union as a bitwise_cast.
(WTF::ConstSignedOrUnsignedCharVectorAdapter): Ditto.

8:58 AM Changeset in webkit [206150] by Wenson Hsieh
  • 2 edits in trunk/Tools

Unreviewed build fix on 10.10 bots.

  • TestWebKitAPI/mac/TestWKWebViewMac.h:
8:56 AM Changeset in webkit [206149] by sbarati@apple.com
  • 3 edits
    1 add in trunk

JSTests:
Unreviewed, added test for x86 32-bit failure for HasOwnProperty node in DFG.

  • stress/has-own-property-called-on-non-object.js: Added.

(let.objs):
(new.String):
(foo):

Source/JavaScriptCore:
Unreviewed fix for 32-bit DFG x86 implementation of HasOwnProperty.

Fixup phase is always setting ObjectUse on child1() of HasOwnProperty.
However, on x86 32-bit, I omitted a call to speculateObject() on child1().

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

8:47 AM Changeset in webkit [206148] by Wenson Hsieh
  • 3 edits in trunk/Tools

VideoControlsManager.VideoControlsManagerSingleLargeVideo fails intermittently on the Mac WK2 bot
https://bugs.webkit.org/show_bug.cgi?id=162255

Reviewed by Jer Noble.

This is reproducible by running the test repeatedly in a for loop (locally, I observed that running the test
back-to-back would result in the second one failing). This suggests that even on the runloop after the video
starts playing, the state of the playback controls manager may not be up to date in the UI process. Instead, we
can just spin the runloop until the playback controls are shown, which makes back-to-back tests to succeed and
will probably address flakiness on the bots for this test.

  • TestWebKitAPI/Tests/WebKit2Cocoa/VideoControlsManager.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/large-video-with-audio.html:
8:45 AM Changeset in webkit [206147] by Yusuke Suzuki
  • 4 edits
    2 adds in trunk

[JSC] Add typeof value === "symbol" handling to bytecode compiler
https://bugs.webkit.org/show_bug.cgi?id=162253

Reviewed by Sam Weinig.

JSTests:

  • microbenchmarks/is-symbol-mixed.js: Added.

(isSymbol):
(i.let.pair.of.list.String):

  • microbenchmarks/is-symbol.js: Added.

(isSymbol):

Source/JavaScriptCore:

Add typeof value === "symbol" handling to the bytecode compiler.
The effect is tiny, but it keeps consistency since the bytecode compiler
already has the similar optimization for "string" case.

  • bytecode/SpeculatedType.cpp:

(JSC::speculationFromJSType):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitEqualityOp):

8:26 AM Changeset in webkit [206146] by jer.noble@apple.com
  • 14 edits
    1 copy in trunk

[media-source] Support MediaSource.setLiveSeekableRanges()
https://bugs.webkit.org/show_bug.cgi?id=162252

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/media-source/interfaces-expected.txt:

Source/WebCore:

Fixes tests: imported/w3c/web-platform-tests/media-source/interfaces.html

imported/w3c/web-platform-tests/media-source/mediasource-liveseekable.html

Add support for a new part of the Media Source specification, the ability for clients to
specify the seekable ranges for a MediaSource-backed HTMLMediaElement.

Adding the live-seekable methods to MediaSource fixes a large number of the interfaces.html
tests, and the rest are fixed by adding on<event> handlers to MediaSource, SourceBuffer,
and SourceBufferList.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::seekable):
(WebCore::MediaSource::setLiveSeekableRange):
(WebCore::MediaSource::clearLiveSeekableRange):

  • Modules/mediasource/MediaSource.h:
  • Modules/mediasource/MediaSource.idl:
  • Modules/mediasource/SourceBuffer.idl:
  • Modules/mediasource/SourceBufferList.idl:
  • Modules/mediasource/VideoPlaybackQuality.idl:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::seekable):

LayoutTests:

  • platform/mac/TestExpectations:
  • platform/mac/imported/w3c/web-platform-tests/media-source/interfaces-expected.txt:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
2:08 AM Changeset in webkit [206145] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] Unreviewed warning fix.

  • page/CaptionUserPreferencesMediaAF.cpp:
1:29 AM Changeset in webkit [206144] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] Run layout tests in parallel.
https://bugs.webkit.org/show_bug.cgi?id=162145

Reviewed by Brent Fulgham.

To speed up layout tests, try running them in parallel.

  • Scripts/webkitpy/port/win.py:

(WinPort.default_child_processes): Deleted.

12:11 AM Changeset in webkit [206143] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.14.0

WebKitGTK+ 2.14.0

12:10 AM Changeset in webkit [206142] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.14

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.0 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.14.0.

Sep 19, 2016:

11:02 PM Changeset in webkit [206141] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14

Merge r206095 - [GTK] Make ENABLE_THREADED_COMPOSITOR a public option
https://bugs.webkit.org/show_bug.cgi?id=162148

Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsGTK.cmake:
9:22 PM Changeset in webkit [206140] by Chris Dumez
  • 4 edits in trunk

Add support for HTMLSourceElement.prototype.sizes / HTMLSourceElement.prototype.srcset
https://bugs.webkit.org/show_bug.cgi?id=162244

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

  • web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

Add support for HTMLPrototype.prototype.sizes / HTMLPrototype.prototype.srcset:

We already support the corresponding content attributes internally. However, we
are missing the corresponding IDL attributes that are supposed to reflect them.

Chrome and Firefox support them. We already had those IDL attributes on
HTMLImageElement.

No new tests, rebaselined existing test.

  • html/HTMLSourceElement.idl:
8:38 PM Changeset in webkit [206139] by bshafiei@apple.com
  • 5 edits in tags/Safari-603.1.5.2/Source

Versioning.

8:34 PM Changeset in webkit [206138] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.5.2

New tag.

7:00 PM Changeset in webkit [206137] by Wenson Hsieh
  • 2 edits in trunk/Tools

Unreviewed build fix after r206135

NSEventMaskLeftMouseDown and friends are only available on 10.12.

  • TestWebKitAPI/mac/TestWKWebViewMac.mm:

(simulated_forceClickAssociatedEventsMask):

6:05 PM Changeset in webkit [206136] by sbarati@apple.com
  • 29 edits
    6 adds in trunk

Make HasOwnProperty faster
https://bugs.webkit.org/show_bug.cgi?id=161708

Reviewed by Geoffrey Garen.

JSTests:

  • microbenchmarks/has-own-property-name-cache.js: Added.

(foo):

  • stress/has-own-property-cache-basics.js: Added.

(assert):
(foo):

  • stress/has-own-property-name-cache-string-keys.js: Added.

(assert):
(foo):

  • stress/has-own-property-name-cache-symbol-keys.js: Added.

(assert):
(foo):

  • stress/has-own-property-name-cache-symbols-and-strings.js: Added.

(assert):
(foo):

Source/JavaScriptCore:

This patch adds a cache for HasOwnProperty. The cache holds tuples
of {StructureID, UniquedStringImpl*, boolean} where the boolean indicates
the result of performing hasOwnProperty on an object with StructureID and
UniquedStringImpl*. If the cache contains an item, we can be guaranteed
that it contains the same result as performing hasOwnProperty on an
object O with a given structure and key. To guarantee this, we only add
items into the cache when the Structure of the given item is cacheable.

The caching strategy is simple: when adding new items into the cache,
we will evict any item that was in the location that the new item
is hashed into. We also clear the cache on every GC. This strategy
proves to be successful on speedometer, which sees a cache hit rate
over 90%. This caching strategy is now inlined into the DFG/FTL JITs
by now recognizing hasOwnProperty as an intrinsic with the corresponding
HasOwnProperty node. The goal of the node is to emit inlined code for
the cache lookup to prevent the overhead of the call for the common
case where we get a cache hit.

I'm seeing around a 1% to 1.5% percent improvement on Speedometer on
my machine. Hopefully the perf bots agree with my machine.

This patch also speeds up the microbenchmark I added by 2.5x.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.h:

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

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGValidate.cpp:
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileHasOwnProperty):

  • heap/Heap.cpp:

(JSC::Heap::collectImpl):

  • jit/JITOperations.h:
  • runtime/HasOwnPropertyCache.h: Added.

(JSC::HasOwnPropertyCache::Entry::offsetOfStructureID):
(JSC::HasOwnPropertyCache::Entry::offsetOfImpl):
(JSC::HasOwnPropertyCache::Entry::offsetOfResult):
(JSC::HasOwnPropertyCache::operator delete):
(JSC::HasOwnPropertyCache::create):
(JSC::HasOwnPropertyCache::hash):
(JSC::HasOwnPropertyCache::get):
(JSC::HasOwnPropertyCache::tryAdd):
(JSC::HasOwnPropertyCache::clear):
(JSC::VM::ensureHasOwnPropertyCache):

  • runtime/Intrinsic.h:
  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::hasOwnProperty):

  • runtime/ObjectPrototype.cpp:

(JSC::ObjectPrototype::finishCreation):
(JSC::objectProtoFuncHasOwnProperty):

  • runtime/Symbol.h:
  • runtime/VM.cpp:
  • runtime/VM.h:

(JSC::VM::hasOwnPropertyCache):

6:02 PM Changeset in webkit [206135] by Wenson Hsieh
  • 9 edits
    2 adds in trunk

Add a unit test covering <https://trac.webkit.org/changeset/205983>
https://bugs.webkit.org/show_bug.cgi?id=162112

Reviewed by Beth Dakin.

Source/WebKit2:

Adds some a test support method as SPI on WKWebView to determine whether to request candidates. See
Tools/ChangeLog for more details.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _shouldRequestCandidates]):
(-[WKWebView _forceRequestCandidates]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

Tools:

Adds a new unit test covering the changes in r205983 along with the infrastructure needed to support it. Also
further refactors the TestWKWebView used by VideoControlsManager and WKWebViewCandidateTests so that in both
cases, we add the WKWebView to a visible key window, and when sending a mouse down event, we propagate the event
at the window level rather than the view level, allowing greater flexibility to simulate behaviors such as
pressure-sensitive events that are needed for the new test.

Also rewrites currently disabled unit tests in CandidateTests as WebKit2 unit tests in WKWebViewCandidateTests,
checking whether or not to should be requesting candidates in password and non-password fields.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/VideoControlsManager.mm:

(TestWebKitAPI::setUpWebViewForTestingVideoControlsManager):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewCandidateTests.mm:

(-[CandidateTestWebView typeString:inputMessage:]):
(+[CandidateTestWebView setUpWithFrame:testPage:]):

  • TestWebKitAPI/Tests/WebKit2Cocoa/large-input-field-focus-onload.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/text-and-password-inputs.html: Added.
  • TestWebKitAPI/mac/TestWKWebViewMac.h:
  • TestWebKitAPI/mac/TestWKWebViewMac.mm:

(simulated_forceClickAssociatedEventsMask):
(-[TestWKWebViewHostWindow _mouseDownAtPoint:simulatePressure:]):
(-[TestWKWebView initWithFrame:]):
(-[TestWKWebView initWithFrame:configuration:]):
(-[TestWKWebView _setUpTestWindow:]):
(-[TestWKWebView mouseDownAtPoint:simulatePressure:]):
(-[TestWKWebView typeCharacter:]):
(-[TestWKWebView mouseDownAtPoint:]): Deleted.

5:48 PM Changeset in webkit [206134] by commit-queue@webkit.org
  • 13 edits
    4 adds in trunk

[JSC] Make the rounding-related nodes support any type
https://bugs.webkit.org/show_bug.cgi?id=161895

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-09-19
Reviewed by Geoffrey Garen.

JSTests:

  • stress/arith-ceil-on-various-types.js: Added.
  • stress/arith-floor-on-various-types.js: Added.
  • stress/arith-round-on-various-types.js: Added.
  • stress/arith-trunc-on-various-types.js: Added.

Source/JavaScriptCore:

This patch changes ArithRound, ArithFloor, ArithCeil and ArithTrunc
to support polymorphic input without exiting on entry.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
The 4 functions ignore any input past the first argument. It is okay
to use the nodes with the first argument and let the Phantoms keep
the remaining arguments live.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
Our fixup had the issue we have seen on previous nodes: unaryArithShouldSpeculateInt32()
prevents us from picking a good type if we do not see any double.

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

Prediction propagation of those nodes are fully determined
from their flags and results's prediction. They are moved
to the invariant processing.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithRounding):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileArithRound):
(JSC::FTL::DFG::LowerDFGToB3::compileArithFloor):
(JSC::FTL::DFG::LowerDFGToB3::compileArithCeil):
(JSC::FTL::DFG::LowerDFGToB3::compileArithTrunc):

4:51 PM Changeset in webkit [206133] by commit-queue@webkit.org
  • 8 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/inspector/css
https://bugs.webkit.org/show_bug.cgi?id=162071

Patch by Devin Rousso <Devin Rousso> on 2016-09-19
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • inspector/css/createStyleSheet.html:
  • inspector/css/generate-css-rule-string.html:
  • inspector/css/manager-preferredInspectorStyleSheetForFrame-expected.txt:
  • inspector/css/manager-preferredInspectorStyleSheetForFrame.html:
  • inspector/css/stylesheet-events-basic.html:
  • inspector/css/stylesheet-events-inspector-stylesheet.html:
  • inspector/css/stylesheet-events-multiple-documents.html:
4:46 PM Changeset in webkit [206132] by andersca@apple.com
  • 5 edits in trunk/Source

Suppress JavaScript prompts early on in certain cases
https://bugs.webkit.org/show_bug.cgi?id=162243
rdar://problem/27661602

Reviewed by Geoffrey Garen.

Source/WebCore:

Export symbols needed by WebKit2.

  • loader/FrameLoader.h:
  • loader/FrameLoaderStateMachine.h:

Source/WebKit2:

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::shouldSuppressJavaScriptDialogs):
Add helper function.

(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):
Call helper function and return early if we should supress dialogs.

4:45 PM Changeset in webkit [206131] by Chris Dumez
  • 10 edits
    12 deletes in trunk

Align HTMLAppletElement with the specification
https://bugs.webkit.org/show_bug.cgi?id=162240

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline W3C test now that all checks are passing.

  • web-platform-tests/html/dom/reflection-obsolete-expected.txt:

Source/WebCore:

Align HTMLAppletElement with the specification:

In particular:

  • space / vspace should be of type "unsigned long", not DOMString
  • codeBase and object should reflect as URLs

Firefox agree with the specification. Chrome does not have
HTMLAppletElement anymore.

No new tests, rebaselined existing test.

  • html/HTMLAppletElement.cpp:

(WebCore::HTMLAppletElement::isURLAttribute):

  • html/HTMLAppletElement.h:
  • html/HTMLAppletElement.idl:

LayoutTests:

Drop outdated tests. Update existing tests to reflect behavior change.

  • dom/html/level2/html/HTMLAppletElement11-expected.txt: Removed.
  • dom/html/level2/html/HTMLAppletElement11.html: Removed.
  • dom/html/level2/html/HTMLAppletElement11.js: Removed.
  • dom/xhtml/level2/html/HTMLAppletElement11-expected.txt: Removed.
  • dom/xhtml/level2/html/HTMLAppletElement11.js: Removed.
  • dom/xhtml/level2/html/HTMLAppletElement11.xhtml: Removed.
  • fast/dom/element-attribute-js-null-expected.txt:
  • fast/dom/element-attribute-js-null.html:
4:36 PM Changeset in webkit [206130] by commit-queue@webkit.org
  • 6 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/http/tests/inspector
https://bugs.webkit.org/show_bug.cgi?id=162069

Patch by Devin Rousso <Devin Rousso> on 2016-09-19
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • http/tests/inspector/dom/disconnect-dom-tree-after-main-frame-navigation.html:
  • http/tests/inspector/network/copy-as-curl.html:
  • http/tests/inspector/network/resource-timing-expected.txt:
  • http/tests/inspector/network/resource-timing.html:
  • http/tests/inspector/network/xhr-request-data-encoded-correctly.html:
4:30 PM Changeset in webkit [206129] by jer.noble@apple.com
  • 26 edits
    2 adds in trunk/LayoutTests/imported/w3c

Unreviewed gardening; update LayoutTests/media-source to the most recent version (5a011ca).

  • resources/TestRepositories:
  • web-platform-tests/media-source/OWNERS:
  • web-platform-tests/media-source/interfaces.html:
  • web-platform-tests/media-source/manifest.txt:
  • web-platform-tests/media-source/mediasource-appendbuffer-quota-exceeded.html:
  • web-platform-tests/media-source/mediasource-attach-stops-delaying-load-event.html: Added.
  • web-platform-tests/media-source/mediasource-avtracks.html:
  • web-platform-tests/media-source/mediasource-detach.html:
  • web-platform-tests/media-source/mediasource-duration-expected.txt:
  • web-platform-tests/media-source/mediasource-duration.html:
  • web-platform-tests/media-source/mediasource-endofstream.html:
  • web-platform-tests/media-source/mediasource-errors.html:
  • web-platform-tests/media-source/mediasource-getvideoplaybackquality-expected.txt:
  • web-platform-tests/media-source/mediasource-getvideoplaybackquality.html:
  • web-platform-tests/media-source/mediasource-is-type-supported.html:
  • web-platform-tests/media-source/mediasource-liveseekable.html:
  • web-platform-tests/media-source/mediasource-remove-expected.txt:
  • web-platform-tests/media-source/mediasource-remove.html:
  • web-platform-tests/media-source/mediasource-removesourcebuffer.html:
  • web-platform-tests/media-source/mediasource-seekable.html:
  • web-platform-tests/media-source/mediasource-sourcebuffer-mode-timestamps.html: Added.
  • web-platform-tests/media-source/mediasource-sourcebuffer-mode.html:
  • web-platform-tests/media-source/mediasource-sourcebuffer-trackdefaults.html:
  • web-platform-tests/media-source/mediasource-timestamp-offset.html:
  • web-platform-tests/media-source/mediasource-trackdefault.html:
  • web-platform-tests/media-source/mediasource-trackdefaultlist.html:
  • web-platform-tests/media-source/mediasource-util.js:
4:27 PM Changeset in webkit [206128] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix for Win64
https://bugs.webkit.org/show_bug.cgi?id=162132

In Windows 64bit, t3 register in LLInt is not r[a-d]x.
It means that this cannot be used for byte operation.

  • llint/LowLevelInterpreter64.asm:
4:24 PM Changeset in webkit [206127] by jer.noble@apple.com
  • 9 edits
    1 add in trunk

[media-source] Fix imported/w3c/web-platform-tests/media-source/mediasource-avtracks.html
https://bugs.webkit.org/show_bug.cgi?id=162104

Reviewed by Eric Carlson.

Source/WebCore:

Fixes test: imported/w3c/web-platform-tests/media-source/mediasource-avtracks.html

Multiple overlapping issues are causing this test to fail:

  • When a MediaSource object is not attached from a HTMLMediaElement, it's SourceBuffer objects will return null from .videoTracks and .audioTracks, foiling the tests ability to assert that sourceBuffer.videoTracks.length == 0.
  • When a MediaSource object is detached from a HTMLMediaElement, it's tracks are removed but do not generate 'removedtrack' events.

When these bugs were fixed, a few more popped up:

  • The HTMLMediaElement removes its tracks before it closes the MediaSource, which causes an assertion when the MediaSource tells the HTMLMediaElement to remove its copy of the source's tracks (which have already been removed).
  • When the HTMLMediaElement is stop()-ed due to its ScriptExecutionContext being destroyed, it tries to close its MediaSource, which has itself already been stop()-ed and thus asserts.

To eliminate all these bugs and make the code more self explanatory, we will rename the
HTMLMediaElement's closeMediaSource() method to detachMediaSource(), and the MediaSource's
close() method to detachFromElement(). The only way to close a MediaSource is now by calling
detachMediaSource() from the HTMLMediaElement. The parts of the "Detaching from a media
element" algorithm which were previously spread across setReadyState() and onReadyStateChange()
are now unified in the newly renamed detachFromElement() method. The HTMLMediaElement will
first detach its MediaSource, and only after that remove all its tracks.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::setReadyState): Move steps into detachFromElement().
(WebCore::MediaSource::onReadyStateChange): Ditto.
(WebCore::MediaSource::detachFromElement): Perform the steps as specified.
(WebCore::MediaSource::attachToElement): Takes a reference rather than a bare pointer.
(WebCore::MediaSource::stop): Ask the media elemnet to detach.
(WebCore::MediaSource::close): Renamed to detachFromElement().

  • Modules/mediasource/MediaSource.h:
  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::videoTracks): Always return a valid TrackList object.
(WebCore::SourceBuffer::audioTracks): Ditto.
(WebCore::SourceBuffer::textTracks): Ditto.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::~HTMLMediaElement): Renamed closeMediaSource() -> detachMediaSource().
(WebCore::HTMLMediaElement::prepareForLoad): Ditto.
(WebCore::HTMLMediaElement::loadResource): Ditto.
(WebCore::HTMLMediaElement::noneSupported): Ditto.
(WebCore::HTMLMediaElement::mediaLoadingFailedFatally): Ditto.
(WebCore::HTMLMediaElement::detachMediaSource): Ditto.
(WebCore::HTMLMediaElement::userCancelledLoad): Ditto.
(WebCore::HTMLMediaElement::createMediaPlayer): Ditto.
(WebCore::HTMLMediaElement::clearMediaPlayer): Ditto. Also, detach from the MediaSource before

removing tracks.

(WebCore::HTMLMediaElement::closeMediaSource): Deleted.

  • html/HTMLMediaElement.h:
  • html/track/TrackListBase.cpp:

(TrackListBase::remove): Only try to clear the media element from Tracks that have one.

LayoutTests:

  • imported/w3c/web-platform-tests/media-source/mediasource-avtracks-expected.txt
  • platform/mac/TestExpectations:
4:05 PM Changeset in webkit [206126] by achristensen@apple.com
  • 4 edits in trunk

URLParser can read memory out of bounds
https://bugs.webkit.org/show_bug.cgi?id=162206

Reviewed by Geoff Garen.

Source/WebCore:

Covered by new API tests.
URLParser is disabled by default still.

  • platform/URLParser.cpp:

(WebCore::parseIPv4Host):
If there are fewer than two numbers in an ipv4 address, we would subtract two from the Vector's size,
causing us to read memory up to std::numeric_limits<size_t>::max() - 2. Added a bounds check and many tests.

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

4:03 PM Changeset in webkit [206125] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

URLParser should parse serialized valid URLs faster than unknown input
https://bugs.webkit.org/show_bug.cgi?id=162228

Reviewed by Chris Dumez.

The URL constructor with ParsedURLStringTag is almost twice as fast as the other URL constructors.
Assuming there are no tabs or newlines, and assuming characters are already encoded decreases the URLParser
runtime by over 25% and adds infrastructure for more optimizations.

No new tests. No change in behaviour.

  • platform/URL.cpp:

(WebCore::URL::URL):

  • platform/URLParser.cpp:

(WebCore::utf8PercentEncode):
(WebCore::utf8PercentEncodeQuery):
(WebCore::URLParser::parse):
(WebCore::URLParser::parseSerializedURL):
(WebCore::incrementIterator):
(WebCore::URLParser::parseAuthority):
(WebCore::URLParser::parsePort):
(WebCore::URLParser::parseHost):

  • platform/URLParser.h:

(WebCore::URLParser::parse): Deleted.

4:02 PM Changeset in webkit [206124] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.10

New tag.

3:53 PM Changeset in webkit [206123] by Keith Rollin
  • 3 edits in trunk/Source/WebKit2

Reduce logging from WebResourceLoader::didReceiveData
https://bugs.webkit.org/show_bug.cgi?id=162233

Reviewed by Antti Koivisto.

Only log once even if called multiple times for a single resource.

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::didReceiveData):

  • WebProcess/Network/WebResourceLoader.h:
3:33 PM Changeset in webkit [206122] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Cleanup: Remove an extraneous copy of SecurityOrigin
https://bugs.webkit.org/show_bug.cgi?id=162118

Reviewed by Youenn Fablet.

Share one isolated copy of the SecurityOrigin between the ContentSecurityPolicy and
LoaderTaskOptions objects instead of creating two isolated copies of the SecurityOrigin.
This is safe because both ContentSecurityPolicy and LoaderTaskOptions are instantiated
in WorkerThreadableLoader::MainThreadBridge for use on the main thread only.

  • loader/WorkerThreadableLoader.cpp:

(WebCore::LoaderTaskOptions::LoaderTaskOptions):
(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):

3:12 PM Changeset in webkit [206121] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Add size assert for RenderElement
https://bugs.webkit.org/show_bug.cgi?id=162096

Reviewed by Simon Fraser.

Also remove the unused m_visibleInViewportState field.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::unregisterForVisibleInViewportCallback):

  • rendering/RenderElement.h:
2:59 PM Changeset in webkit [206120] by Keith Rollin
  • 4 edits in trunk/Source/WebCore

REGRESSION (r205275): LOG_WITH_STREAM() macros are all compiled in release builds now
https://bugs.webkit.org/show_bug.cgi?id=162180

Reviewed by Simon Fraser.

Disable LOG_WITH_STREAM in release mode. Along with this, remove a
local variable in GraphcsContextCG.cpp in release mode that's no
longer referenced. And adjust logFunctionResult so that it gets
defined only in debug mode, too, to match its declaration in
LogMacros.h.

No new tests -- there are no tests for logging.

  • platform/LogMacros.h:
  • platform/Logging.cpp:
  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawNativeImage):

2:25 PM Changeset in webkit [206119] by dbates@webkit.org
  • 44 edits
    112 deletes in trunk

Remove ENABLE(TEXT_AUTOSIZING) automatic text size adjustment code
https://bugs.webkit.org/show_bug.cgi?id=162167

Reviewed by Simon Fraser.

.:

  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Remove the automatic text size adjustment code guarded by ENABLE(TEXT_AUTOSIZING)
because it is not used by any port. On Mac and iOS, analogous code guarded by
ENABLE(IOS_TEXT_AUTOSIZING) is used.

  • CMakeLists.txt:
  • Configurations/FeatureDefines.xcconfig:
  • dom/Document.cpp:

(WebCore::Document::Document):

  • dom/Document.h:

(WebCore::Document::textAutosizer): Deleted.

  • page/FrameView.cpp:

(WebCore::FrameView::setFrameRect):
(WebCore::FrameView::layout):

  • page/Settings.cpp:

(WebCore::Settings::Settings):
(WebCore::Settings::setTextAutosizingFontScaleFactor): Deleted.

  • page/Settings.h:

(WebCore::Settings::textAutosizingFontScaleFactor): Deleted.

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/RenderingAllInOne.cpp:
  • rendering/TextAutosizer.cpp: Removed.
  • rendering/TextAutosizer.h: Removed.
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresLayout):
(WebCore::RenderStyle::lineHeight):
(WebCore::RenderStyle::setFontSize):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::textAutosizingMultiplier): Deleted.
(WebCore::RenderStyle::setTextAutosizingMultiplier): Deleted.

  • rendering/style/StyleVisualData.cpp:

(WebCore::StyleVisualData::StyleVisualData):

  • rendering/style/StyleVisualData.h:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setTextAutosizingEnabled):
(WebCore::InternalSettings::setTextAutosizingWindowSizeOverride):
(WebCore::InternalSettings::setTextAutosizingFontScaleFactor): Deleted.

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

  • TestExpectations:
  • fast/text-autosizing/cluster-inline-block-or-table-expected.html: Removed.
  • fast/text-autosizing/cluster-inline-block-or-table.html: Removed.
  • fast/text-autosizing/cluster-inline-grid-flex-box-expected.html: Removed.
  • fast/text-autosizing/cluster-inline-grid-flex-box.html: Removed.
  • fast/text-autosizing/cluster-list-item-expected.html: Removed.
  • fast/text-autosizing/cluster-list-item.html: Removed.
  • fast/text-autosizing/cluster-narrow-in-wide-expected.html: Removed.
  • fast/text-autosizing/cluster-narrow-in-wide-ohidden-expected.html: Removed.
  • fast/text-autosizing/cluster-narrow-in-wide-ohidden.html: Removed.
  • fast/text-autosizing/cluster-narrow-in-wide.html: Removed.
  • fast/text-autosizing/cluster-wide-in-narrow-expected.html: Removed.
  • fast/text-autosizing/cluster-wide-in-narrow.html: Removed.
  • fast/text-autosizing/cluster-with-narrow-lca-and-cluster-expected.html: Removed.
  • fast/text-autosizing/cluster-with-narrow-lca-and-cluster.html: Removed.
  • fast/text-autosizing/cluster-with-narrow-lca-expected.html: Removed.
  • fast/text-autosizing/cluster-with-narrow-lca.html: Removed.
  • fast/text-autosizing/cluster-with-wide-lca-expected.html: Removed.
  • fast/text-autosizing/cluster-with-wide-lca.html: Removed.
  • fast/text-autosizing/clusters-insufficient-text-expected.html: Removed.
  • fast/text-autosizing/clusters-insufficient-text.html: Removed.
  • fast/text-autosizing/clusters-insufficient-width-expected.html: Removed.
  • fast/text-autosizing/clusters-insufficient-width.html: Removed.
  • fast/text-autosizing/clusters-sufficient-text-except-in-root-expected.html: Removed.
  • fast/text-autosizing/clusters-sufficient-text-except-in-root.html: Removed.
  • fast/text-autosizing/clusters-sufficient-width-expected.html: Removed.
  • fast/text-autosizing/clusters-sufficient-width.html: Removed.
  • fast/text-autosizing/constrained-and-overflow-auto-ancestor-expected.html: Removed.
  • fast/text-autosizing/constrained-and-overflow-auto-ancestor.html: Removed.
  • fast/text-autosizing/constrained-and-overflow-hidden-ancestor-expected.html: Removed.
  • fast/text-autosizing/constrained-and-overflow-hidden-ancestor.html: Removed.
  • fast/text-autosizing/constrained-and-overflow-paged-x-ancestor-expected.html: Removed.
  • fast/text-autosizing/constrained-and-overflow-paged-x-ancestor.html: Removed.
  • fast/text-autosizing/constrained-and-overflow-scroll-ancestor-expected.html: Removed.
  • fast/text-autosizing/constrained-and-overflow-scroll-ancestor.html: Removed.
  • fast/text-autosizing/constrained-height-ancestor-expected.html: Removed.
  • fast/text-autosizing/constrained-height-ancestor.html: Removed.
  • fast/text-autosizing/constrained-height-body-expected.html: Removed.
  • fast/text-autosizing/constrained-height-body.html: Removed.
  • fast/text-autosizing/constrained-maxheight-ancestor-expected.html: Removed.
  • fast/text-autosizing/constrained-maxheight-ancestor.html: Removed.
  • fast/text-autosizing/constrained-maxheight-expected.html: Removed.
  • fast/text-autosizing/constrained-maxheight.html: Removed.
  • fast/text-autosizing/constrained-out-of-flow-expected.html: Removed.
  • fast/text-autosizing/constrained-out-of-flow.html: Removed.
  • fast/text-autosizing/constrained-percent-maxheight-expected.html: Removed.
  • fast/text-autosizing/constrained-percent-maxheight.html: Removed.
  • fast/text-autosizing/constrained-percent-of-viewport-maxheight-expected.html: Removed.
  • fast/text-autosizing/constrained-percent-of-viewport-maxheight.html: Removed.
  • fast/text-autosizing/constrained-then-float-ancestors-expected.html: Removed.
  • fast/text-autosizing/constrained-then-float-ancestors.html: Removed.
  • fast/text-autosizing/constrained-then-overflow-ancestors-expected.html: Removed.
  • fast/text-autosizing/constrained-then-overflow-ancestors.html: Removed.
  • fast/text-autosizing/constrained-then-position-absolute-ancestors-expected.html: Removed.
  • fast/text-autosizing/constrained-then-position-absolute-ancestors.html: Removed.
  • fast/text-autosizing/constrained-then-position-fixed-ancestors-expected.html: Removed.
  • fast/text-autosizing/constrained-then-position-fixed-ancestors.html: Removed.
  • fast/text-autosizing/constrained-within-overflow-ancestor-expected.html: Removed.
  • fast/text-autosizing/constrained-within-overflow-ancestor.html: Removed.
  • fast/text-autosizing/em-margin-border-padding-expected.html: Removed.
  • fast/text-autosizing/em-margin-border-padding.html: Removed.
  • fast/text-autosizing/font-scale-factor-expected.html: Removed.
  • fast/text-autosizing/font-scale-factor.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-button-input-elements-expected.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-button-input-elements.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-checkbox-input-element-expected.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-checkbox-input-element.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-radio-input-element-expected.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-radio-input-element.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-select-element-expected.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-select-element.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-textfield-input-elements-expected.html: Removed.
  • fast/text-autosizing/form-controls-autosizing-textfield-input-elements.html: Removed.
  • fast/text-autosizing/header-li-links-autosizing-expected.html: Removed.
  • fast/text-autosizing/header-li-links-autosizing.html: Removed.
  • fast/text-autosizing/header-links-autosizing-different-fontsize-expected.html: Removed.
  • fast/text-autosizing/header-links-autosizing-different-fontsize.html: Removed.
  • fast/text-autosizing/header-links-autosizing-expected.html: Removed.
  • fast/text-autosizing/header-links-autosizing.html: Removed.
  • fast/text-autosizing/narrow-child-expected.html: Removed.
  • fast/text-autosizing/narrow-child.html: Removed.
  • fast/text-autosizing/narrow-descendants-combined-expected.html: Removed.
  • fast/text-autosizing/narrow-descendants-combined.html: Removed.
  • fast/text-autosizing/narrow-iframe-expected.html: Removed.
  • fast/text-autosizing/narrow-iframe-flattened-expected.html: Removed.
  • fast/text-autosizing/narrow-iframe-flattened.html: Removed.
  • fast/text-autosizing/narrow-iframe.html: Removed.
  • fast/text-autosizing/nested-child-expected.html: Removed.
  • fast/text-autosizing/nested-child.html: Removed.
  • fast/text-autosizing/nested-em-line-height-expected.html: Removed.
  • fast/text-autosizing/nested-em-line-height.html: Removed.
  • fast/text-autosizing/oscillation-javascript-fontsize-change-expected.html: Removed.
  • fast/text-autosizing/oscillation-javascript-fontsize-change.html: Removed.
  • fast/text-autosizing/simple-paragraph-expected.html: Removed.
  • fast/text-autosizing/simple-paragraph.html: Removed.
  • fast/text-autosizing/span-child-expected.html: Removed.
  • fast/text-autosizing/span-child.html: Removed.
  • fast/text-autosizing/unwrappable-blocks-expected.html: Removed.
  • fast/text-autosizing/unwrappable-blocks.html: Removed.
  • fast/text-autosizing/unwrappable-inlines-expected.html: Removed.
  • fast/text-autosizing/unwrappable-inlines.html: Removed.
  • fast/text-autosizing/various-font-sizes-expected.html: Removed.
  • fast/text-autosizing/various-font-sizes.html: Removed.
  • fast/text-autosizing/wide-block-expected.html: Removed.
  • fast/text-autosizing/wide-block.html: Removed.
  • fast/text-autosizing/wide-child-expected.html: Removed.
  • fast/text-autosizing/wide-child.html: Removed.
  • fast/text-autosizing/wide-iframe-expected.html: Removed.
  • fast/text-autosizing/wide-iframe.html: Removed.
  • fast/text-autosizing/wide-in-narrow-overflow-scroll-expected.html: Removed.
  • fast/text-autosizing/wide-in-narrow-overflow-scroll.html: Removed.
  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator-wk1/TestExpectations: Move Failure entry for test

fast/text-autosizing/ios/line-height-text-autosizing.html from here to platform/ios-simulator/TestExpectations.

  • platform/ios-simulator-wk2/TestExpectations: Ditto.
  • platform/ios-simulator/TestExpectations: Associated failure of test

fast/text-autosizing/ios/line-height-text-autosizing.html with <https://bugs.webkit.org/show_bug.cgi?id=162236>.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wk2/TestExpectations:
2:10 PM Changeset in webkit [206118] by Chris Dumez
  • 3 edits
    5 adds in trunk

Update XHTMLParser to recognize "-W3CDTD MathML 2.0EN" public identifier
https://bugs.webkit.org/show_bug.cgi?id=162166

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Import test coverage from W3C web-platform-tests.

  • web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/w3c-import.log: Added.
  • web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support-expected.txt: Added.
  • web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm: Added.

Source/WebCore:

Update XHTMLParser to recognize "-W3CDTD MathML 2.0EN" public identifier as
per the latest HTML specification.

Firefox already recognizes it properly.

Test: imported/w3c/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::convertUTF16EntityToUTF8):
Fix assertion that was causing the new test to crash in debug. The input '\u0026'
gets converted to '&' which is only 1 character. However, the assertion wrongly
expected WTF::Unicode::convertUTF16ToUTF8() to generate more than 1 character.

(WebCore::externalSubsetHandler):
Add "-W3CDTD MathML 2.0EN" to the list.

2:07 PM Changeset in webkit [206117] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/inspector/unit-tests
https://bugs.webkit.org/show_bug.cgi?id=162103

Patch by Devin Rousso <Devin Rousso> on 2016-09-19
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • inspector/unit-tests/inspector-test-dispatch-event-to-frontend.html:
  • inspector/unit-tests/protocol-test-dispatch-event-to-frontend.html:
1:49 PM Changeset in webkit [206116] by commit-queue@webkit.org
  • 8 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/inspector/console
https://bugs.webkit.org/show_bug.cgi?id=162070

Patch by Devin Rousso <Devin Rousso> on 2016-09-19
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • inspector/console/clearMessages.html:
  • inspector/console/command-line-api.html:
  • inspector/console/console-time.html:
  • inspector/console/messageAdded-from-named-evaluations.html:
  • inspector/console/messageAdded-from-worker.html:
  • inspector/console/messageRepeatCountUpdated.html:
  • inspector/console/messagesCleared.html:
1:47 PM Changeset in webkit [206115] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/inspector/script-profiler
https://bugs.webkit.org/show_bug.cgi?id=162101

Patch by Devin Rousso <Devin Rousso> on 2016-09-19
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • inspector/script-profiler/event-type-Other.html:
1:46 PM Changeset in webkit [206114] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/inspector/page
https://bugs.webkit.org/show_bug.cgi?id=162100

Patch by Devin Rousso <Devin Rousso> on 2016-09-19
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • inspector/page/searchInResources.html:
1:45 PM Changeset in webkit [206113] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/inspector/storage
https://bugs.webkit.org/show_bug.cgi?id=162102

Patch by Devin Rousso <Devin Rousso> on 2016-09-19
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • inspector/storage/domStorage-events.html:
1:45 PM Changeset in webkit [206112] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/inspector/network
https://bugs.webkit.org/show_bug.cgi?id=162099

Patch by Devin Rousso <Devin Rousso> on 2016-09-19
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • inspector/network/client-blocked-load-expected.txt:
  • inspector/network/client-blocked-load.html:
  • inspector/network/xhr-json-blob-has-content.html:
1:41 PM Changeset in webkit [206111] by commit-queue@webkit.org
  • 5 edits in trunk/LayoutTests

Web Inspector: adopt Object.awaitEvent in LayoutTests/inspector/indexeddb
https://bugs.webkit.org/show_bug.cgi?id=162073

Patch by Devin Rousso <Devin Rousso> on 2016-09-19
Reviewed by Brian Burg.

Replace instances of singleFireEventListener with awaitEvent and use promise logic to make
tests more readable.

  • inspector/indexeddb/clearObjectStore.html:
  • inspector/indexeddb/deleteDatabaseNamesWithSpace.html:
  • inspector/indexeddb/requestDatabase.html:
  • inspector/indexeddb/requestDatabaseNames.html:
1:39 PM Changeset in webkit [206110] by keith_miller@apple.com
  • 9 edits
    1 delete in trunk/Source/JavaScriptCore

Update WASM towards 0xc
https://bugs.webkit.org/show_bug.cgi?id=162067

Reviewed by Geoffrey Garen.

This patch updates some of the core parts of the WASM frontend to the 0xc standard.
First, it changes the section names from strings to bytecodes. It also adds support
for inline block signatures. This is a change from the old version that used to have
each branch indicate the arity. Finally, this patch updates all the tests and deletes
a duplicate test.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • testWASM.cpp:

(runWASMTests):

  • wasm/WASMB3IRGenerator.cpp:
  • wasm/WASMFormat.h:
  • wasm/WASMFunctionParser.h:

(JSC::WASM::FunctionParser<Context>::FunctionParser):
(JSC::WASM::FunctionParser<Context>::parseBlock):
(JSC::WASM::FunctionParser<Context>::parseExpression):

  • wasm/WASMModuleParser.cpp:

(JSC::WASM::ModuleParser::parse):

  • wasm/WASMSections.cpp: Removed.

(JSC::WASM::Sections::lookup): Deleted.

  • wasm/WASMSections.h:

(JSC::WASM::Sections::validateOrder):

1:35 PM Changeset in webkit [206109] by Chris Dumez
  • 11 edits in trunk

Window's pageXOffset / pageYOffset attributes should be replaceable
https://bugs.webkit.org/show_bug.cgi?id=162046

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/html/browsers/the-window-object/window-properties-expected.txt:

Source/WebCore:

Window's pageXOffset / pageYOffset attributes should be replaceable as per:

Firefox agrees with the specification.

No new tests, rebaselined existing test.

  • page/DOMWindow.h:
  • page/DOMWindow.idl:

LayoutTests:

Update existing tests to reflect behavior change.

  • fast/dom/Window/get-set-properties-expected.txt:
  • fast/dom/Window/get-set-properties.html:
  • js/dom/var-declarations-shadowing-expected.txt:
  • js/dom/var-declarations-shadowing.html:
1:22 PM Changeset in webkit [206108] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

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

still failing on armv7 for some reason (Requested by anttik on
#webkit).

Reverted changeset:

"Add size assert for RenderElement"
https://bugs.webkit.org/show_bug.cgi?id=162096
http://trac.webkit.org/changeset/206107

12:26 PM Changeset in webkit [206107] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Add size assert for RenderElement
https://bugs.webkit.org/show_bug.cgi?id=162096

Reviewed by Simon Fraser.

Also remove the unused m_visibleInViewportState field.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::unregisterForVisibleInViewportCallback):

  • rendering/RenderElement.h:
12:08 PM Changeset in webkit [206106] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Unreviewed, reverting changeset https://trac.webkit.org/changeset/206101.

Revert https://bugs.webkit.org/show_bug.cgi?id=162165:
Web Inspector: Make it easier to create a view from an existing DOM element.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):

  • UserInterface/Views/View.js:

(WebInspector.View):

11:59 AM Changeset in webkit [206105] by commit-queue@webkit.org
  • 6 edits in trunk

Web Inspector: Scope sidebar shows "Closure" instead of "Local" when paused in anonymous function
https://bugs.webkit.org/show_bug.cgi?id=162113
<rdar://problem/28348954>

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

Source/WebInspectorUI:

  • UserInterface/Models/CallFrame.js:

(WebInspector.CallFrame):
Default the functionName to the empty string. This will compare
favorably against other empty function names instead of null.

LayoutTests:

  • inspector/debugger/paused-scopes-expected.txt:
  • inspector/debugger/paused-scopes.html:
  • inspector/debugger/resources/paused-scopes.js:

Add a third pause to test behavior paused inside an
unnamed anonymous function.

11:46 AM Changeset in webkit [206104] by Yusuke Suzuki
  • 15 edits in trunk/Source/JavaScriptCore

[JSC] Use is_cell_with_type for @isRegExpObject, @isMap, and @isSet
https://bugs.webkit.org/show_bug.cgi?id=162142

Reviewed by Michael Saboff.

Use is_cell_with_type for @isRegExpObject, @isMap and @isSet.
Previously, they were implemented as functions and only @isRegExpObject was handled in the DFG and FTL.
The recently added op_is_cell_with_type bytecode and DFG IsCellWithType node allows us to simplify the above checks in all JIT tiers.
Changed these checks to bytecode intrinsics using op_is_cell_with_type.

  • builtins/BuiltinNames.h:
  • bytecode/BytecodeIntrinsicRegistry.h:
  • bytecode/SpeculatedType.cpp:

(JSC::speculationFromJSType):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::emitIsRegExpObject):
(JSC::BytecodeGenerator::emitIsMap):
(JSC::BytecodeGenerator::emitIsSet):
(JSC::BytecodeGenerator::emitIsProxyObject): Deleted.

  • bytecompiler/NodesCodegen.cpp:

(JSC::BytecodeIntrinsicNode::emit_intrinsic_isRegExpObject):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_isMap):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_isSet):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • runtime/ECMAScriptSpecInternalFunctions.cpp:

(JSC::esSpecIsRegExpObject): Deleted.

  • runtime/ECMAScriptSpecInternalFunctions.h:
  • runtime/Intrinsic.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/MapPrototype.cpp:

(JSC::privateFuncIsMap): Deleted.

  • runtime/MapPrototype.h:
  • runtime/SetPrototype.cpp:

(JSC::privateFuncIsSet): Deleted.

  • runtime/SetPrototype.h:
11:38 AM Changeset in webkit [206103] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source

Versioning.

11:32 AM Changeset in webkit [206102] by n_wang@apple.com
  • 6 edits
    2 adds in trunk

AX: Add accessibility support for details element on iOS
https://bugs.webkit.org/show_bug.cgi?id=162041

Reviewed by Chris Fleizach.

Source/WebCore:

The details and summary elements are poorly supported on iOS.
Two major issues:

  1. Assistive technologies taking focus onto details/summary elements will cause unexpected behavior.
  2. VoiceOver is not speaking the expanded status of the details element.

Fixed them by not setting focus onto elements inside details and exposing the details element's expanded
status to its summary's accessible children.

Test: accessibility/ios-simulator/detail-summary-ios.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(matchedParent):
(-[WebAccessibilityObjectWrapper _accessibilityListAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityLandmarkAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityTableAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityFieldsetAncestor]):
(-[WebAccessibilityObjectWrapper tableCellParent]):
(-[WebAccessibilityObjectWrapper tableParent]):
(-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]):
(-[WebAccessibilityObjectWrapper convertRectToScreenSpace:]):
(-[WebAccessibilityObjectWrapper detailParentForSummaryObject:]):
(-[WebAccessibilityObjectWrapper detailParentForObject:]):
(-[WebAccessibilityObjectWrapper accessibilityElementDidBecomeFocused]):
(-[WebAccessibilityObjectWrapper accessibilitySupportsARIAExpanded]):
(-[WebAccessibilityObjectWrapper accessibilityIsExpanded]):

Tools:

  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::isExpanded):

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::isExpanded):

LayoutTests:

  • accessibility/ios-simulator/detail-summary-ios-expected.txt: Added.
  • accessibility/ios-simulator/detail-summary-ios.html: Added.
10:53 AM Changeset in webkit [206101] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Make it easier to create a view from an existing DOM element
https://bugs.webkit.org/show_bug.cgi?id=162165
<rdar://problem/28365848>

Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):
Pass id string for views created from existing DOM elements.

  • UserInterface/Views/View.js:

(WebInspector.View):
Change element to elementOrIdentifier. If the value is a string,
treat it as an element identifier. If the identifier is invalid, create
a default element.

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

ASSERTION FAILED: clipRectsContext.rootLayer == m_clipRectsCache->m_clipRectsRoot[clipRectsType] while loading guardian.co.uk
https://bugs.webkit.org/show_bug.cgi?id=162129
<rdar://problem/28353350>

Reviewed by Antti Koivisto.

Source/WebCore:

Neither ::localClipRect() nor ::selfClipRect() accounts for paginated context while computing the cliprects (See FIXMEs).
This patch ensures that we don't end up caching these invalid cliprects.

Test: fast/multicol/assert-on-cliprect-caching-when-paginated.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects):

LayoutTests:

  • fast/multicol/assert-on-cliprect-caching-when-paginated-expected.txt: Added.
  • fast/multicol/assert-on-cliprect-caching-when-paginated.html: Added.
10:16 AM Changeset in webkit [206099] by BJ Burg
  • 8 edits in trunk/Source/JavaScriptCore

Web Replay: teach the replay inputs generator to encode and decode OptionSet<T>
https://bugs.webkit.org/show_bug.cgi?id=162107

Reviewed by Anders Carlsson.

Add a new type flag OPTION_SET. This means that the type is a typechecked enum class
declaration, but it's stored in an OptionSet object and can contain multiple
distinct enumeration values like an untyped enum declaration.

Do some cleanup since the generator now supports three different enumerable types:
'enum', 'enum class', and 'OptionSet<T>' where T is an enum class.

Also clean up some sloppy variable names. Using an 'enum_' prefix is really confusing now.

  • replay/scripts/CodeGeneratorReplayInputs.py:

(Type.is_enum_declaration):
(Type.is_enum_class_declaration):
(Type.is_option_set):
(Type):
(Type.is_enumerable):
When we want all enumerable types, this property includes all three variants.

(Type.declaration_kind): Forward-declare OptionSet's type parameter as an enum class.
(VectorType.is_enum_declaration): Renamed from is_enum().
(VectorType.is_enum_class_declaration): Renamed from is_enum_class().
(VectorType.is_option_set): Added.
(InputsModel.enumerable_types): Added.
(InputsModel.parse_type_with_framework):
(Generator.generate_header):
(Generator.generate_implementation):
(Generator.generate_includes):
(Generator.generate_type_forward_declarations):
(Generator.generate_enumerable_type_trait_declaration):
(Generator.generate_enum_trait_declaration): Renamed.
(Generator.generate_enum_trait_implementation): Renamed.

  • replay/scripts/CodeGeneratorReplayInputsTemplates.py:

Add new templates for OptionSet types. Clean up parameter names and simplify the
enumerable type declaration template, which is the same for all enumerable type variants.

  • replay/scripts/tests/expected/fail-on-c-style-enum-no-storage.json-error:
  • replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp:

(JSC::EncodingTraits<Test::PlatformEvent::OtherType>::encodeValue):
(JSC::EncodingTraits<Test::PlatformEvent::OtherType>::decodeValue):

  • replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h:

Rebaseline test results.

  • replay/scripts/tests/generate-enum-encoding-helpers.json:

Add a new type for OptionSet<PlatformEvent::Modifier> to capture generated encode/decode methods.

10:00 AM Changeset in webkit [206098] by Yusuke Suzuki
  • 29 edits in trunk/Source/JavaScriptCore

[JSC][LLInt] Introduce is_cell_with_type
https://bugs.webkit.org/show_bug.cgi?id=162132

Reviewed by Sam Weinig.

In this patch, we introduce is_cell_with_type bytecode. This bytecode can unify the following predicates,
op_is_string, op_is_jsarray, op_is_proxy_object, and op_is_derived_array!
And we now drop DFG node IsString since we can use IsCellWithType instead.
This automatically offers optimization to previous IsString node: dropping cell check by using CellUse edge filter.

Later, we are planning to use this is_cell_with_type to optimize @isRegExpObject, @isSet, and @isMap[1].

The performance results are neutral.

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

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

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

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecode/SpeculatedType.cpp:

(JSC::speculationFromJSType):

  • bytecode/SpeculatedType.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitEqualityOp):
(JSC::BytecodeGenerator::emitIsCellWithType):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::emitIsJSArray):
(JSC::BytecodeGenerator::emitIsProxyObject):
(JSC::BytecodeGenerator::emitIsDerivedArray):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNode.h:

(JSC::DFG::Node::speculatedTypeForQuery):

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileIsString): Deleted.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

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

(JSC::JIT::emit_op_is_cell_with_type):
(JSC::JIT::emitIsCellWithType): Deleted.
(JSC::JIT::emit_op_is_string): Deleted.
(JSC::JIT::emit_op_is_jsarray): Deleted.
(JSC::JIT::emit_op_is_proxy_object): Deleted.
(JSC::JIT::emit_op_is_derived_array): Deleted.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_is_cell_with_type):
(JSC::JIT::emitIsCellWithType): Deleted.
(JSC::JIT::emit_op_is_string): Deleted.
(JSC::JIT::emit_op_is_jsarray): Deleted.
(JSC::JIT::emit_op_is_proxy_object): Deleted.
(JSC::JIT::emit_op_is_derived_array): Deleted.

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
9:01 AM Changeset in webkit [206097] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

Only override URLParser::enabled if NSUserDefaults object exists
https://bugs.webkit.org/show_bug.cgi?id=162131

Patch by Alex Christensen <achristensen@webkit.org> on 2016-09-19
Reviewed by Sam Weinig.

  • Shared/Cocoa/WebKit2InitializeCocoa.mm:

(WebKit::platformInitializeWebKit2):

  • Shared/WebKit2Initialize.cpp:

When I enable URLParser by default, I will want the default to only be overwritten if there is a
NSUserDefaults key for URLParserEnabled. Right now it is setting URLParser::enabled to false always,
which isn't a problem because the default is also false. When the default is true, that will overwrite the default.

7:31 AM Changeset in webkit [206096] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Clean-up after r206014
https://bugs.webkit.org/show_bug.cgi?id=162140

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-19
Reviewed by Sam Weinig.

Covered by existing tests.

  • platform/network/HTTPHeaderMap.cpp:

(WebCore::HTTPHeaderMap::add):

6:30 AM Changeset in webkit [206095] by Michael Catanzaro
  • 2 edits in trunk

[GTK] Make ENABLE_THREADED_COMPOSITOR a public option
https://bugs.webkit.org/show_bug.cgi?id=162148

Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsGTK.cmake:
5:30 AM Changeset in webkit [206094] by nael.ouedraogo@crf.canon.fr
  • 4 edits in trunk/Source/WebCore

If a host object is only used as a variadic argument, its bindings header isn't properly included
https://bugs.webkit.org/show_bug.cgi?id=150121

Reviewed by Youenn Fablet.

Modify JS binding generator to include binding headers of objects passed
as variadic argument.

  • Modules/mediastream/RTCPeerConnection.h: Remove workaround.
  • bindings/scripts/CodeGeneratorJS.pm:

(AddVariadicToImplIncludes):
(GenerateParametersCheck):

  • bindings/scripts/test/JS/JSTestObj.cpp:
4:30 AM Changeset in webkit [206093] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Web Inspector: ⇧⌘C should highlight node under cursor without re-moving mouse
https://bugs.webkit.org/show_bug.cgi?id=162128

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

  • inspector/InspectorDOMAgent.h:
  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorDOMAgent::mouseDidMoveOverElement):
(WebCore::InspectorDOMAgent::highlightMousedOverNode):
(WebCore::InspectorDOMAgent::setSearchingForNode):
When the inspector is connected, remember the last moused over node.
This produces far more consistent results of highlighting under
the cursor when pressing and releasing the keyboard shortcut keys,
without having to move the mouse. Even when using the shortcut to
first connect the inspector this produces far more consistent
results because releasing the keys for the shortcut produce new
mouseDidMoveOverElement events.

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

Web Inspector: Color picker in Style sidebar stops working after 1st color change
https://bugs.webkit.org/show_bug.cgi?id=162115
<rdar://problem/28349875>

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

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

(WebInspector.CSSStyleDeclarationTextEditor):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._updateTextMarkers):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._updateTextMarkers.createSwatch):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._inlineSwatchActivated):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._inlineSwatchDeactivated):
Listen for swatch activated / inactivated events to set some state.

(WebInspector.CSSStyleDeclarationTextEditor.prototype._propertiesChanged):
Do not wipe markers if there is an active inline swatch. That
would break behavior for that active swatch.

(WebInspector.CSSStyleDeclarationTextEditor.prototype._inlineSwatchValueChanged):
Eliminate old, incorrect, and now unnecessary code for trying to recover
a textMarker for an inline swatch if the textMarker went away. Besides being
incorrect, if an inline swatch's textMarker goes away, then we will already
have issues, because any active popover will still be connected to the
original marker and swatch element that no longer appear in the editor.

  • UserInterface/Views/ColorPicker.js:

(WebInspector.ColorPicker):
(WebInspector.ColorPicker.prototype.set color):

  • UserInterface/Views/InlineSwatch.js:

(WebInspector.InlineSwatch.prototype.didDismissPopover):
(WebInspector.InlineSwatch.prototype._swatchElementClicked):

2:39 AM Changeset in webkit [206091] by commit-queue@webkit.org
  • 8 edits in trunk/Source

Web Inspector: Bring the inspected page's window forward when activating element search
https://bugs.webkit.org/show_bug.cgi?id=162114
<rdar://problem/28349357>

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

Source/WebKit/mac:

  • WebCoreSupport/WebInspectorClient.mm:

(WebInspectorClient::didSetSearchingForNode):
When element search is activated bring the window
containing the inspected page to the foreground.

Source/WebKit2:

  • UIProcess/WebInspectorProxy.h:
  • UIProcess/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::elementSelectionChanged):
When element search is activated allow the platform to bring
the window containing the inspected page to the foreground.

(WebKit::WebInspectorProxy::platformBringInspectedPageToFront):

  • UIProcess/efl/WebInspectorProxyEfl.cpp:

(WebKit::WebInspectorProxy::platformBringInspectedPageToFront):

  • UIProcess/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformBringInspectedPageToFront):
Default empty implementation for ports.

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::platformBringInspectedPageToFront):
Bring the window containing the inspected page to the foreground.

2:00 AM Changeset in webkit [206090] by nael.ouedraogo@crf.canon.fr
  • 4 edits in trunk/Source/WebCore

JSDOMBindings' toArguments() should return a more descriptive object
https://bugs.webkit.org/show_bug.cgi?id=161793

Reviewed by Youenn Fablet.

Replace std::pair with new VariadicHelperResult class with more
readable members names.

No additional tests required.

  • bindings/js/JSDOMBinding.h:

(WebCore::VariadicHelper::Result::Result):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateParametersCheck):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::jsTestObjPrototypeFunctionOverloadedMethod12):
(WebCore::jsTestObjPrototypeFunctionVariadicStringMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicNodeMethod):

12:23 AM Changeset in webkit [206089] by Carlos Garcia Campos
  • 9 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r206080 - [GTK] Stop using glReadPixels() to blit AC surfaces in the UIProcess under Wayland
https://bugs.webkit.org/show_bug.cgi?id=161530

Reviewed by Carlos Garcia Campos.

Use gdk_cairo_draw_from_gl when all necessary conditions exist.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::create): take TextureMapper::PaintFlags as optional argument.
(WebKit::ThreadedCompositor::ThreadedCompositor): ditto.
(WebKit::ThreadedCompositor::renderLayerTree): relay paint flags to TextureMapper::beginPaint.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::paint): use the faster gdk_cairo_draw_from_gl when a new
enough GTK+ is in use.

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): create compositor
with PaintingMirrored flag if we have recent GTK+ and are running under Wayland.

  • WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h: implement shouldPaintMirrored by always

returning false.

  • WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h: implement shouldPaintMirrored by always

returning true.

  • WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:

(WebKit::LayerTreeHostGtk::compositeLayersToContext): pass PaintingMirror flag to TextureMapper
when under a recent enough GTK+ and Wayland.

12:22 AM Changeset in webkit [206088] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/gtk/po

Merge r206079 - [GTK] [l10n] Updated Ukrainian translation of WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=162136

Patch by Yuri Chornoivan <yurchor@ukr.net> on 2016-09-18
Rubber-stamped by Michael Catanzaro.

  • uk.po:
12:21 AM Changeset in webkit [206087] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r206086 - [GTK] Empty referer header after WebKit session state restoration trips Bad Behavior Wordpress plugin
https://bugs.webkit.org/show_bug.cgi?id=159606

Reviewed by Carlos Garcia Campos.

Leave the referrer member of FrameState unset when restoring from session state, unless
there is actually a nonempty referrer saved in the state. If we set it to an empty string,
then an empty referrer gets sent to the server, which some servers do not accept. It
triggers the Bad Behavior plugin on my WordPress blog, for instance. It also breaks vox.com.

  • UIProcess/API/gtk/WebKitWebViewSessionState.cpp:

(decodeFrameState):

Note: See TracTimeline for information about the timeline view.