Timeline



Sep 28, 2016:

9:44 PM Changeset in webkit [206576] by Chris Dumez
  • 5 edits
    9 adds in trunk/LayoutTests

Import touch-events web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=162713

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Import touch-events web-platform-tests.

  • web-platform-tests/touch-events/OWNERS: Added.
  • web-platform-tests/touch-events/create-touch-touchlist.html: Added.
  • web-platform-tests/touch-events/historical.html: Added.
  • web-platform-tests/touch-events/multi-touch-interactions.js: Added.

(debug_print):
(check_list_subset_of_two_targetlists):
(is_at_least_one_item_in_targetlist):
(check_no_item_in_targetlist):
(check_targets):
(run.):
(run):

  • web-platform-tests/touch-events/touch-globaleventhandler-interface.html: Added.
  • web-platform-tests/touch-events/touch-support.js: Added.

(check_Touch_object):
(check_TouchEvent):

  • web-platform-tests/touch-events/touch-touchevent-constructor.html: Added.
  • web-platform-tests/touch-events/w3c-import.log: Added.

LayoutTests:

Skip on all platforms that do not have Touch enabled.

  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
8:58 PM Changeset in webkit [206575] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Drop first 'state' parameter to JSDOMWindow::toWrapped() / JSEventTarget::toWrapped()
https://bugs.webkit.org/show_bug.cgi?id=162709

Reviewed by Alex Christensen.

Drop first 'state' parameter to JSDOMWindow::toWrapped() / JSEventTarget::toWrapped()
as it is unused. This is the quickest way to allow DOMWindow / EventTarget members
in IDL dictionaries. This is because the generated bindings code relies on
convertWrapperType() in JSDOMConvert.h which calls toWrapped() with a single
parameter. Right now, the only type that requires an ExecState for its toWrapped()
is XPathNSResolver (which should likely be a callback interface rather than a
regular interface).

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::toWrapped):

  • bindings/js/JSDictionary.cpp:

(WebCore::JSDictionary::convertValue):

  • bindings/js/JSEventTargetCustom.cpp:

(WebCore::JSEventTarget::toWrapped):

  • bindings/js/JSMessageEventCustom.cpp:

(WebCore::handleInitMessageEvent):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(JSValueToNative):

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

Marking fast/images/object-image.html as crashing.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

6:29 PM Changeset in webkit [206573] by sbarati@apple.com
  • 4 edits
    1 add in trunk

stringProtoFuncRepeatCharacter will return null when it should not
https://bugs.webkit.org/show_bug.cgi?id=161944

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/pad-start-calls-repeat-character-with-double.js: Added.

(logLinesWithContext):

Source/JavaScriptCore:

stringProtoFuncRepeatCharacter was expecting its second argument
to always be a boxed integer. This is not correct. The DFG may decide
to represent a particular value as a double instead of integer. This
function needs to have correct behavior when its second argument is
a boxed double. I also added an assertion stating that the second argument
is always a number. We can guarantee this since it's only called from
builtins.

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncRepeatCharacter):

6:14 PM Changeset in webkit [206572] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

API test WebKit2.AutoLayoutIntegration is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=160284

Reviewed by Dan Bernstein.

  • TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm:

(-[AutoLayoutWKWebView load:withWidth:expectingContentSize:resettingWidth:]):
(-[AutoLayoutWKWebView beginLayoutAtMinimumWidth:andExpectContentSizeChange:]):
(-[AutoLayoutWKWebView waitForContentSizeChangeResettingWidth:]):
(-[AutoLayoutWKWebView layoutAtMinimumWidth:andExpectContentSizeChange:resettingWidth:]):
(-[AutoLayoutWKWebView invalidateIntrinsicContentSize]):
(TEST):
Make the autolayout tests a bit more flexible regarding the ordering of
invalidateIntrinsicContentSize, to avoid a race between the load
completing and the invalidation.

Also, move the newly added test to use its own WKWebView, since once in a
while we get a first layout notification from the previous page, causing the test to fail.

Un-disable the tests, which now run without any flakes for me with quite a few iterations.

5:58 PM Changeset in webkit [206571] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.14.0.2

New tag.

5:54 PM Changeset in webkit [206570] by bshafiei@apple.com
  • 4 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206551. rdar://problem/28526639

5:54 PM Changeset in webkit [206569] by bshafiei@apple.com
  • 24 edits
    2 adds in branches/safari-602.2.14.0-branch

Merge r206527. rdar://problem/28499358

5:54 PM Changeset in webkit [206568] by bshafiei@apple.com
  • 2 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206520. rdar://problem/28412512

5:54 PM Changeset in webkit [206567] by bshafiei@apple.com
  • 11 edits
    2 adds in branches/safari-602.2.14.0-branch

Merge r206518. rdar://problem/28505032

5:54 PM Changeset in webkit [206566] by bshafiei@apple.com
  • 4 edits in branches/safari-602.2.14.0-branch/Tools

Merge r206335. rdar://problem/28499358

5:54 PM Changeset in webkit [206565] by bshafiei@apple.com
  • 9 edits
    2 adds in branches/safari-602.2.14.0-branch

Merge r206135. rdar://problem/28499358

5:37 PM Changeset in webkit [206564] by bshafiei@apple.com
  • 5 edits in branches/safari-602.2.14.0-branch/Source

Versioning.

5:03 PM Changeset in webkit [206563] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

Re-enable StringView life-cycle checking.
https://bugs.webkit.org/show_bug.cgi?id=160384
<rdar://problem/28479434>

Reviewed by Saam Barati.

  • wtf/text/StringView.h:
4:51 PM Changeset in webkit [206562] by Chris Dumez
  • 5 edits in trunk

Log console messages when the anchor download attribute is ignored
https://bugs.webkit.org/show_bug.cgi?id=162703

Reviewed by Alex Christensen.

Log console messages when the anchor download attribute is ignored so
that the developer can better understand what's happening.

Source/WebCore:

No new tests, rebaselined existing tests.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

LayoutTests:

  • fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt:
  • http/tests/security/anchor-download-block-crossorigin-expected.txt:
4:49 PM Changeset in webkit [206561] by Chris Dumez
  • 18 edits
    2 adds in trunk

Add support for DOMTokenList.supports()
https://bugs.webkit.org/show_bug.cgi?id=162659

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C tests now that more checks are passing.

  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-link-element/link-rellist-expected.txt:

Source/WebCore:

Add support for DOMTokenList.supports():

Firefox and Chrome already recently implemented it (Chrome since
version 50 and Firefox since version 49).

Test: fast/dom/DOMTokenList-supports.html

  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::isSupportedSandboxPolicy):
(WebCore::SecurityContext::enforceSandboxFlags): Deleted.

  • dom/SecurityContext.h:
  • html/DOMTokenList.cpp:

(WebCore::DOMTokenList::DOMTokenList):
(WebCore::DOMTokenList::supports):
(WebCore::DOMTokenList::replace): Deleted.

  • html/DOMTokenList.h:

(WebCore::DOMTokenList::DOMTokenList):

  • html/DOMTokenList.idl:
  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parseAttribute):
(WebCore::HTMLAnchorElement::relList):

  • html/HTMLAnchorElement.idl:
  • html/HTMLAreaElement.idl:
  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::sandbox):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::relList):

  • html/HTMLTableCellElement.idl:
  • html/LinkRelAttribute.cpp:

(WebCore::LinkRelAttribute::isSupported):
(WebCore::LinkRelAttribute::LinkRelAttribute): Deleted.

  • html/LinkRelAttribute.h:

LayoutTests:

Add layout test coverage. Our pass rate is identical to Firefox 49,
everything passes except HTMLElement.dropzone. Chrome 53's pass rate
is lower because relList is not a DOMTokenList on anchor / area,
they do not support HTMLElement.dropzone and their
DOMTokenList.supports() is case-sensitive.

  • fast/dom/DOMTokenList-supports-expected.txt: Added.
  • fast/dom/DOMTokenList-supports.html: Added.
4:34 PM Changeset in webkit [206560] by rniwa@webkit.org
  • 16 edits in trunk

DOMTokenList’s value and stringifier should not return parsed tokens
https://bugs.webkit.org/show_bug.cgi?id=161076

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Rebaselined tests that are now passing.

  • web-platform-tests/dom/lists/DOMTokenList-stringifier-expected.txt:
  • web-platform-tests/dom/lists/DOMTokenList-value-expected.txt:
  • web-platform-tests/dom/nodes/Element-classlist-expected.txt:

Source/WebCore:

Updated our implementation of DOMTokenList.prototype.value and its toString function
to match the latest DOM specification: https://dom.spec.whatwg.org/#interface-domtokenlist

"value" attribute, on getting, runs its serialize steps, which simply gets the attribute value.
On setting, it sets the attribute value with the given value.

The stringification behavior returns the same serialize steps as "value" attribute on getting.

This change simplifies our implementation of DOMTokenList and removes the need for m_cachedValue,
which has been removed in this patch.

No new tests since existing tests cover this.

  • html/DOMTokenList.cpp:

(WebCore::DOMTokenList::value): Just call getAttribute.
(WebCore::DOMTokenList::setValue): Just call setAttribute.
(WebCore::DOMTokenList::updateTokensFromAttributeValue):
(WebCore::DOMTokenList::associatedAttributeValueChanged):
(WebCore::DOMTokenList::updateAssociatedAttributeFromTokens): Moved the code to update the tokens
from from the attribute value. This is the "update steps".

  • html/DOMTokenList.h:

LayoutTests:

Added more test cases and rebaselined tests. Most of changes are due to the change that DOMTokenList's value
and stringifier now returns the original attribute value with extra whitespaces.

  • fast/dom/HTMLLinkElement/sizes-setter-expected.txt:
  • fast/dom/HTMLLinkElement/sizes-setter.html:
  • fast/dom/HTMLOutputElement/dom-settable-token-list-expected.txt:
  • fast/dom/HTMLOutputElement/htmloutputelement-expected.txt:
  • fast/dom/HTMLOutputElement/htmloutputelement.html:
  • fast/dom/HTMLOutputElement/script-tests/dom-settable-token-list.js:
  • fast/frames/sandbox-attribute-expected.txt:
  • fast/frames/sandbox-attribute.html:
4:22 PM Changeset in webkit [206559] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking fast/images/animated-gif-restored-from-bfcache.html as flaky on mac-wk2 debug.
https://bugs.webkit.org/show_bug.cgi?id=162510

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:17 PM Changeset in webkit [206558] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark fast/images/pdf-as-image-too-big.html as crashing.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

3:32 PM Changeset in webkit [206557] by bshafiei@apple.com
  • 4 edits in branches/safari-602-branch/Source/WebCore

Merge r206551. rdar://problem/28526639

3:13 PM Changeset in webkit [206556] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

CRASH at WebCore::CDMSessionAVStreamSession::update + 950
https://bugs.webkit.org/show_bug.cgi?id=162701

Reviewed by Beth Dakin.

If the SourceBuffer backing a <video> element is removed before CDMSessionAVStreamSession::update() gets
a chance to run, the protectedSourceBuffer will be null. Just bail early and indicate an error.

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

(WebCore::CDMSessionAVStreamSession::update):

2:55 PM Changeset in webkit [206555] by fpizlo@apple.com
  • 60 edits
    4 adds in trunk/Source

The write barrier should be down with TSO
https://bugs.webkit.org/show_bug.cgi?id=162316

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This makes our write barrier behave correctly when it races with the collector. The
collector wants to do this when visiting:

object->cellState = black
visit(object)


The mutator wants to do this when storing:

object->property = newValue
if (object->cellState == black)

remember(object)


Prior to this change, this didn't work right because the compiler would sometimes place
barriers before the store to the property and because the mutator did not have adequate
fences.

Prior to this change, the DFG and FTL would emit this:

if (object->cellState == black)

remember(object)

object->property = newValue


Which is wrong, because the object could start being scanned just after the cellState
check, at which point the store would be lost. We need to confirm that the state was not
black *after* the store! This change was harder than you'd expect: placing the barrier
after the store broke B3's ability to do its super crazy ninja CSE on some store-load
redundancies. Because the B3 CSE has some moves that the DFG CSE lacks, the DFG CSE's
ability to ignore barriers didn't help. I fixed this by having the FTL convey precise
heap ranges for the patchpoint corresponding to the barrier slow path. It reads the world
(because of the store-load fence) and it writes only cellState (because the B3 heap ranges
don't have any way to represent any of the GC's other state, which means that B3 does not
have to worry about aliasing with any of that).

The collector already uses a store-load fence on x86 just after setting the cellState and
before visiting the object. The mutator needs to do the same. But we cannot put a
store-load fence of any kind before store barriers, because that causes enormous slow
downs. In the worst case, Octane/richards slowed down by 90%! That's crazy! However, the
overall slow downs were small enough (0-15% on benchmark suite aggregates) that it would be
reasonable if the slow down only happened while the GC was running. Then, the concurrent GC
would lift throughput-while-collecting from 0% of peak to 85% of peak. This changes the
barrier so that it looks like this:

if (object->cellState <= heap.sneakyBlackThreshold)

slowPath(object)


Where sneakyBlackThreshold is the normal blackThreshold when we're not collecting, or a
tautoligical threshold (that makes everything look black) when we are collecting. This
turns out to not be any more expensive than the barrier in tip of tree when the GC is not
running, or a 0-15% slow-down when it is "running". (Of course we don't run the GC
concurrently yet. I still have more work to do.) The slowPath() does some extra work to
check if we are concurrently collecting; if so, it does a fence and rechecks if the object
really did need that barrier.

This also reintroduces elimination of redundant store barriers, which was lost in the last
store barrier change. We can only do it when there is no possibility of GC, exit, or
exceptions between the two store barriers. We could remove the exit/exception limitation if
we taught OSR exit how to buffer store barriers, which is an insane thing to do considering
that I've never been able to detect a win from redundant store barrier elimination. I just
want us to have it for stupidly obvious situations, like a tight sequence of stores to the
same object. This same optimization also sometimes strength-reduces the store barrier so
that it uses a constant black threshold rather than the sneaky one, thereby saving one
load.

Even with all of those optimizations, I still had problems with barrier cost. I found that one
of the benchmarks that was being hit particularly hard was JetStream/regexp-2010. Fortunately
that benchmark does most of its barriers in a tight C++ loop in RegExpMatchesArray.h. When we
know what we're doing, we can defer GC around a bunch of object initializations and then remove
all of the barriers between any of the objects allocated within the deferral. Unfortunately,
our GC deferral mechanism isn't really performant enough to make this be a worthwhile
optimization. The most efficient version of such an optimization that I could come up with was
to have a DeferralContext object that houses a boolean that is false by default, but the GC
writes true into it if it would have wanted to GC. You thread a pointer to the deferralContext
through all of your allocations. This kind of mechanism has the overhead of a zero
initialization on the stack on entry and a zero check on exit. This is probably even efficient
enough that we could start thinking about having the DFG use it, for example if we found a
bounded-time section of code with a lot of barriers and entry/exit sites that aren't totally
wacky. This optimization took this patch from 0.68% JetStream regressed to neutral, according
to my latest data.

Finally, an earlier version of this change put the store-load fence in B3 IR, so I ended up
adding FTLOutput support for it and AbstractHeapRepository magic for decorating the heaps.
I think we might as well keep that, it'll be useful.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::branch32):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::branch32):
(JSC::MacroAssemblerX86_64::branch64): Deleted.

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::generateImpl):

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGClobbersExitState.cpp:

(JSC::DFG::clobbersExitState):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGMayExit.cpp:
  • dfg/DFGNode.h:

(JSC::DFG::Node::isStoreBarrier):

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

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

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileStoreBarrier):
(JSC::DFG::SpeculativeJIT::storeToWriteBarrierBuffer): Deleted.
(JSC::DFG::SpeculativeJIT::writeBarrier): Deleted.

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

(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileBaseValueStoreBarrier): Deleted.
(JSC::DFG::SpeculativeJIT::writeBarrier): Deleted.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileBaseValueStoreBarrier): Deleted.
(JSC::DFG::SpeculativeJIT::writeBarrier): Deleted.

  • dfg/DFGStoreBarrierClusteringPhase.cpp: Added.

(JSC::DFG::performStoreBarrierClustering):

  • dfg/DFGStoreBarrierClusteringPhase.h: Added.
  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • dfg/DFGStoreBarrierInsertionPhase.h:
  • ftl/FTLAbstractHeap.h:

(JSC::FTL::AbsoluteAbstractHeap::at):
(JSC::FTL::AbsoluteAbstractHeap::operator[]):

  • ftl/FTLAbstractHeapRepository.cpp:

(JSC::FTL::AbstractHeapRepository::decorateFenceRead):
(JSC::FTL::AbstractHeapRepository::decorateFenceWrite):
(JSC::FTL::AbstractHeapRepository::computeRangesAndDecorateInstructions):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileStoreBarrier):
(JSC::FTL::DFG::LowerDFGToB3::storageForTransition):
(JSC::FTL::DFG::LowerDFGToB3::lazySlowPath):
(JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::fence):
(JSC::FTL::Output::absolute):

  • ftl/FTLOutput.h:
  • heap/CellState.h:

(JSC::isWithinThreshold):
(JSC::isBlack):

  • heap/Heap.cpp:

(JSC::Heap::writeBarrierSlowPath):

  • heap/Heap.h:

(JSC::Heap::barrierShouldBeFenced):
(JSC::Heap::addressOfBarrierShouldBeFenced):
(JSC::Heap::sneakyBlackThreshold):
(JSC::Heap::addressOfSneakyBlackThreshold):

  • heap/HeapInlines.h:

(JSC::Heap::writeBarrier):
(JSC::Heap::writeBarrierWithoutFence):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::jumpIfIsRememberedOrInEdenWithoutFence):
(JSC::AssemblyHelpers::sneakyJumpIfIsRememberedOrInEden):
(JSC::AssemblyHelpers::jumpIfIsRememberedOrInEden):
(JSC::AssemblyHelpers::storeBarrierStoreLoadFence):
(JSC::AssemblyHelpers::jumpIfStoreBarrierStoreLoadFenceNotNeeded):

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

(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitWriteBarrier):
(JSC::JIT::privateCompilePutByVal):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_by_id):

  • llint/LowLevelInterpreter.asm:
  • offlineasm/x86.rb:
  • runtime/Options.h:

Source/WTF:

Added clearRange(), which quickly clears a range of bits. This turned out to be useful for
a DFG optimization pass.

  • wtf/FastBitVector.cpp:

(WTF::FastBitVector::clearRange):

  • wtf/FastBitVector.h:
2:53 PM Changeset in webkit [206554] by achristensen@apple.com
  • 4 edits in trunk

URLParser should properly handle unexpected periods and overflows in IPv4 addresses
https://bugs.webkit.org/show_bug.cgi?id=162655

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseIPv4Number):
(WebCore::URLParser::parseIPv4Host):

  • platform/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

2:42 PM Changeset in webkit [206553] by Ryan Haddad
  • 2 edits in trunk/Tools

Disable flaky API test WebKit2.AutoLayoutIntegration.
https://bugs.webkit.org/show_bug.cgi?id=160284

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm:

(TEST):

2:30 PM Changeset in webkit [206552] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

Fix race condition in StringView's UnderlyingString lifecycle management.
https://bugs.webkit.org/show_bug.cgi?id=162702

Reviewed by Geoffrey Garen.

There 2 relevant functions at play:

void StringView::setUnderlyingString(const StringImpl* string)
{

UnderlyingString* underlyingString;
if (!string)

underlyingString = nullptr;

else {

std::lock_guard<StaticLock> lock(underlyingStringsMutex);
auto result = underlyingStrings().add(string, nullptr);
if (result.isNewEntry)

result.iterator->value = new UnderlyingString(*string);

else

++result.iterator->value->refCount;

underlyingString = result.iterator->value; Point P2.

}
adoptUnderlyingString(underlyingString); Point P5.

}

... and ...

void StringView::adoptUnderlyingString(UnderlyingString* underlyingString)
{

if (m_underlyingString) {

Point P0.
if (!--m_underlyingString->refCount) {

if (m_underlyingString->isValid) { Point P1.

std::lock_guard<StaticLock> lock(underlyingStringsMutex);
underlyingStrings().remove(&m_underlyingString->string); Point P3.

}
delete m_underlyingString; Point P4.

}

}
m_underlyingString = underlyingString;

}

Imagine the following scenario:

  1. Thread T1 has been using an UnderlyingString U1, and is now done with it. T1 runs up to point P1 in adoptUnderlyingString(), and is blocked waiting for the underlyingStringsMutex (which is currently being held by Thread T2).
  2. Context switch to Thread T2. T2 wants to use UnderlyingString U1, and runs up to point P2 in setUnderlyingString() and releases the underlyingStringsMutex. Note: T2 thinks it has successfully refCounted U1, and therefore U1 is safe to use.
  3. Context switch to Thread T1. T1 acquires the underlyingStringsMutex, and proceeds to remove it from the underlyingStrings() map (see Point P3). It thinks it has successfully done so and proceeds to delete U1 (see Point P4).
  4. Context switch to Thread T2. T2 proceeds to use U1 (see Point P5 in setUnderlyingString()). Note: U1 has already been freed. This is a use after free.

The fix is to acquire the underlyingStringsMutex at Point P0 in adoptUnderlyingString()
instead of after P1. This ensures that the decrementing of the UnderlyingString
refCount and its removal from the underlyingStrings() map is done as an atomic unit.

Note: If you look in StringView.cpp, you see another setUnderlyingString() which
takes a StringView otherString. This version of setUnderlyingString() can only
be called from within the same thread that created the other StringView. As a
result, here, we are guaranteed that the UnderlyingString refCount is never zero,
and there's no other threat of another thread trying to delete the UnderlyingString
while we adopt it. Hence, we don't need to acquire the underlyingStringsMutex
here.

This race condition was found when running layout tests fetch/fetch-worker-crash.html
and storage/indexeddb/modern/opendatabase-versions.html when CHECK_STRINGVIEW_LIFETIME
is enabled. This issue resulted in those tests crashing due to a use-after-free.

  • wtf/text/StringView.cpp:

(WTF::StringView::adoptUnderlyingString):
(WTF::StringView::setUnderlyingString):

2:27 PM Changeset in webkit [206551] by Wenson Hsieh
  • 4 edits in trunk/Source/WebCore

Some media tests are crashing due to soft-linking failures
https://bugs.webkit.org/show_bug.cgi?id=162698

Reviewed by Jer Noble.

We should be handling soft-linking failures for MRMediaRemoteSetNowPlayingVisibility gracefully. Guards these
calls with canLoad_MediaRemote_MRMediaRemoteSetParentApplication and also use the
SOFT_LINK_FUNCTION_MAY_FAIL_FOR_HEADER macro when soft linking.

  • platform/audio/mac/MediaSessionManagerMac.mm:

(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

  • platform/mac/MediaRemoteSoftLink.cpp:
  • platform/mac/MediaRemoteSoftLink.h:
2:23 PM Changeset in webkit [206550] by Joseph Pecoraro
  • 2 edits in trunk/Source/JavaScriptCore

Improve useCodeCache Option description string.

  • runtime/Options.h:

Address late review comments and clarify description.

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

URLParser should ignore tabs in authority
https://bugs.webkit.org/show_bug.cgi?id=162694

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseAuthority):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

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

URLParser should ignore extra slashes after scheme:// and handle a missing slash after the port
https://bugs.webkit.org/show_bug.cgi?id=162690

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

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

URLParser should correctly canonicalize uppercase IPv6 addresses
https://bugs.webkit.org/show_bug.cgi?id=162680

Reviewed by Tim Horton.

Source/WebCore:

Covered by a new API test.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseIPv6Host):
If there is an uppercase character in the IPv6 address part, then it is a syntax violation
because the canonicalized IPv6 address differs from the input String.

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

2:08 PM Changeset in webkit [206546] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix iOS build.

  • bindings/js/ios/TouchConstructors.cpp:
1:48 PM Changeset in webkit [206545] by bshafiei@apple.com
  • 24 edits
    2 adds in branches/safari-602-branch

Merge r206527. rdar://problem/28499358

1:48 PM Changeset in webkit [206544] by bshafiei@apple.com
  • 4 edits in branches/safari-602-branch/Tools

Merge r206335. rdar://problem/28499358

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

Merge r206135. rdar://problem/28499358

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

Update TestExpectations for more crashing fast/images tests.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

1:36 PM Changeset in webkit [206541] by Chris Dumez
  • 3 edits
    2 adds in trunk

It should be possible to dispatch events on template documents
https://bugs.webkit.org/show_bug.cgi?id=162687

Reviewed by Ryosuke Niwa.

Source/WebCore:

It should be possible to dispatch events on template documents. Firefox
supports this. Chrome does not but this is likely not intentional as
Chrome generally supports dispatching events on frameless documents.

Test: fast/dom/template-document-dispatchEvent.html

  • dom/Document.cpp:

(WebCore::Document::ensureTemplateDocument):

LayoutTests:

Add layout test coverage.

  • fast/dom/template-document-dispatchEvent-expected.txt: Added.
  • fast/dom/template-document-dispatchEvent.html: Added.
1:35 PM Changeset in webkit [206540] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

WKSharedAPICast should not warn about acceptable custom context menu tag values
https://bugs.webkit.org/show_bug.cgi?id=162597
<rdar://problem/28487627>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-28
Reviewed by Tim Horton.

  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):
(WebKit::toImpl):
Don't log an error when casting ContextMenu types if it is within
the Custom ContextMenu tag range.

1:30 PM Changeset in webkit [206539] by fpizlo@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

Optimize B3->Air lowering of Fence on ARM
https://bugs.webkit.org/show_bug.cgi?id=162342

Reviewed by Geoffrey Garen.

This gives us comprehensive support for standalone fences on x86 and ARM. The changes are as
follows:

  • Sets in stone the rule that the heaps of a B3::Fence tell you what the fence protects. If the fence reads, it protects motion of stores. If the fence writes, it protects motion of loads. This allows us to express for example load-load fences in a portable way: on x86 they will just block B3 optimizations and emit no code, while on ARM you will get some fence.
  • Adds comprehensive support for WTF-style fences in the ARM assembler. I simplified it just a bit to match what B3, the main client, knows. There are three fences: MemoryFence, StoreFence, and LoadFence. On x86, MemoryFence is ortop while StoreFence and LoadFence emit no code. On ARM64, MemoryFence and LoadFence are dmb ish while StoreFence is dmb ishst.
  • Tests! To test this, I needed to teach the disassembler how to disassemble dmb ish and dmb ishst. I think that the canonical way to do it would be to create a group for dmb and then teach that group how to decode the operands. But I don't actually know what are all of the ways of encoding dmb, so I'd rather that unrecognized encodings fall through to the ".long blah" bailout. So, this creates explicit matching rules for "dmb ish" and "dmb ishst", which is the most conservative thing we can do.
  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::dmbISH):
(JSC::ARM64Assembler::dmbISHST):
(JSC::ARM64Assembler::dmbSY): Deleted.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::memoryFence):
(JSC::MacroAssemblerARM64::storeFence):
(JSC::MacroAssemblerARM64::loadFence):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::storeFence):
(JSC::MacroAssemblerX86Common::loadFence):

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

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

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

(JSC::B3::testMemoryFence):
(JSC::B3::testStoreFence):
(JSC::B3::testLoadFence):
(JSC::B3::run):
(JSC::B3::testX86MFence): Deleted.
(JSC::B3::testX86CompilerFence): Deleted.

  • disassembler/ARM64/A64DOpcode.cpp:

(JSC::ARM64Disassembler::A64DOpcodeDmbIsh::format):
(JSC::ARM64Disassembler::A64DOpcodeDmbIshSt::format):

  • disassembler/ARM64/A64DOpcode.h:

(JSC::ARM64Disassembler::A64DOpcodeDmbIsh::opName):
(JSC::ARM64Disassembler::A64DOpcodeDmbIshSt::opName):

1:19 PM Changeset in webkit [206538] by dino@apple.com
  • 44 edits in trunk/Source/WebCore

Use Color references where possible
https://bugs.webkit.org/show_bug.cgi?id=162643
<rdar://problem/28506550>

Reviewed by Simon Fraser.

There were a bunch of places where we pass or use
Colors by value. As the Color class gets a bit more
complicated, it would be nice to avoid copying, so
use references where possible.

  • css/CSSGradientValue.cpp:

(WebCore::interpolate):

  • css/StyleColor.h:

(WebCore::StyleColor::getColor):
(WebCore::StyleColor::resolve):

  • css/StyleResolver.h:

(WebCore::StyleResolver::State::backgroundColor):

  • dom/Document.h:

(WebCore::Document::textColor):

  • editing/FrameSelection.cpp:

(WebCore::disappearsIntoBackground):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setShadow):

  • html/canvas/CanvasRenderingContext2D.h:
  • html/track/TextTrackCueGeneric.h:
  • page/PageOverlay.cpp:

(WebCore::PageOverlay::setBackgroundColor):

  • page/PageOverlay.h:
  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::PropertyWrapperColor::PropertyWrapperColor):
(WebCore::PropertyWrapperMaybeInvalidColor::PropertyWrapperMaybeInvalidColor):
(WebCore::PropertyWrapperVisitedAffectedColor::PropertyWrapperVisitedAffectedColor):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::fillRectWithRoundedHole):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::strokeColor):
(WebCore::GraphicsContext::fillColor):

  • platform/graphics/InbandTextTrackPrivateClient.h:

(WebCore::GenericCueData::foregroundColor):
(WebCore::GenericCueData::setForegroundColor):
(WebCore::GenericCueData::backgroundColor):
(WebCore::GenericCueData::setBackgroundColor):
(WebCore::GenericCueData::highlightColor):
(WebCore::GenericCueData::setHighlightColor):

  • platform/graphics/ca/TileController.h:
  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawRect):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::platformFillRoundedRect):
(WebCore::GraphicsContext::fillRectWithRoundedHole):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawFocusRingPath::color):
(WebCore::DisplayList::DrawFocusRingRects::color):
(WebCore::DisplayList::FillRectWithColor::color):
(WebCore::DisplayList::FillCompositedRect::color):
(WebCore::DisplayList::FillRoundedRect::color):
(WebCore::DisplayList::FillRectWithRoundedHole::color):

  • platform/graphics/filters/FEDiffuseLighting.cpp:

(WebCore::FEDiffuseLighting::lightingColor):

  • platform/graphics/filters/FEDiffuseLighting.h:
  • platform/graphics/filters/FEDropShadow.h:

(WebCore::FEDropShadow::shadowColor):

  • platform/graphics/filters/FEFlood.cpp:

(WebCore::FEFlood::floodColor):
(WebCore::FEFlood::platformApplySoftware):

  • platform/graphics/filters/FEFlood.h:
  • platform/graphics/filters/FESpecularLighting.cpp:

(WebCore::FESpecularLighting::lightingColor):

  • platform/graphics/filters/FESpecularLighting.h:
  • platform/graphics/filters/FilterOperation.h:
  • rendering/BorderEdge.h:

(WebCore::BorderEdge::color):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::paintBoxDecorations):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paintSelection):

  • rendering/InlineTextBox.h:
  • rendering/RenderFrameSet.cpp:

(WebCore::borderStartEdgeColor):
(WebCore::borderEndEdgeColor):
(WebCore::borderFillColor):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::paintOutlineForLine):

  • rendering/RenderInline.h:
  • rendering/RenderLayerCompositor.h:
  • rendering/RenderView.cpp:

(WebCore::RenderView::paintBoxDecorations):

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::paintTextDecoration):

  • rendering/TextPainter.cpp:

(WebCore::TextPainter::paintTextWithShadows):

  • rendering/style/BorderValue.h:

(WebCore::BorderValue::color):

  • rendering/style/CollapsedBorderValue.h:

(WebCore::CollapsedBorderValue::color):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::color):
(WebCore::RenderStyle::visitedLinkColor):
(WebCore::RenderStyle::setColor):
(WebCore::RenderStyle::setVisitedLinkColor):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::borderLeftColor):
(WebCore::RenderStyle::borderRightColor):
(WebCore::RenderStyle::borderTopColor):
(WebCore::RenderStyle::borderBottomColor):
(WebCore::RenderStyle::backgroundColor):
(WebCore::RenderStyle::columnRuleColor):
(WebCore::RenderStyle::outlineColor):
(WebCore::RenderStyle::textEmphasisColor):
(WebCore::RenderStyle::textFillColor):
(WebCore::RenderStyle::textStrokeColor):
(WebCore::RenderStyle::visitedLinkBackgroundColor):
(WebCore::RenderStyle::visitedLinkBorderLeftColor):
(WebCore::RenderStyle::visitedLinkBorderRightColor):
(WebCore::RenderStyle::visitedLinkBorderBottomColor):
(WebCore::RenderStyle::visitedLinkBorderTopColor):
(WebCore::RenderStyle::visitedLinkOutlineColor):
(WebCore::RenderStyle::visitedLinkColumnRuleColor):
(WebCore::RenderStyle::textDecorationColor):
(WebCore::RenderStyle::visitedLinkTextDecorationColor):
(WebCore::RenderStyle::visitedLinkTextEmphasisColor):
(WebCore::RenderStyle::visitedLinkTextFillColor):
(WebCore::RenderStyle::visitedLinkTextStrokeColor):
(WebCore::RenderStyle::stopColor):
(WebCore::RenderStyle::floodColor):
(WebCore::RenderStyle::lightingColor):

  • svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::build):

  • svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::build):

  • svg/SVGFEFloodElement.cpp:

(WebCore::SVGFEFloodElement::build):

  • svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::build):

  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::buildStops):

12:56 PM Changeset in webkit [206537] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Update TestExpectations for crashing fast/images tests.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

12:56 PM Changeset in webkit [206536] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Marking http/tests/cache/disk-cache/disk-cache-redirect.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=162524

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
12:48 PM Changeset in webkit [206535] by Konstantin Tokarev
  • 2 edits in trunk/Source/ThirdParty

Unreviewed, woff2 upgrade introduces compiler warnings
https://bugs.webkit.org/show_bug.cgi?id=162678

  • woff2/CMakeLists.txt:
12:37 PM Changeset in webkit [206534] by rniwa@webkit.org
  • 5 edits in trunk

assignedNodes should include fallback contents when flattened option is set
https://bugs.webkit.org/show_bug.cgi?id=162656

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaselined the tests now that all the test cases are passing.

  • web-platform-tests/shadow-dom/slots-expected.txt:
  • web-platform-tests/shadow-dom/slots-fallback-expected.txt:

Source/WebCore:

Fixed the bug by traversing through fallback contents when there are no assigned nodes.

Tests: imported/w3c/web-platform-tests/shadow-dom/slots.html

imported/w3c/web-platform-tests/shadow-dom/slots-fallback.html

  • html/HTMLSlotElement.cpp:

(WebCore::flattenAssignedNodes):
(WebCore::HTMLSlotElement::assignedNodes):

12:34 PM Changeset in webkit [206533] by commit-queue@webkit.org
  • 19 edits
    1 delete in trunk/Source/JavaScriptCore

Adopt #pragma once in some generated resources
https://bugs.webkit.org/show_bug.cgi?id=162666

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-28
Reviewed by Alex Christensen.

  • Scripts/builtins/builtins_generate_combined_header.py:
  • Scripts/builtins/builtins_generate_internals_wrapper_header.py:
  • Scripts/builtins/builtins_generate_internals_wrapper_implementation.py:
  • Scripts/builtins/builtins_generate_separate_header.py:
  • Scripts/builtins/builtins_generate_wrapper_header.py:
  • Scripts/builtins/builtins_generate_wrapper_implementation.py:

Remove headerGuard attribute unused by templates.

  • Scripts/tests/builtins/expected/JavaScriptCore-Operations.Promise-Combined.js-result: Removed.

No such test exists. It was likely renamed.

  • generate-bytecode-files:

Simplify header guard output.

  • inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py:

(ObjCBackendDispatcherHeaderGenerator.generate_output):

  • replay/scripts/CodeGeneratorReplayInputs.py:

(Generator.generate_header):

  • replay/scripts/CodeGeneratorReplayInputsTemplates.py:

Simplify header guard output.

  • replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.h:

Rebaseline.

12:32 PM Changeset in webkit [206532] by Michael Catanzaro
  • 2 edits in trunk/Source/ThirdParty

woff2 upgrade introduces compiler warnings
https://bugs.webkit.org/show_bug.cgi?id=162678

Reviewed by Alex Christensen.

  • woff2/CMakeLists.txt:
12:21 PM Changeset in webkit [206531] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/Safari Technology Preview 14

Added a tag for Safari Technology Preview release 14.

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

Store-load fences should be a lot cheaper on ARM
https://bugs.webkit.org/show_bug.cgi?id=162461

Rubber stamped by Keith Miller.

It turns out that they are already cheap enough, so this change just make us use them.

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::visitChildren):

11:26 AM Changeset in webkit [206529] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206520. rdar://problem/28412512

11:26 AM Changeset in webkit [206528] by bshafiei@apple.com
  • 11 edits
    2 adds in branches/safari-602-branch

Merge r206518. rdar://problem/28505032

11:17 AM Changeset in webkit [206527] by Wenson Hsieh
  • 24 edits
    2 adds in trunk

Adopt MediaRemote SPI to achieve desired Now Playing behavior
https://bugs.webkit.org/show_bug.cgi?id=162658
<rdar://problem/28499358>

Reviewed by Jer Noble.

Source/WebCore:

Restores the changes previously rolled out in r206444, and adopts new MediaRemote SPI to achieve the desired
behavior for media in background tabs without breaking other features.

Introduces 2 new unit tests in NowPlayingControlsTests.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::pageAllowsNowPlayingControls):

  • page/Page.cpp:

(WebCore::Page::setViewState):

  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::hasActiveNowPlayingSession):

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

(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

  • platform/mac/MediaRemoteSoftLink.cpp:
  • platform/mac/MediaRemoteSoftLink.h:
  • platform/spi/mac/MediaRemoteSPI.h:

Source/WebKit2:

Plumbs Now Playing session information (for now, this is just a flag indicating whether or not there is an
active session) across from the web process to the UI process for testing in the form of asynchronous request/
handle-response messages on the WebPage and its proxy in the UI process.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _requestActiveNowPlayingSessionInfo]):
(-[WKWebView _handleActiveNowPlayingSessionInfoResponse:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo):
(WebKit::WebPageProxy::handleActiveNowPlayingSessionInfoResponse):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::handleActiveNowPlayingSessionInfoResponse):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::requestActiveNowPlayingSessionInfo):

Tools:

Introduces 2 unit tests in the new NowPlayingControlsTests test suite. Also provides some basic support for
mocking key window status for TestWKWebViews.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/NowPlayingControlsTests.mm: Added.

(-[NowPlayingTestWebView hasActiveNowPlayingSession]):
(-[NowPlayingTestWebView expectHasActiveNowPlayingSession:]):
(-[NowPlayingTestWebView _handleActiveNowPlayingSessionInfoResponse:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/large-video-test-now-playing.html: Added.
  • TestWebKitAPI/mac/TestWKWebViewMac.mm:

(-[TestWKWebViewHostWindow isKeyWindow]):
(-[TestWKWebViewHostWindow makeKeyWindow]):
(-[TestWKWebViewHostWindow resignKeyWindow]):

10:33 AM Changeset in webkit [206526] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION(r206481): ASSERTION FAILED: isDecoderAvailable()
https://bugs.webkit.org/show_bug.cgi?id=162665

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-09-28
Reviewed by Simon Fraser.

Remove a wrong assertion from ImageSource::destroyDecodedData(). Before
r206481, the original function BitmapImage::destroyDecodedData() did not
have this assertion. Destroying the decoded ImageFrames can happen after
releasing the ImageDecoder. And it can happen also if decoding the image
fails and BitmapImage::isNull() is true. See CachedImage::finishLoading().

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::destroyDecodedData):

10:08 AM Changeset in webkit [206525] by Ryan Haddad
  • 1002 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r206522.

Roll r206506 back in since the build fix landed in r206521

Reverted changeset:

"Unreviewed, rolling out r206506."
https://bugs.webkit.org/show_bug.cgi?id=162682
http://trac.webkit.org/changeset/206522

9:37 AM Changeset in webkit [206524] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

WebCore::ResourceErrorBase::setType is crashing
https://bugs.webkit.org/show_bug.cgi?id=162484
<rdar://problem/28390828>

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-28
Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/xmlhttprequest/on-network-timeout-error-during-preflight.html

Behavior is slightly changed as we are no longer casting Timeout preflight errors as AccessControl errors.
This is more inline with fetch spec which prescribes to send back any error received by preflight as response error for fetch.

Ideally, we should not need to change errors received during preflight loads but the error type is important for some clients:

  • EventSource may try to reconnect if error is not AccessControl
  • XMLHttpRequest will send abort events in case of Cancellation errors and timeout events in case of Timeout errors
  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::notifyFinished): Setting error type to AccessControl except in case of Timeout.
(WebCore::CrossOriginPreflightChecker::doPreflight): Ditto.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::preflightFailure): Removing ASSERT since Timeout errors may be returned.

  • platform/network/ResourceErrorBase.h:

(WebCore::ResourceErrorBase::isGeneral): New getter.

LayoutTests:

  • http/tests/xmlhttprequest/on-network-timeout-error-during-preflight-expected.txt: Added.
  • http/tests/xmlhttprequest/on-network-timeout-error-during-preflight.html: Added.
  • tests-options.json: Marking test as slow.
9:34 AM Changeset in webkit [206523] by Brent Fulgham
  • 2 edits in trunk/Source/WTF

Correct 'safeCast' implementation
https://bugs.webkit.org/show_bug.cgi?id=162679
<rdar://problem/28518189>

Reviewed by Zalan Bujtas.

  • wtf/StdLibExtras.h:

(WTF::safeCast): Use a RELEASE_ASSERT.

9:33 AM Changeset in webkit [206522] by commit-queue@webkit.org
  • 1002 edits in trunk/Source/JavaScriptCore

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

Broke the Windows and WinCairo builds. (Requested by
ryanhaddad on #webkit).

Reverted changeset:

"Adopt #pragma once in JavaScriptCore"
https://bugs.webkit.org/show_bug.cgi?id=162664
http://trac.webkit.org/changeset/206506

9:30 AM Changeset in webkit [206521] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] Compile fix.
https://bugs.webkit.org/show_bug.cgi?id=162670

Reviewed by Brent Fulgham.

Make sure we include JavaScriptCore files from the forwarding headers folder.
Otherwise we might get multiple definitions if a JSC file is included both
from the forwarding headers folder and the JSC source folder, since
#pragma once is used in the header files.

  • DumpRenderTree/TestRunner.cpp:
9:26 AM Changeset in webkit [206520] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

PiP shows incorrect state of play button.
https://bugs.webkit.org/show_bug.cgi?id=162652

Reviewed by Eric Carlson.

After getting a new WebPlaybackSessionModel, the first thing WebVideoFullscreenInterfaceMac
should do is query for it's playbackRate() and isPlaying() properties.

  • platform/mac/WebVideoFullscreenInterfaceMac.mm:

(WebCore::WebVideoFullscreenInterfaceMac::WebVideoFullscreenInterfaceMac):

8:34 AM Changeset in webkit [206519] by Michael Catanzaro
  • 4 edits in trunk

[GTK] Add Chrome UA quirk
https://bugs.webkit.org/show_bug.cgi?id=162617

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Add Chrome UA quirk and use it on typekit.net, typekit.com, youtube.com, slack.com, and
any domain that begins with "google".

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::buildUserAgentString):
(WebCore::urlRequiresChromeBrowser):
(WebCore::standardUserAgentForURL):

Tools:

Update test. This portion of the commit was actually unreviewed.

  • TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

7:52 AM Changeset in webkit [206518] by jer.noble@apple.com
  • 11 edits
    2 adds in trunk

[MSE][Mac] In SourceBufferPrivateAVFObjC::abort(), support reseting parser to the last appended initialization segment.
https://bugs.webkit.org/show_bug.cgi?id=135164

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-abort-resets-parser.html

Use the -[AVStreamDataParser appendStreamData:withFlags:] to implement "resetting" the parser. In this case,
the parser isn't explicitly reset during resetParserState(), but rather a flag is set so that the next append
signals a data discontinuity, and the parser is reset at that point.

Because a previous append operation may be in-flight during this abort(), care must be taken to invalidate any
operations which may have already started on a background thread. So SourceBufferPrivateAVFObjC will use a
separate WeakPtrFactory for its append operations, will invalidate any outstanding WeakPtrs during an abort(),
and will block until the previous append() operation completes.

This will require the WebAVStreamDataParserListener object to occasionally have it's WeakPtr pointing back to the
SourceBufferPrivateAVFObjC to be reset after an abort(), so make that ivar an @property. Rather than passing a
RetainPtr to itself in all the callbacks it handles, the WebAVStreamDataParserListener can just pass in a copy
of its own WeakPtr (which may be invalidated during an abort()).

Break the distinct operations of "abort()" and "resetParserState()" into their own methods in SourceBufferPrivate
and all its subclasses.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::resetParserState):
(WebCore::SourceBuffer::abortIfUpdating):

  • platform/graphics/SourceBufferPrivate.h:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:]):
(-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:withDiscontinuity:]):
(-[WebAVStreamDataParserListener streamDataParser:didFailToParseStreamDataWithError:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideMediaData:forTrackID:mediaType:flags:]):
(-[WebAVStreamDataParserListener streamDataParser:didReachEndOfTrackWithTrackID:mediaType:]):
(-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::append):
(WebCore::SourceBufferPrivateAVFObjC::abort):
(WebCore::SourceBufferPrivateAVFObjC::resetParserState):
(-[WebAVStreamDataParserListener initWithParser:parent:]): Deleted.

  • platform/graphics/gstreamer/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::resetParserState):

  • platform/graphics/gstreamer/SourceBufferPrivateGStreamer.h:
  • platform/mock/mediasource/MockSourceBufferPrivate.cpp:

(WebCore::MockSourceBufferPrivate::resetParserState):

  • platform/mock/mediasource/MockSourceBufferPrivate.h:
  • platform/spi/mac/AVFoundationSPI.h:

LayoutTests:

  • media/media-source/media-source-abort-resets-parser-expected.txt: Added.
  • media/media-source/media-source-abort-resets-parser.html: Added.
7:49 AM Changeset in webkit [206517] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[GTK] User agent should always claim to be Intel
https://bugs.webkit.org/show_bug.cgi?id=162610

Reviewed by Carlos Garcia Campos.

We should always claim to be running on Intel regardless of actual CPU type. See discussion
in bug #162548 for details. In particular, we can never advertise ARM because it causes dumb
websites to send mobile pages.

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::platformVersionForUAString):
(WebCore::buildUserAgentString):
(WebCore::cpuDescriptionForUAString): Deleted.

7:45 AM Changeset in webkit [206516] by Michael Catanzaro
  • 1 edit in trunk/Tools/ChangeLog

[GTK] Adjust OS X UA quirks list
https://bugs.webkit.org/show_bug.cgi?id=162616

"Reviewed" by Carlos Garcia Campos.

Update test. This portion of the commit was actually unreviewed.

  • TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

7:40 AM Changeset in webkit [206515] by Michael Catanzaro
  • 3 edits in trunk

[GTK] Adjust OS X UA quirks list
https://bugs.webkit.org/show_bug.cgi?id=162616

Reviewed by Carlos Garcia Campos.

Remove the OS X quirk for yahoo.com as it's no longer needed. Add quirks for taobao.com and
whatsapp.com.

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::urlRequiresMacintoshPlatform):
(WebCore::standardUserAgentForURL):

6:18 AM Changeset in webkit [206514] by commit-queue@webkit.org
  • 14 edits in trunk

Add WebIDL special operation support: serializer
https://bugs.webkit.org/show_bug.cgi?id=156293

Patch by Alejandro G. Castro <alex@igalia.com> on 2016-09-28
Reviewed by Youenn Fablet.

Source/WebCore:

Added support for the serializer special operation for WebIDLs,
current implementation adds support for:

  • just the keyword: serializer; It will return all the attributes of in an object.
  • map of entries with the attributes: serializer = {attribute1, attribute2, ...}

It creates a toJSON method that returns the serialized value
converted into an ECMAScript value. For more information check the
definition of the operation:

http://heycam.github.io/webidl/#idl-serializers

We have created a new function in the API of the objects
that are marked as serializer.

Used the support to add new API for RTCIceCandidate and
RTCSessionDescription.

Updated the tests expectations of the bindings.

Tests: bindings/scripts/test/TestNode.idl

bindings/scripts/test/TestObj.idl
fast/mediastream/RTCIceCandidate.html
fast/mediastream/RTCSessionDescription.html

  • Modules/mediastream/RTCIceCandidate.idl: Added the serializer

operation.

  • Modules/mediastream/RTCSessionDescription.idl: Added the

serializer operation.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation): Added the calls to the serializer
code generator.
(GenerateSerializerFunction): Added, generates the toJSON function
adding all the serializable->attributes value to an object as
defined in the spec.

  • bindings/scripts/IDLParser.pm: Modified the serializer parser

that was unused to support the WebIDL spec parts. Added a new
domSerializable type to store the list of attributes in the
possible map.
(parseSerializer): Modified the function to follow the
semicolon rule in the spec, now the serializer line must have a
semicolon like any other line.
(parseSerializerRest): The function now has to get the attributes
list from the pattern parsing function and add them to the
domSerializable item.
(parseSerializationPattern): Now this function returns the list of
attributes in the serializable map or list if we have one.
(parseSerializationAttributes): Added, this function replaces the
Map and List functions, the currently supported parts are similar
for both situations.
(applyMemberList): Added the serializable item to the interface
variable and populate the serializable in case there is not a
defined map.
(parseSerializationPatternMap): Replaced with
parseSerializationAttributes.
(parseSerializationPatternList): Ditto.

  • bindings/scripts/test/JS/JSTestNode.cpp: Modified the expected result.

(WebCore::jsTestNodePrototypeFunctionToJSON):

  • bindings/scripts/test/JS/JSTestObj.cpp: Modified the expected result.

(WebCore::jsTestObjPrototypeFunctionToJSON):

  • bindings/scripts/test/TestNode.idl: Added the serializer test.
  • bindings/scripts/test/TestObj.idl: Added serializer map test.

LayoutTests:

Verify the new API of the objects and check what happens when user
modifies the values and types of the attributes, or adds a null value.

  • fast/mediastream/RTCIceCandidate-expected.txt:
  • fast/mediastream/RTCIceCandidate.html:
  • fast/mediastream/RTCSessionDescription-expected.txt:
  • fast/mediastream/RTCSessionDescription.html:
5:54 AM Changeset in webkit [206513] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[GTK] Simplify platformForUAString
https://bugs.webkit.org/show_bug.cgi?id=162614

Reviewed by Carlos Garcia Campos.

Note in particular that the previous PLATFORM(MAC) check was wrong here, as that is never
true for GTK; this patch risks changing it to OS(MAC_OS_X), on the hope that advertising Mac
when running on Mac might not break anything. If it does, then we should remove it and just
always pretend to be on X11.

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::platformForUAString):

5:54 AM Changeset in webkit [206512] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[GTK] Bump fake Safari version in UA
https://bugs.webkit.org/show_bug.cgi?id=162615

Reviewed by Carlos Garcia Campos.

Pretend to be Safari 10.0 to fix sites that don't work when we pretend to be Safari 8.0.

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::buildUserAgentString):

5:46 AM Changeset in webkit [206511] by fred.wang@free.fr
  • 21 edits
    6 adds in trunk

Source/ThirdParty:
Update woff2 to latest revision
https://bugs.webkit.org/show_bug.cgi?id=162608

Patch by Khaled Hosny <khaledhosny@eglug.org> on 2016-09-28
Reviewed by Michael Catanzaro.

  • woff2/CMakeLists.txt:
  • woff2/README.webkit:
  • woff2/src/file.h:

(woff2::GetFileContent):
(woff2::SetFileContents):

  • woff2/src/font.cc:
  • woff2/src/font.h:
  • woff2/src/glyph.cc:
  • woff2/src/store_bytes.h:

(woff2::Store16):

  • woff2/src/transform.cc:
  • woff2/src/woff2_common.cc:
  • woff2/src/woff2_compress.cc:
  • woff2/src/woff2_dec.cc:
  • woff2/src/woff2_dec.h:
  • woff2/src/woff2_decompress.cc:
  • woff2/src/woff2_enc.cc:
  • woff2/src/woff2_out.cc: Added.
  • woff2/src/woff2_out.h: Added.

(woff2::WOFF2Out::~WOFF2Out):
(woff2::WOFF2StringOut::MaxSize):

Source/WebCore:
Use new woff2 API
https://bugs.webkit.org/show_bug.cgi?id=162608

Patch by Khaled Hosny <khaledhosny@eglug.org> on 2016-09-28
Reviewed by Michael Catanzaro.

Test: fast/text/woff2-totalsfntsize.html

  • platform/graphics/WOFFFileFormat.cpp:

(WebCore::WOFF2VectorOut::WOFF2VectorOut):
(WebCore::WOFF2VectorOut::Write):
(WebCore::WOFF2VectorOut::Size):
(WebCore::convertWOFFToSfnt):

LayoutTests:
Use new woff2 API
https://bugs.webkit.org/show_bug.cgi?id=162608

Patch by Khaled Hosny <khaledhosny@eglug.org> on 2016-09-28
Reviewed by Michael Catanzaro.

  • fast/text/resources/header-totalsfntsize-001.ttf: Added.
  • fast/text/resources/header-totalsfntsize-001.woff2: Added.
  • fast/text/woff2-totalsfntsize-expected.html: Added.
  • fast/text/woff2-totalsfntsize.html: Added.
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
5:34 AM WebKitGTK/Releasing edited by Michael Catanzaro
Need to update Chrome string too (diff)
4:11 AM Changeset in webkit [206510] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[GTK] Add warning comment in UserAgentGtk.cpp
https://bugs.webkit.org/show_bug.cgi?id=162618

Reviewed by Carlos Garcia Campos.

  • platform/gtk/UserAgentGtk.cpp:
3:00 AM Changeset in webkit [206509] by Konstantin Tokarev
  • 3 edits in trunk/Source/ThirdParty

[cmake] Suppress Clang warnings in brotli and woff2
https://bugs.webkit.org/show_bug.cgi?id=162663

Reviewed by Michael Catanzaro.

  • brotli/CMakeLists.txt:
  • woff2/CMakeLists.txt:
2:17 AM Changeset in webkit [206508] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[Streams API] Align cancelReadableStream() with spec
https://bugs.webkit.org/show_bug.cgi?id=162556

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2016-09-28
Reviewed by Xabier Rodriguez-Calvar.

Aligned cancelReadableStream() with Streams API. In particular, private cancel() method
was added to ReadableStreamDefaultController and function name was replaced by readableStreamCancel().
Implementation of cancel() (as well as pull()) is actually made in ReadableStreamInternals.js to
avoid creating new function for each controller.

No change in behaviour.

  • Modules/streams/ReadableStream.js:

(cancel): Updated with reference to readableStreamCancel().

  • Modules/streams/ReadableStreamDefaultReader.js:

(cancel): Updated with reference to readableStreamCancel().

  • Modules/streams/ReadableStreamInternals.js:

(privateInitializeReadableStreamDefaultController): Refer to external functions (cancel/pull) to avoid
creating new functions.
(teeReadableStreamBranch2CancelFunction): Updated with reference to readableStreamCancel().
(readableStreamCancel): New name for cancelReadableStream(), behaviour aligned with spec.
(readableStreamDefaultControllerCancel): Added to avoid creating new function for each controller.
(readableStreamDefaultControllerPull): Added to avoid creating new function for each controller.
(readFromReadableStreamDefaultReader): Updated call to pull method to pass controller.

  • bindings/js/WebCoreBuiltinNames.h: Added "cancel".
1:17 AM Changeset in webkit [206507] by Michael Catanzaro
  • 2 edits in trunk

[GTK] Remove obsolete comment from OptionsGTK.cmake
https://bugs.webkit.org/show_bug.cgi?id=162622

Reviewed by Alex Christensen.

  • Source/cmake/OptionsGTK.cmake:
1:10 AM Changeset in webkit [206506] by commit-queue@webkit.org
  • 1002 edits in trunk/Source/JavaScriptCore

Adopt #pragma once in JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=162664

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

  • /.h:

Adopt pragma once in all but API headers and generated headers.
Include some namespace closing comments for consistency.

12:49 AM Changeset in webkit [206505] by Carlos Garcia Campos
  • 7 edits in trunk

[GTK] Switch to use GMenu internally in the context menu implementation
https://bugs.webkit.org/show_bug.cgi?id=162603

Reviewed by Michael Catanzaro.

Source/WebKit2:

Switch to use GAction instead of GtkAction internally, but still keeping a GtkAction associated to the GAction,
because our API depends on GtkAction.

  • Shared/gtk/WebContextMenuItemGtk.cpp:

(WebKit::WebContextMenuItemGtk::WebContextMenuItemGtk):
(WebKit::WebContextMenuItemGtk::createActionIfNeeded): Create the GAction and the associated GtkAction. Ensure a
unique name for the GAction, since the name now matters.

  • Shared/gtk/WebContextMenuItemGtk.h:

(WebKit::WebContextMenuItemGtk::gtkAction):
(WebKit::WebContextMenuItemGtk::gAction):
(WebKit::WebContextMenuItemGtk::submenuItems): Deleted.

  • UIProcess/gtk/WebContextMenuProxyGtk.cpp:

(WebKit::contextMenuItemActivatedCallback): Use the GAction.
(WebKit::WebContextMenuProxyGtk::append): Create a new GMenuItem for the GAction.
(WebKit::WebContextMenuProxyGtk::buildMenu): Build a GMenu for the given items.
(WebKit::WebContextMenuProxyGtk::populate): Create a GMenu and bind it ot the GtkMenu.
(WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): Create the GActionGroup for the menu.
(WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Remove the action group from the GtkMenu.

  • UIProcess/gtk/WebContextMenuProxyGtk.h:

Tools:

Remove smart separators test, since that's now done automatically by GTK+.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:

(beforeAll):
(testContextMenuWebExtensionMenu): Deleted.

12:22 AM Changeset in webkit [206504] by bshafiei@apple.com
  • 1 copy in branches/safari-602.2.14.1-branch

New Branch.

12:17 AM Changeset in webkit [206503] by Yusuke Suzuki
  • 4 edits in trunk

Unreviewed, build fix for several CMake ports after r206440

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Sep 27, 2016:

11:45 PM Changeset in webkit [206502] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

[EFL] Fix debug build break since r206481. Unreviewed
https://bugs.webkit.org/show_bug.cgi?id=162662

No new tests, no new behaviours.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::draw):

11:26 PM Changeset in webkit [206501] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.15.1

New tag.

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

Merge r206234. rdar://problem/28503781

11:22 PM Changeset in webkit [206499] by bshafiei@apple.com
  • 2 edits in branches/safari-602.2.15-branch/Source/WebCore

Merge r206234. rdar://problem/28503781

11:17 PM Changeset in webkit [206498] by bshafiei@apple.com
  • 5 edits in branches/safari-602.2.15-branch/Source

Versioning.

11:12 PM Changeset in webkit [206497] by bshafiei@apple.com
  • 1 copy in branches/safari-602.2.15-branch

New Branch.

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

[CMake] Add HAVE_LOCALTIME_R definition
https://bugs.webkit.org/show_bug.cgi?id=162636

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

.:

  • Source/cmake/OptionsCommon.cmake:

Source/WTF:

  • wtf/DateMath.cpp:

(WTF::getLocalTime):

  • wtf/GregorianDateTime.cpp:

(WTF::GregorianDateTime::setToCurrentLocalTime):

  • wtf/Platform.h:
9:35 PM Changeset in webkit [206495] by commit-queue@webkit.org
  • 2 edits in trunk/Websites/webkit.org

Update style guide for #pragma once
https://bugs.webkit.org/show_bug.cgi?id=162633

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-27
Reviewed by Dan Bernstein.

  • code-style.md:

Update style guide for #pragma once as discussed on webkit-dev.

9:09 PM Changeset in webkit [206494] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: CrashTracer: com.apple.WebKit.WebContent at WebCore::AXObjectCache::localCaretRectForCharacterOffset(WebCore::RenderObject*&, WebCore::CharacterOffset const&) + 116
https://bugs.webkit.org/show_bug.cgi?id=162654

Reviewed by Chris Fleizach.

Source/WebCore:

rangeForUnorderedCharacterOffsets() can return a null Range but we failed to
do a null check in localCaretRectForCharacterOffset() before dereferencing it.

Test: accessibility/mac/bounds-for-range-crash.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::localCaretRectForCharacterOffset):

LayoutTests:

  • accessibility/mac/bounds-for-range-crash-expected.txt: Added.
  • accessibility/mac/bounds-for-range-crash.html: Added.
8:03 PM Changeset in webkit [206493] by rniwa@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

Toggling display: none on a parent element of a slot which shares style with its parent doesn't update the slot's visibility
https://bugs.webkit.org/show_bug.cgi?id=158421

Reviewed by Darin Adler.

Add a regression test now that the bug has been fixed by r206403.

  • fast/shadow-dom/shadow-layout-after-toggling-display-slot-parent-expected.html: Added.
  • fast/shadow-dom/shadow-layout-after-toggling-display-slot-parent.html: Added.
6:58 PM Changeset in webkit [206492] by Chris Dumez
  • 4 edits in trunk/LayoutTests

[iOS] Fix several Touch-related layout tests
https://bugs.webkit.org/show_bug.cgi?id=162651

Reviewed by Darin Adler.

Fix several Touch-related layout tests. The first parameter to our Touch
constructor must be a Window but several of our tests were passing in a
Document.

  • platform/ios-simulator/ios/touch/construct-Touch-expected.txt:
  • platform/ios-simulator/ios/touch/resources/construct-Touch.js:
  • platform/ios-simulator/ios/touch/resources/construct-TouchList.js:
6:39 PM Changeset in webkit [206491] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.14.0.1

New tag.

6:39 PM Changeset in webkit [206490] by bshafiei@apple.com
  • 4 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206454. rdar://problem/28484193

6:39 PM Changeset in webkit [206489] by bshafiei@apple.com
  • 3 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206444. rdar://problem/28496755

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

Merge r206415. rdar://problem/28484047

6:38 PM Changeset in webkit [206487] by bshafiei@apple.com
  • 6 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206399. rdar://problem/28457219

6:31 PM Changeset in webkit [206486] by bshafiei@apple.com
  • 5 edits in branches/safari-602.2.14.0-branch/Source

Versioning.

6:23 PM Changeset in webkit [206485] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Inline critical functions in URLParser
https://bugs.webkit.org/show_bug.cgi?id=162653

Reviewed by Myles C. Maxfield.

This gives me about a 15% speed improvement.

  • platform/URLParser.cpp:

(WebCore::CodePointIterator::CodePointIterator):
(WebCore::CodePointIterator::operator==):
(WebCore::CodePointIterator::operator!=):
(WebCore::CodePointIterator::operator=):
(WebCore::CodePointIterator::atEnd):
(WebCore::CodePointIterator::codeUnitsSince):
(WebCore::CodePointIterator<LChar>::operator):
(WebCore::CodePointIterator<UChar>::operator):
(WebCore::appendCodePoint):
(WebCore::isC0Control):
(WebCore::isC0ControlOrSpace):
(WebCore::isTabOrNewline):
(WebCore::isInSimpleEncodeSet):
(WebCore::isInDefaultEncodeSet):
(WebCore::isInUserInfoEncodeSet):
(WebCore::isInvalidDomainCharacter):
(WebCore::isPercentOrNonASCII):
(WebCore::isSlashQuestionOrHash):
(WebCore::isValidSchemeCharacter):
(WebCore::URLParser::advance):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::appendToASCIIBuffer):
(WebCore::percentEncodeByte):
(WebCore::URLParser::utf8PercentEncode):
(WebCore::URLParser::utf8QueryEncode):
(WebCore::isDefaultPort):
(WebCore::isSpecialScheme):
(WebCore::isPercentEncodedDot):
(WebCore::isSingleDotPathSegment):
(WebCore::isDoubleDotPathSegment):
(WebCore::consumeSingleDotPathSegment):
(WebCore::consumeDoubleDotPathSegment):
(WebCore::URLParser::popPath):
(WebCore::URLParser::parsedDataView):
(WebCore::URLParser::currentPosition):
(WebCore::zeroSequenceLength):
(WebCore::findLongestZeroSequence):
(WebCore::pow256):
(WebCore::percentDecode):
(WebCore::containsOnlyASCII):
(WebCore::domainToASCII):
(WebCore::hasInvalidDomainCharacter):
(WebCore::formURLDecode):
(WebCore::serializeURLEncodedForm):

6:17 PM Changeset in webkit [206484] by bshafiei@apple.com
  • 1 copy in branches/safari-602.2.14.0-branch

New Branch.

6:17 PM Changeset in webkit [206483] by Alan Bujtas
  • 3 edits
    4 adds in trunk

REGRESSION (r204552): Yelp carousel animation is not smooth.
https://bugs.webkit.org/show_bug.cgi?id=162632

Reviewed by Simon Fraser.

Source/WebCore:

For composited state changes when the layers don't need rebuilding, the updateGeometry() traversal
is post-order (see webkit.org/162634), so we can't rely on the offsetfromRenderer() value when
computing the graphics layer position on the descendants. We need this workaround until after webkit.org/162634
gets fixed.

Tests: compositing/hidpi-composited-container-and-graphics-layer-gap-changes.html

compositing/hidpi-negative-composited-bounds-on-device-pixel.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::computeOffsetFromAncestorGraphicsLayer):
(WebCore::ComputedOffsets::ComputedOffsets):
(WebCore::ComputedOffsets::fromAncestorGraphicsLayer):
(WebCore::RenderLayerBacking::computeParentGraphicsLayerRect):

LayoutTests:

  • compositing/hidpi-composited-container-and-graphics-layer-gap-changes-expected.html: Added.
  • compositing/hidpi-composited-container-and-graphics-layer-gap-changes.html: Added.
  • compositing/hidpi-negative-composited-bounds-on-device-pixel-expected.html: Added.
  • compositing/hidpi-negative-composited-bounds-on-device-pixel.html: Added.
6:11 PM Changeset in webkit [206482] by jfbastien@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Missing Atomics.h include in MarkedBlock.h
https://bugs.webkit.org/show_bug.cgi?id=162648

Missing include from my previous patch.

Reviewed by Yusuke Suzuki.

  • heap/MarkedBlock.h:
6:06 PM Changeset in webkit [206481] by commit-queue@webkit.org
  • 36 edits
    2 adds in trunk/Source/WebCore

Move caching the ImageFrame from BitmapImage to ImageSource
https://bugs.webkit.org/show_bug.cgi?id=155498

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-09-27
Reviewed by Simon Fraser.

BitmapImage has two modes of operation regarding its image decoding state.
The first mode happens when a remote image is loaded as encoded data and
which requires an ImageDecoder to generate the image metadata and the
the ImageFrames. The second mode happens when a BitmapImage is created
with a NativeImagePtr. In this case, no ImageDecoder is needed.

To remove this burden from the BitmapImage the member 'm_frames' is removed
from BitmapImage. A new member named 'm_frameCache' of type ImageFrameCache
is added to ImageSource. This class handles caching and recaching the image
metadata and the ImageFrames if the image needs decoding. When the BitmapImage
is initialized with a memory image, the ImageFrameCache initializes its
metadata and ImageFrames directly from the NativeImagePtr.

The plan for ImageFrameCache is to be extended for the asynchronous image
decoding and also to be used by the non CG image decoders which cache
other copies of the ImageFrames. This double caching should be removed.

When the BitmapImage is replying to the ImageFrame queries, it will ask the
ImageSource which will pass the query the ImageFrameCache. ImageFrameCache
will ensure the requested ImageFrame is cached and is valid for the requested
SubSamplingLevel before accessing the data members of this ImageFrame.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add and ImageFrameCache.cpp to the WebCore project.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::BitmapImage): Move initializing the image metadata to
ImageSource. Add initializers for the remaining members in the class declaration.

(WebCore::BitmapImage::destroyDecodedData): Move most of the logic of this
function to ImageFrameCache::destroyDecodedData(). The only part which can't
be moved is the call invalidatePlatformData().

(WebCore::BitmapImage::destroyDecodedDataIfNecessary): Move the logic of this
function to ImageFrameCache::destroyDecodedDataIfNecessary().

(WebCore::BitmapImage::dataChanged): Move the logic of this function to
ImageSource::dataChanged().

(WebCore::BitmapImage::frameImageAtIndex): Move most of the logic of this
function to ImageFrameCache::frameImageAtIndex(). The only part which can't
be moved is the call invalidatePlatformData() if the required subsampling
level is different from the subsampling level for the cached frame image.

(WebCore::BitmapImage::draw): Replace the BitmapImage cached metadata with
the corresponding ImageSource cached metadata.
(WebCore::BitmapImage::drawPattern): Ditto.
(WebCore::BitmapImage::shouldAnimate): Ditto.
(WebCore::BitmapImage::startAnimation): Ditto.
(WebCore::BitmapImage::internalAdvanceAnimation): Ditto.

(WebCore::BitmapImage::dump): Call ImageSource::dump() to dump the image
cached metadata.

(WebCore::BitmapImage::haveFrameImageAtIndex): Deleted.
(WebCore::BitmapImage::destroyMetadataAndNotify): Deleted.
(WebCore::BitmapImage::cacheFrame): Deleted.
(WebCore::BitmapImage::didDecodeProperties): Deleted.
(WebCore::BitmapImage::updateSize): Deleted.
(WebCore::BitmapImage::size): Deleted.
(WebCore::BitmapImage::sizeRespectingOrientation): Deleted.
(WebCore::BitmapImage::hotSpot): Deleted.
(WebCore::BitmapImage::frameCount): Deleted.
(WebCore::BitmapImage::isSizeAvailable): Deleted.
(WebCore::BitmapImage::ensureFrameAtIndexIsCached): Deleted.
(WebCore::BitmapImage::frameIsCompleteAtIndex): Deleted.
(WebCore::BitmapImage::frameDurationAtIndex): Deleted.
(WebCore::BitmapImage::frameHasAlphaAtIndex): Deleted.
(WebCore::BitmapImage::currentFrameKnownToBeOpaque): Deleted.
(WebCore::BitmapImage::frameOrientationAtIndex): Deleted.
(WebCore::BitmapImage::singlePixelSolidColor): Deleted.
(WebCore::BitmapImage::repetitionCount): Deleted.

  • platform/graphics/BitmapImage.h:

Managing the ImageFrames caching is moved to ImageFrameCache. Caching the
image metadata is now moved to the ImageSource.

  • platform/graphics/GeneratedImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::orientationForCurrentFrame):
(WebCore::Image::singlePixelSolidColor):
Change currentFrameKnownToBeOpaque(), orientationForCurrentFrame() and
singlePixelSolidColor() to be const.

  • platform/graphics/ImageFrame.cpp:

(WebCore::ImageFrame::defaultFrame): Returns an empty ImageFrame to get the default ImageFrame metadata.
(WebCore::ImageFrame::fillMetadata): Deleted. Moved to ImageFrameCache.
(WebCore::ImageFrame::initialize): Deleted. Ditto.

  • platform/graphics/ImageFrame.h:

(WebCore::ImageFrame::setDuration): Change the type of the argument to float instead of unsigned.
(WebCore::ImageFrame::hasAlpha): Protect the unset m_hasAlpha by checking hasMetadata() first.

  • platform/graphics/ImageFrameCache.cpp: Added.

(WebCore::ImageFrameCache::ImageFrameCache): Two constructors similar to what we do for ImageSource and BitmapImage.
(WebCore::ImageFrameCache::destroyDecodedData): Moved from BitmapImage.cpp.
(WebCore::ImageFrameCache::destroyDecodedDataIfNecessary): Ditto.
(WebCore::ImageFrameCache::destroyIncompleteDecodedData): Ditto.
(WebCore::ImageFrameCache::decodedSizeChanged): Ditto.
(WebCore::ImageFrameCache::decodedSizeIncremented): Ditto.
(WebCore::ImageFrameCache::decodedSizeDecremented): Ditto.
(WebCore::ImageFrameCache::decodedSizeReset): Ditto.
(WebCore::ImageFrameCache::didDecodeProperties): Ditto.
(WebCore::ImageFrameCache::growFrames): Grows the size of m_frames if necessary.
(WebCore::ImageFrameCache::setNativeImage): Initializes the ImageFrame metadata directly from the NativeImagePtr.
(WebCore::ImageFrameCache::setFrameNativeImage): Initializes the ImageFrame image and the metadata.
(WebCore::ImageFrameCache::setFrameMetadata): Initializes the ImageFrame metadata from the ImageDecoder.
(WebCore::ImageFrameCache::frameAtIndex): Returns an ImageFrame given its index. Cache or recache the requested ImageFrame if necessary.
(WebCore::ImageFrameCache::clearMetadata): Invalidates the cached image metadata.
(WebCore::ImageFrameCache::metadata): A template function which returns an image metadata property.
(WebCore::ImageFrameCache::frameMetadataAtIndex): A template function which returns an ImageFrame metadata property.
(WebCore::ImageFrameCache::isSizeAvailable): An image metadata property.
(WebCore::ImageFrameCache::frameCount): Ditto.
(WebCore::ImageFrameCache::repetitionCount): Ditto.
(WebCore::ImageFrameCache::filenameExtension): Ditto.
(WebCore::ImageFrameCache::hotSpot): Ditto.
(WebCore::ImageFrameCache::size): An image metadata property but we get it from the first ImageFrame.
(WebCore::ImageFrameCache::sizeRespectingOrientation): Ditto.
(WebCore::ImageFrameCache::singlePixelSolidColor): Ditto.
(WebCore::ImageFrameCache::frameIsCompleteAtIndex): An ImageFrame metadata property.
(WebCore::ImageFrameCache::frameHasAlphaAtIndex): Ditto.
(WebCore::ImageFrameCache::frameHasImageAtIndex): Ditto.
(WebCore::ImageFrameCache::frameHasInvalidNativeImageAtIndex): Ditto.
(WebCore::ImageFrameCache::frameSubsamplingLevelAtIndex): Ditto.
(WebCore::ImageFrameCache::frameSizeAtIndex): Ditto.
(WebCore::ImageFrameCache::frameBytesAtIndex): Ditto.
(WebCore::ImageFrameCache::frameDurationAtIndex): Ditto.
(WebCore::ImageFrameCache::frameOrientationAtIndex): Ditto.
(WebCore::ImageFrameCache::frameImageAtIndex): Ditto.

  • platform/graphics/ImageFrameCache.h: Added.

(WebCore::ImageFrameCache::setDecoder): Sets the current ImageDecoder which is owned by the ImageSource.
(WebCore::ImageFrameCache::decodedSize): Returns the size of the cached NativeImages.
(WebCore::ImageFrameCache::isDecoderAvailable): Returns whether an ImageDecoder is available.

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::ImageSource): Initializes the ImageFrameCache based on the image decoding state.
(WebCore::ImageSource::clearFrameBufferCache): Replace initialized() with isDecoderAvailable().
(WebCore::ImageSource::clear): Clears the ImageDecoder of the ImageFrameCache.
(WebCore::ImageSource::destroyDecodedData): Moved from BitmapImage.cpp.
(WebCore::ImageSource::destroyDecodedDataIfNecessary): Ditto.
(WebCore::ImageSource::ensureDecoderAvailable): Creates an ImageDecoder if necessary and sets it in ImageFrameCache.
(WebCore::ImageSource::setData):
(WebCore::ImageSource::dataChanged): Moved from BitmapImage.cpp.
(WebCore::ImageSource::isAllDataReceived):
(WebCore::ImageSource::maximumSubsamplingLevel): Rename calculateMaximumSubsamplingLevel() to maximumSubsamplingLevel().
(WebCore::ImageSource::subsamplingLevelForScale):
(WebCore::ImageSource::createFrameImageAtIndex):
(WebCore::ImageSource::dump):
(WebCore::ImageSource::calculateMaximumSubsamplingLevel): Deleted. Renamed to maximumSubsamplingLevel().
(WebCore::ImageSource::updateMetadata): Deleted. Not needed. Caching the image metadata is the responsibility of ImageFrameCache.
(WebCore::ImageSource::bytesDecodedToDetermineProperties): Deleted. Not needed.
(WebCore::ImageSource::isSizeAvailable): Deleted. Moved to ImageSource.h.
(WebCore::ImageSource::size): Deleted. Ditto.
(WebCore::ImageSource::sizeRespectingOrientation): Deleted. Ditto.
(WebCore::ImageSource::frameCount): Deleted. Ditto.
(WebCore::ImageSource::repetitionCount): Deleted. Ditto.
(WebCore::ImageSource::filenameExtension): Deleted. Ditto.
(WebCore::ImageSource::hotSpot): Deleted. Ditto.
(WebCore::ImageSource::frameIsCompleteAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameHasAlphaAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameAllowSubsamplingAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameSizeAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameBytesAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameDurationAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameOrientationAtIndex): Deleted. Ditto.

  • platform/graphics/ImageSource.h:

(WebCore::ImageSource::isDecoderAvailable): initialized() was renamed to isDecoderAvailable().
(WebCore::ImageSource::decodedSize): Send the query to ImageFrameCache.
(WebCore::ImageSource::isSizeAvailable): Ditto.
(WebCore::ImageSource::frameCount): Ditto.
(WebCore::ImageSource::repetitionCount): Ditto.
(WebCore::ImageSource::filenameExtension): Ditto.
(WebCore::ImageSource::hotSpot): Ditto.
(WebCore::ImageSource::size): Ditto.
(WebCore::ImageSource::sizeRespectingOrientation): Ditto.
(WebCore::ImageSource::singlePixelSolidColor): Ditto.
(WebCore::ImageSource::frameIsCompleteAtIndex): Ditto.
(WebCore::ImageSource::frameHasAlphaAtIndex): Ditto.
(WebCore::ImageSource::frameHasImageAtIndex): Ditto.
(WebCore::ImageSource::frameHasInvalidNativeImageAtIndex): Ditto.
(WebCore::ImageSource::frameSubsamplingLevelAtIndex): Ditto.
(WebCore::ImageSource::frameSizeAtIndex): Ditto.
(WebCore::ImageSource::frameBytesAtIndex): Ditto.
(WebCore::ImageSource::frameDurationAtIndex): Ditto.
(WebCore::ImageSource::frameOrientationAtIndex): Ditto.
(WebCore::ImageSource::frameImageAtIndex): Ditto.
(WebCore::ImageSource::decoder): Deleted. Not needed.
(WebCore::ImageSource::initialized): Deleted. Was renamed to isDecoderAvailable().
(WebCore::ImageSource::setNeedsUpdateMetadata): Deleted. Not needed.

  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::extractImage): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/graphics/cg/GraphicsContext3DCG.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::extractImage): Ditto.

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoder::ImageDecoder): Make the constructor of ImageDecoder be the same for all ports.
(WebCore::ImageDecoder::setData): Removed unused overloaded function.
(WebCore::ImageDecoder::size): Deleted. Removed unused function.

  • platform/graphics/cg/ImageDecoderCG.h:

(WebCore::ImageDecoder::create): Make the constructor of CG ImageDecoder be like the other ports.
(WebCore::ImageDecoder::isAllDataReceived): Make this property owned by ImageDecoder.

  • platform/graphics/cg/PDFDocumentImage.h: Change currentFrameKnownToBeOpaque() to be const.
  • platform/graphics/efl/GraphicsContext3DEfl.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::extractImage): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/graphics/mac/ImageMac.mm:

(WebCore::BitmapImage::invalidatePlatformData): m_frames is owned by ImageFrameCache. ImageFrameCache::frameCount() has to
be equal to ImageFrame::m_frames.size().

  • platform/image-decoders/ImageDecoder.cpp:

(WebCore::ImageDecoder::create): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/ImageDecoder.h:

(WebCore::ImageDecoder::ImageDecoder): Ditto.
(WebCore::ImageDecoder::frameCount): Make frameCount const so it can be passed to the template function ImageFrameCache::metadata().

  • platform/image-decoders/bmp/BMPImageDecoder.cpp:

(WebCore::BMPImageDecoder::BMPImageDecoder): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/bmp/BMPImageDecoder.h:
  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::GIFImageDecoder): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.
(WebCore::GIFImageDecoder::frameCount): Make frameCount const so it can be passed to the template function ImageFrameCache::metadata().

  • platform/image-decoders/gif/GIFImageDecoder.h:
  • platform/image-decoders/gif/GIFImageReader.cpp:
  • platform/image-decoders/gif/GIFImageReader.h:
  • platform/image-decoders/ico/ICOImageDecoder.cpp:

(WebCore::ICOImageDecoder::ICOImageDecoder):
(WebCore::ICOImageDecoder::frameCount): Make frameCount const so it can be passed to the template function ImageFrameCache::metadata().
(WebCore::ICOImageDecoder::decode): Move resizing the m_frameBufferCache from ICOImageDecoder::frameCount() to ICOImageDecoder::decode().
(WebCore::ICOImageDecoder::decodeAtIndex): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/ico/ICOImageDecoder.h:
  • platform/image-decoders/jpeg/JPEGImageDecoder.cpp:

(WebCore::JPEGImageDecoder::JPEGImageDecoder): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/jpeg/JPEGImageDecoder.h:
  • platform/image-decoders/png/PNGImageDecoder.cpp:

(WebCore::PNGImageDecoder::PNGImageDecoder): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/png/PNGImageDecoder.h:

(WebCore::PNGImageDecoder::frameCount): Make frameCount const so it can be passed to the template function ImageFrameCache::metadata().

  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::WEBPImageDecoder):

  • platform/image-decoders/webp/WEBPImageDecoder.h:
  • svg/graphics/SVGImage.h: Make currentFrameKnownToBeOpaque() be const.
  • svg/graphics/SVGImageForContainer.h: Ditto.
6:02 PM Changeset in webkit [206480] by achristensen@apple.com
  • 4 edits in trunk

Correctly parse URLs with the first tab in the fragment
https://bugs.webkit.org/show_bug.cgi?id=162650

Reviewed by Saam Barati.

Source/WebCore:

Covered by a new API test.

  • platform/URLParser.cpp:

(WebCore::URLParser::fragmentSyntaxViolation):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

6:01 PM Changeset in webkit [206479] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKit2

NetworkLoad and PingLoad should use private inheritance
https://bugs.webkit.org/show_bug.cgi?id=162649

Reviewed by Alex Christensen.

Make NetworkLoad privately inherit from NetworkDataTaskClient and ResourceHandleClient,
and make the client callbacks from these interfaces private as this class implements
these interfaces.

Similarly, make PingLoad privately inherit from ResourceHandleClient.

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/PingLoad.h:
5:37 PM Changeset in webkit [206478] by Chris Dumez
  • 6 edits
    1 add in trunk

<a download> does not honor the same-origin requirement
https://bugs.webkit.org/show_bug.cgi?id=156100

Reviewed by Alex Christensen.

Source/WebCore:

We now completely ignore the "download" attribute on anchors if the
href URL is cross-origin. We therefore navigate to the URL instead
of forcefully downloading it in this case and leave it up to the server
to give us the right headers if it should be downloaded. This is
conservative and matches Firefox.

Chrome and the HTML specification ignore only the suggested filename
if the URL is cross-origin but still download the file.

No new tests, updated existing test.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

LayoutTests:

Update existing cross origin test as it expected the suggested filename to
be ignored but the file to still be downloaded (Chrome behavior) instead
of the download attribute to be completely ignored and therefore navigate
(Firefox behavior).

  • TestExpectations:
  • http/tests/resources/pass-notify-done.html: Added.
  • http/tests/security/anchor-download-block-crossorigin-expected.txt:
  • http/tests/security/anchor-download-block-crossorigin.html:
5:31 PM Changeset in webkit [206477] by achristensen@apple.com
  • 5 edits in trunk

URLParser: Handle windows drive letters after two slashes in relative URLs according to spec
https://bugs.webkit.org/show_bug.cgi?id=162646

Reviewed by Saam Barati.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::CodePointIterator::codeUnitsSince):
(WebCore::URLParser::appendWindowsDriveLetter):
(WebCore::URLParser::parse):
(WebCore::isWindowsDriveLetter): Deleted.
(WebCore::URLParser::checkWindowsDriveLetter): Deleted.

  • platform/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

5:26 PM Changeset in webkit [206476] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

createError() and JSObject::calculatedClassName() should not throw any exceptions.
https://bugs.webkit.org/show_bug.cgi?id=162637

Reviewed by Geoffrey Garen.

  • runtime/ExceptionHelpers.cpp:

(JSC::createError):

  • assert that errorDescriptionForValue() did not throw an exception.
  • runtime/JSObject.cpp:

(JSC::JSObject::calculatedClassName):

  • the code already ensures that we always return a non-null String. Just need to make sure that it catches its own exceptions.
5:25 PM Changeset in webkit [206475] by achristensen@apple.com
  • 4 edits in trunk

URLs with @ in the user should only search for the last @ until the end of the authority and host
https://bugs.webkit.org/show_bug.cgi?id=162635

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

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

Marking http/tests/xmlhttprequest/onabort-response-getters.html as failing on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=162647

Unreviewed test gardening.

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

Marking imported/w3c/web-platform-tests/shadow-dom/scroll-to-the-fragment-in-shadow-tree.html as failing on ios-simulator-wk2.
https://bugs.webkit.org/show_bug.cgi?id=162645

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
4:54 PM Changeset in webkit [206472] by fpizlo@apple.com
  • 3 edits
    1 add in trunk

B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64
https://bugs.webkit.org/show_bug.cgi?id=162644

Reviewed by Keith Miller.

JSTests:

  • stress/chill-mod-chill-mod.js: Added.

(foo):

Source/JavaScriptCore:

If you forget to update the predecessors of your successors, then bad things will happen if you
do something that requires accurate predecessors for correctness. lowerMacros() uses
BlockInsertionSet, which relies on accurate predecessors.

  • b3/B3LowerMacros.cpp:
4:41 PM Changeset in webkit [206471] by Ryan Haddad
  • 2 edits in branches/safari-602-branch/LayoutTests

Rebaseline fast/text/system-font-weight.html for ios-simulator.

Unreviewed test gardening.

  • platform/ios-simulator/fast/text/system-font-weight-expected.txt:
4:41 PM Changeset in webkit [206470] by jfbastien@apple.com
  • 7 edits
    1 add in trunk

Speed up Heap::isMarkedConcurrently
https://bugs.webkit.org/show_bug.cgi?id=162095

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Speed up isMarkedConcurrently by using WTF::consumeLoad.

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::areMarksStale):
(JSC::MarkedBlock::areMarksStaleWithDependency):
(JSC::MarkedBlock::isMarkedConcurrently): do away with the load-load fence

Source/WTF:

Heap::isMarkedConcurrently had a load-load fence which is expensive on weak memory ISAs such as ARM.

This patch is fairly perf-neutral overall, but the GC's instrumentation reports:

GC:Eden is 93% average runtime after change
GC:Full is 76% average runtime after change

The fence was there because:

  1. If the read of m_markingVersion in MarkedBlock::areMarksStale isn't what's expected then;
  2. The read of m_marks in MarkedBlock::isMarked needs to observe the value that was stored *before* m_markingVersion was stored.

This ordering isn't guaranteed on ARM, which has a weak memory model.

There are 3 ways to guarantee this ordering:

  1. Use a barrier instruction.
  2. Use a load-acquire (new in ARMv8).
  3. use ARM's address dependency rule, which C++ calls memory_order_consume.

In general:

  1. is slow but orders all of memory in an intuitive manner.
  2. is faster-ish and has the same property-ish.
  3. should be faster still, but *only orders dependent loads*. This last part is critical! Consume isn't an all-out replacement for acquire (acquire is rather a superset of consume).

ARM explains the address dependency rule in their document "barrier litmus tests and cookbook":

*Resolving by the use of barriers and address dependency*

There is a rule within the ARM architecture that:
Where the value returned by a read is used to compute the virtual address of a subsequent read or write (this is known as an address dependency), then these two memory accesses will be observed in program order. An address dependency exists even if the value read by the first read has no effect in changing the virtual address (as might be the case if the value returned is masked off before it is used, or if it had no effect on changing a predicted address value).
This restriction applies only when the data value returned from one read is used as a data value to calculate the address of a subsequent read or write. This does not apply if the data value returned from one read is used to determine the condition code flags, and the values of the flags are used for condition code evaluation to determine the address of a subsequent reads, either through conditional execution or the evaluation of a branch. This is known as a control dependency.
Where both a control and address dependency exist, the ordering behaviour is consistent with the address dependency.

C++'s memory_order_consume is unfortunately unimplemented by C++ compilers, and maybe unimplementable as spec'd. I'm working with interested folks in the committee to fix this situation: http://wg21.link/p0190r2

  • wtf/Atomics.h:

(WTF::zeroWithConsumeDependency): a 0 which carries a dependency
(WTF::consumeLoad): pixie magic

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/Consume.cpp: Added.

(testConsume):
(TestWebKitAPI::TEST):

4:33 PM Changeset in webkit [206469] by Chris Dumez
  • 5 edits
    2 adds in trunk

It should be possible to dispatch events on documents created using DOMParser
https://bugs.webkit.org/show_bug.cgi?id=26147

Reviewed by Ryosuke Niwa.

Source/WebCore:

It should be possible to dispatch events on documents created using
DOMParser. It did not work because we were not setting the context
document on the newly created document in DOMParser::parseFromString().

Firefox and Chrome both already support this.

Test: fast/dom/parsed-document-dispatchEvent.html

  • xml/DOMParser.cpp:

(WebCore::DOMParser::DOMParser):
(WebCore::DOMParser::parseFromString):

  • xml/DOMParser.h:

(WebCore::DOMParser::create):

  • xml/DOMParser.idl:

LayoutTests:

Add layout test coverage.

  • fast/dom/parsed-document-dispatchEvent-expected.txt: Added.
  • fast/dom/parsed-document-dispatchEvent.html: Added.
4:20 PM Changeset in webkit [206468] by jfbastien@apple.com
  • 2 edits in trunk/Source/WTF

Atomics.h on Windows: remove seq_cst hack
https://bugs.webkit.org/show_bug.cgi?id=162022

Reviewed by Mark Lam.

No need to force access to seq_cst, always inlining fixes the MSVC warning.

  • wtf/Atomics.h:

(WTF::Atomic::compareExchangeWeak): remove seq_cst hack
(WTF::Atomic::compareExchangeStrong): remove seq_cst hack
(WTF::Atomic::exchangeAndAdd): remove seq_cst hack
(WTF::Atomic::exchange): remove seq_cst hack

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

Marking fast/scrolling/rtl-scrollbars-alternate-iframe-body-dir-attr-does-not-update-scrollbar-placement.html as flaky on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=162638

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
2:58 PM Changeset in webkit [206466] by mmaxfield@apple.com
  • 5 edits in trunk/Source/WebCore

[Cocoa] Improve performance of complex text codepath
https://bugs.webkit.org/show_bug.cgi?id=161936

Reviewed by Simon Fraser.

CoreText exposes a bit on the CTRunStatus which represents whether
the run actually uses the glyph origins concept introduced in
r205396. If this bit is not set, we can use the (slightly faster)
call to CTRunGetAdvances() instead of
CTRunGetBaseAdvancesAndOrigins(). In addition, if none of the runs
have this bit set, we don't need to allocate storage for the vector
of origins at all, thereby using less memory.

No new tests because there is no behavior change.

  • platform/graphics/mac/ComplexTextController.cpp:

(WebCore::ComplexTextController::advance):
(WebCore::ComplexTextController::adjustGlyphsAndAdvances):

  • platform/graphics/mac/ComplexTextController.h:

(WebCore::ComplexTextController::ComplexTextRun::glyphOrigins):
(WebCore::ComplexTextController::glyphOrigin):

  • platform/graphics/mac/ComplexTextControllerCoreText.mm:

(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):

  • platform/spi/cocoa/CoreTextSPI.h:
2:54 PM Changeset in webkit [206465] by Dewei Zhu
  • 5 edits in trunk/Websites/perf.webkit.org

Extend perf dashboard to support multiple summary pages.
https://bugs.webkit.org/show_bug.cgi?id=162594

Reviewed by Ryosuke Niwa.

Start support multiple summary pages instead of one.
Specify 'summaryPages' as key that map to a list of summaries which follows
current 'summary' format in 'config.json' but with 2 more properties:

'name': specifying the name shows on perf dashboard,
'route': specifying the path to this page.

  • public/include/manifest.php:
  • public/v3/main.js:

(main):
(main.): Deleted.

  • public/v3/models/manifest.js:

(Manifest._didFetchManifest):
(Manifest):

  • public/v3/pages/summary-page.js:

(SummaryPage):
(SummaryPage.prototype.routeName):

2:05 PM Changeset in webkit [206464] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Refreshing while in Timelines-tab causes negative timestamps in Network-tab
https://bugs.webkit.org/show_bug.cgi?id=160051
<rdar://problem/27480122>

Reviewed by Brian Burg.

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView.prototype.get startTime):
(WebInspector.NetworkGridContentView.prototype.get zeroTime):
Use the cached start time for graph data source properties instead of
relying on the ruler, which requires a layout in order to be updated
for the first time.

2:04 PM Changeset in webkit [206463] by rniwa@webkit.org
  • 4 edits
    29 moves
    32 adds
    2 deletes in trunk

Import w3c shadow DOM tests and fix one assertion
https://bugs.webkit.org/show_bug.cgi?id=162629

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Import shadow DOM tests in web-platform-tests as of 7163d6eeed81e9e020545fbe0c4b11fc2c5963cd
except untriaged tests for v0 API, which we obviously don't implement.

Most of these tests are the ones we upstreamed from fast/shadow-dom/.

  • web-platform-tests/shadow-dom/Document-prototype-adoptNode-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-adoptNode-expected.txt.
  • web-platform-tests/shadow-dom/Document-prototype-adoptNode.html: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-adoptNode.html.
  • web-platform-tests/shadow-dom/Document-prototype-currentScript-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-currentScript-expected.txt.
  • web-platform-tests/shadow-dom/Document-prototype-currentScript.html: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-currentScript.html.
  • web-platform-tests/shadow-dom/Document-prototype-importNode-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-importNode-expected.txt.
  • web-platform-tests/shadow-dom/Document-prototype-importNode.html: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-importNode.html.
  • web-platform-tests/shadow-dom/Element-interface-attachShadow-expected.txt: Added.
  • web-platform-tests/shadow-dom/Element-interface-attachShadow.html: Renamed from LayoutTests/fast/shadow-dom/Element-interface-attachShadow.html.
  • web-platform-tests/shadow-dom/Element-interface-shadowRoot-attribute-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Element-interface-shadowRoot-attribute-expected.txt.
  • web-platform-tests/shadow-dom/Element-interface-shadowRoot-attribute.html: Renamed from LayoutTests/fast/shadow-dom/Element-interface-shadowRoot-attribute.html.
  • web-platform-tests/shadow-dom/Extensions-to-Event-Interface-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Extensions-to-Event-Interface-expected.txt.
  • web-platform-tests/shadow-dom/Extensions-to-Event-Interface.html: Renamed from LayoutTests/fast/shadow-dom/Extensions-to-Event-Interface.html.
  • web-platform-tests/shadow-dom/HTMLSlotElement-interface-expected.txt: Renamed from LayoutTests/fast/shadow-dom/HTMLSlotElement-interface-expected.txt.
  • web-platform-tests/shadow-dom/HTMLSlotElement-interface.html: Renamed from LayoutTests/fast/shadow-dom/HTMLSlotElement-interface.html.
  • web-platform-tests/shadow-dom/MouseEvent-prototype-offsetX-offsetY-expected.txt: Renamed from LayoutTests/fast/shadow-dom/MouseEvent-prototype-offsetX-offsetY-expected.txt.
  • web-platform-tests/shadow-dom/MouseEvent-prototype-offsetX-offsetY.html: Renamed from LayoutTests/fast/shadow-dom/MouseEvent-prototype-offsetX-offsetY.html.
  • web-platform-tests/shadow-dom/Node-prototype-cloneNode-expected.txt: Added.
  • web-platform-tests/shadow-dom/Node-prototype-cloneNode.html: Renamed from LayoutTests/fast/shadow-dom/Node-prototype-cloneNode.html.
  • web-platform-tests/shadow-dom/OWNERS: Added.
  • web-platform-tests/shadow-dom/ShadowRoot-interface-expected.txt: Renamed from LayoutTests/fast/shadow-dom/ShadowRoot-interface-expected.txt.
  • web-platform-tests/shadow-dom/ShadowRoot-interface.html: Renamed from LayoutTests/fast/shadow-dom/ShadowRoot-interface.html.
  • web-platform-tests/shadow-dom/Slotable-interface-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Slotable-interface-assignedSlot-expected.txt.
  • web-platform-tests/shadow-dom/Slotable-interface.html: Renamed from LayoutTests/fast/shadow-dom/Slotable-interface-assignedSlot.html.
  • web-platform-tests/shadow-dom/event-composed-expected.txt: Added.
  • web-platform-tests/shadow-dom/event-composed-path-expected.txt: Added.
  • web-platform-tests/shadow-dom/event-composed-path-with-related-target-expected.txt: Added.
  • web-platform-tests/shadow-dom/event-composed-path-with-related-target.html: Added.
  • web-platform-tests/shadow-dom/event-composed-path.html: Added.
  • web-platform-tests/shadow-dom/event-composed.html: Added.
  • web-platform-tests/shadow-dom/event-inside-shadow-tree-expected.txt: Renamed from LayoutTests/fast/shadow-dom/event-inside-shadow-tree-expected.txt.
  • web-platform-tests/shadow-dom/event-inside-shadow-tree.html: Renamed from LayoutTests/fast/shadow-dom/event-inside-shadow-tree.html.
  • web-platform-tests/shadow-dom/event-inside-slotted-node-expected.txt: Renamed from LayoutTests/fast/shadow-dom/event-inside-slotted-node-expected.txt.
  • web-platform-tests/shadow-dom/event-inside-slotted-node.html: Renamed from LayoutTests/fast/shadow-dom/event-inside-slotted-node.html.
  • web-platform-tests/shadow-dom/event-with-related-target-expected.txt: Renamed from LayoutTests/fast/shadow-dom/event-with-related-target-expected.txt.
  • web-platform-tests/shadow-dom/event-with-related-target.html: Renamed from LayoutTests/fast/shadow-dom/event-with-related-target.html.
  • web-platform-tests/shadow-dom/leaktests/get-elements-expected.txt: Added.
  • web-platform-tests/shadow-dom/leaktests/get-elements.html: Added.
  • web-platform-tests/shadow-dom/leaktests/html-collection-expected.txt: Added.
  • web-platform-tests/shadow-dom/leaktests/html-collection.html: Added.
  • web-platform-tests/shadow-dom/leaktests/w3c-import.log: Added.
  • web-platform-tests/shadow-dom/leaktests/window-frames-expected.txt: Added.
  • web-platform-tests/shadow-dom/leaktests/window-frames.html: Added.
  • web-platform-tests/shadow-dom/resources/Document-prototype-currentScript-helper.js: Renamed from LayoutTests/fast/shadow-dom/resources/Document-prototype-currentScript-helper.js.
  • web-platform-tests/shadow-dom/resources/event-path-test-helpers.js: Added.
  • web-platform-tests/shadow-dom/resources/shadow-dom-utils.js: Added.
  • web-platform-tests/shadow-dom/resources/shadow-dom.js: Added.
  • web-platform-tests/shadow-dom/resources/w3c-import.log: Added.
  • web-platform-tests/shadow-dom/scroll-to-the-fragment-in-shadow-tree-expected.txt: Added.
  • web-platform-tests/shadow-dom/scroll-to-the-fragment-in-shadow-tree.html: Added.
  • web-platform-tests/shadow-dom/slotchange-event-expected.txt: Renamed from LayoutTests/fast/shadow-dom/slotchange-event-expected.txt.
  • web-platform-tests/shadow-dom/slotchange-event.html: Renamed from LayoutTests/fast/shadow-dom/slotchange-event.html.
  • web-platform-tests/shadow-dom/slotchange-expected.txt: Added.
  • web-platform-tests/shadow-dom/slotchange.html: Added.
  • web-platform-tests/shadow-dom/slots-expected.txt: Added.
  • web-platform-tests/shadow-dom/slots-fallback-expected.txt: Added.
  • web-platform-tests/shadow-dom/slots-fallback.html: Added.
  • web-platform-tests/shadow-dom/slots.html: Added.
  • web-platform-tests/shadow-dom/w3c-import.log: Added.

Source/WebCore:

The assertion failure was caused by RelatedNodeRetargeter's constructor mixing up the ancestor tree scopes
for the target and the related target. Fixed the bug by reversing the two.

Tests: imported/w3c/web-platform-tests/shadow-dom/event-composed-path-with-related-target.html

  • dom/EventPath.cpp:

(WebCore::RelatedNodeRetargeter::RelatedNodeRetargeter): i and m_ancestorTreeScopes are for the related target
and j and targetTreeScopeAncestors are for the target.

LayoutTests:

Deleted the duplicated copies of tests in fast/shadow/ since this patch re-imports them via web-platform-tests.

  • fast/shadow-dom/Element-interface-attachShadow-expected.txt: Removed.
  • fast/shadow-dom/Node-prototype-cloneNode-expected.txt: Removed.
1:55 PM Changeset in webkit [206462] by Chris Dumez
  • 11 edits
    2 adds in trunk

It should be possible to dispatch events on documents that do not have a browsing context
https://bugs.webkit.org/show_bug.cgi?id=162620

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • web-platform-tests/dom/events/Event-dispatch-bubbles-false-expected.txt:
  • web-platform-tests/dom/events/Event-dispatch-bubbles-true-expected.txt:

Rebaseline several W3C tests now that more checks are passing.

  • web-platform-tests/dom/events/Event-dispatch-other-document-expected.txt: Added.
  • web-platform-tests/dom/events/Event-dispatch-other-document.html: Added.
  • web-platform-tests/dom/events/w3c-import.log:

Import more test coverage from W3C.

Source/WebCore:

It should be possible to dispatch events on documents that do not have a browsing
context (e.g. Documents created using DOMImplementation.createHTMLDocument()).
Gecko and Blink both allow this but WebKit did not.

The approach chosen to support this is similar to the one in Blink. When constructing
a new document (e.g. using DOMImplementation.createHTMLDocument()) we now keep track
of the context document. When requesting the scriptExecutionContext(), we now return
the context document if the document has one instead of the document itself.

Test: imported/w3c/web-platform-tests/dom/events/Event-dispatch-other-document.html

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::JSDocument::visitAdditionalChildren):

  • dom/DOMImplementation.cpp:

(WebCore::DOMImplementation::createDocument):
(WebCore::DOMImplementation::createHTMLDocument):

  • dom/Document.cpp:

(WebCore::Document::create):
(WebCore::Document::cloneDataFromDocument):
(WebCore::Document::contextDocument):
(WebCore::Document::takeDOMWindowFrom): Deleted.

  • dom/Document.h:

(WebCore::Document::setContextDocument):
(WebCore::Node::scriptExecutionContext):
(WebCore::Node::isDocumentNode): Deleted.

  • dom/Document.idl:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::responseXML):

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

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

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:45 PM Changeset in webkit [206460] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebKit/win

Use override specifiers in PluginView
https://bugs.webkit.org/show_bug.cgi?id=162628

Reviewed by Alex Christensen.

  • Plugins/PluginView.h:
1:32 PM Changeset in webkit [206459] by mark.lam@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Add some needed CatchScopes in code that should not throw.
https://bugs.webkit.org/show_bug.cgi?id=162584

Reviewed by Keith Miller.

Re-landing minus the jsc.cpp and ExceptionHelpers.cpp changes. I'll address
those in a subsequent patch if the need manifests again in my testing.

  • API/JSObjectRef.cpp:

(JSObjectSetProperty):

  • This function already handles exceptions in its own way. We're honoring this contract and catching exceptions and passing it to the handler.
  • interpreter/Interpreter.cpp:

(JSC::notifyDebuggerOfUnwinding):

  • The debugger should not be throwing any exceptions.
  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::save):

  • If an exception was thrown while saving the database, there's nothing we can really do about it anyway. Just fail nicely and return false. This is in line with existing error checking code in Database::save() that returns false if it's not able to open the file to save to.
  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::finishCreation):

  • The existing code already RELEASE_ASSERT that no exception was thrown. Hence, it's appropriate to use a CatchScope here.
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::StackFrame::nameFromCallee):

  • The sampling profiler is doing a VMInquiry get here. It should never throw an exception. Hence, we'll just use a CatchScope and assert accordingly.
1:30 PM Changeset in webkit [206458] by commit-queue@webkit.org
  • 4 edits in trunk

[CMake] Use CMake to determine HAVE_* defines
https://bugs.webkit.org/show_bug.cgi?id=162368

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

.:

  • Source/cmake/OptionsCommon.cmake:

Source/WTF:

  • wtf/Platform.h:
1:07 PM Changeset in webkit [206457] by achristensen@apple.com
  • 7 edits in trunk

Implement URLParser::syntaxViolation
https://bugs.webkit.org/show_bug.cgi?id=162593

Reviewed by Geoffrey Garen.

Source/WebCore:

Most of the time when parsing URLs, we just look at the URL, find offsets of the host, path, query, etc.,
and the String can be used untouched. When this happens, we do not want to allocate and copy the String.
We want to just add a reference to an existing String.

Sometimes we need to canonicalize the String because there has been a syntaxViolation,
defined as any String that is different than its canonicalized URL String. In such cases we need to
allocate a new String and fill it with the canonicalized URL String. When a syntaxViolation happens for the
first time, we know that everything in the input String up to that point is equal to what it would have been
if we had canonicalized the beginning of the URL, copy it into a buffer, and continue parsing in a mode where
instead of just looking at the input URL String, we canonicalize each code point into the buffer.

Changes to behavior involve additional spec compliance with tabs and newlines in different places in URLs,
as well as additional spec compliance when parsing empty and null URLs relative to other URLs.
Both are covered by new API tests. Existing behavior covered by existing API tests.

This is about a 15% speed improvement on my URL parsing benchmark.

  • platform/URL.cpp:

(WebCore::assertProtocolIsGood):
(WebCore::URL::protocolIs):
(WebCore::protocolIs):

  • platform/URL.h:
  • platform/URLParser.cpp:

(WebCore::isTabOrNewline):
(WebCore::URLParser::incrementIteratorSkippingTabsAndNewlines):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::appendToASCIIBuffer):
(WebCore::URLParser::checkWindowsDriveLetter):
(WebCore::URLParser::shouldCopyFileURL):
(WebCore::URLParser::utf8PercentEncode):
(WebCore::URLParser::utf8QueryEncode):
(WebCore::URLParser::copyURLPartsUntil):
(WebCore::URLParser::syntaxViolation):
(WebCore::URLParser::fragmentSyntaxViolation):
(WebCore::URLParser::parsedDataView):
(WebCore::URLParser::currentPosition):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::URLParser::parseAuthority):
(WebCore::URLParser::parseIPv4Number):
(WebCore::URLParser::parseIPv4Host):
(WebCore::URLParser::parseIPv6Host):
(WebCore::URLParser::parsePort):
(WebCore::URLParser::parseHostAndPort):
(WebCore::serializeURLEncodedForm):
(WebCore::URLParser::allValuesEqual):
(WebCore::URLParser::internalValuesConsistent):
(WebCore::URLParser::incrementIteratorSkippingTabAndNewLine): Deleted.
(WebCore::URLParser::syntaxError): Deleted.
(WebCore::parseIPv4Number): Deleted.

  • platform/URLParser.h:

(WebCore::URLParser::incrementIteratorSkippingTabsAndNewlines):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

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

Merge r206454. rdar://problem/28484193

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

Merge r206444. rdar://problem/28496755

12:39 PM Changeset in webkit [206454] by Wenson Hsieh
  • 4 edits in trunk/Source/WebCore

Related videos on YouTube (and YouTube playlists) cause media controls to disappear
https://bugs.webkit.org/show_bug.cgi?id=162621
<rdar://problem/28484193>

Reviewed by Jer Noble.

Tweaks the main content media heuristic for better Now Playing behavior on YouTube by making the following
changes:

  • Remove the strict requirement for audio to be actively playing for the session to be able to show controls for the purpose of Now Playing, making it the same as our policy for the controls manager.
  • Make playback requirement restrictions apply only for the controls manager. Videos that do not autoplay will still have the correct behavior with respect to Now Playing, since we will bail in the hasEverNotifiedAboutPlaying() check.
  • Only consider the main content heuristic as preventing media controls from showing up for the purposes of the controls manager. Now Playing should instead account for this by preferring elements large enough for main content after collecting all of the candidate sessions.
  • html/HTMLMediaElement.cpp:

(WebCore::mediaElementSessionInfoForSession):
(WebCore::preferMediaControlsForCandidateSessionOverOtherCandidateSession):
(WebCore::HTMLMediaElement::updatePlayState):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canShowControlsManager):

  • platform/audio/mac/MediaSessionManagerMac.mm:

(WebCore::MediaSessionManagerMac::sessionWillBeginPlayback):

12:35 PM Changeset in webkit [206453] by Chris Dumez
  • 6 edits in trunk

Second parameter to MutationObserver.observe() should be optional
https://bugs.webkit.org/show_bug.cgi?id=162627

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

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

Source/WebCore:

Second parameter to MutationObserver.observe() should be optional:

Firefox agrees with the specification. There is no real behavior change
except that MutationObserver.prototype.observe.length is now 1 instead
of 2. Passing only one parameter will still throw a TypeError because
the Dictionary is empty. However, this parameter needs to be marked as
optional because Web IDL requires the last parameter to be optional if
it is a Dictionary.

No new tests, rebaselined existing test.

  • dom/MutationObserver.idl:

LayoutTests:

Rebaseline existing test now that the exception messages are slightly
different.

  • fast/dom/MutationObserver/observe-exceptions-expected.txt:
12:32 PM Changeset in webkit [206452] by andersca@apple.com
  • 3 edits in trunk/Tools

Turns out OptionSet.cpp wasn't added to the right target. Add it and fix the build for real.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/OptionSet.cpp:

(TestWebKitAPI::TEST):

12:26 PM Changeset in webkit [206451] by andersca@apple.com
  • 2 edits in trunk/Tools

Try to fix the GTK+ build.

  • TestWebKitAPI/Tests/WTF/OptionSet.cpp:

(TestWebKitAPI::TEST):

12:08 PM Changeset in webkit [206450] by andersca@apple.com
  • 23 edits in trunk

PlatformEvent::m_modifiers should be an OptionSet
https://bugs.webkit.org/show_bug.cgi?id=162326

Reviewed by Daniel Bates.

Source/WebCore:

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleAccessKey):

  • page/EventHandler.h:
  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::accessKeyModifiers):

  • platform/PlatformEvent.h:

(WebCore::PlatformEvent::shiftKey):
(WebCore::PlatformEvent::ctrlKey):
(WebCore::PlatformEvent::altKey):
(WebCore::PlatformEvent::metaKey):
(WebCore::PlatformEvent::modifiers):
(WebCore::PlatformEvent::PlatformEvent):

  • platform/PlatformKeyboardEvent.h:

(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::modifiersForEvent):
(WebCore::typeForEvent):

  • replay/SerializationMethods.cpp:

(JSC::EncodingTraits<PlatformKeyboardEvent>::encodeValue):
(JSC::EncodingTraits<PlatformKeyboardEvent>::decodeValue):

  • replay/WebInputs.json:

Source/WebKit2:

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
(WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):
(WebKit::WebKit2PlatformKeyboardEvent::WebKit2PlatformKeyboardEvent):
(WebKit::WebKit2PlatformGestureEvent::WebKit2PlatformGestureEvent):

Source/WTF:

  • wtf/OptionSet.h:

(WTF::OptionSet::operator!=):
(WTF::OptionSet::operator-):

11:31 AM Changeset in webkit [206449] by mitz@apple.com
  • 18 edits
    2 adds in trunk

[iOS] REGRESSION (r182126): Selection highlight and handles aren’t visible with WKSelectionGranularityCharacter
https://bugs.webkit.org/show_bug.cgi?id=162577
<rdar://problem/28481984>

Reviewed by Simon Fraser.

Source/WebKit2:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _uiTextSelectionRectViews]): Added this method in the WKTesting category, which

uses UIKit internals to get the views used for the selection highlight.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _selectionClipRect]): When selection is not confined to a form control or

content-editable element, return the null rect to indicate no clipping, rather than
clipping to the empty rect at the origin.

Tools:

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::selectionRangeViewRects): Returns null.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl: Declared new selectionRangeViewRects attribute.
  • TestRunnerShared/UIScriptContext/UIScriptContext.h:

(WTR::UIScriptContext::jsContext): Added this public accessor.

  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::selectionRangeViewRects): Generic implementation that returns null.

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::updateTestOptionsFromTestHeader): Parse the new useCharacterSelectionGranularity

option.

  • WebKitTestRunner/TestOptions.h: Added new useCharacterSelectionGranularity option.
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformCreateWebView): Set the configuration’s selectionGranularity

property based on the new option.

  • WebKitTestRunner/ios/PlatformWebViewIOS.mm:

(WTR::PlatformWebView::viewSupportsOptions): Compare selection granularity option values.

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::selectionRangeViewRects): iOS-specific implementation that calls

the new -[WKWebView _uiTextSelectionRectViews] and returns an array of view frame
dictionaries.

LayoutTests:

  • TestExpectations:
  • editing/selection/character-granularity-rect-expected.txt: Added.
  • editing/selection/character-granularity-rect.html: Added.
  • platform/ios-simulator-wk2/TestExpectations:
11:10 AM Changeset in webkit [206448] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206415. rdar://problem/28484047

11:10 AM Changeset in webkit [206447] by bshafiei@apple.com
  • 6 edits in branches/safari-602-branch/Source/WebCore

Merge r206399. rdar://problem/28457219

11:03 AM Changeset in webkit [206446] by Gustavo Noronha Silva
  • 2 edits in trunk/Source/WebCore

[GTK] Handle Wayland & X11 correctly for GST_GL
https://bugs.webkit.org/show_bug.cgi?id=162619

Reviewed by Carlos Garcia Campos.

The checks for GST_GL consider X11 and Wayland are exclusive alternatives, but it
turns out we can enable both! We need to check them independently and also include
a runtime check.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): fix checks for X11 and
Wayland to handle the case where both are enabled. Includes a runtime check.

10:58 AM Changeset in webkit [206445] by eric.carlson@apple.com
  • 14 edits in trunk/Source/WebCore

[MediaStream] Restructure MediaConstraints classes
https://bugs.webkit.org/show_bug.cgi?id=162571

Reviewed by Jer Noble.

No new tests, no functional changes.

  • Modules/mediastream/MediaConstraintsImpl.cpp:

(WebCore::MediaConstraintsImpl::initialize): Deleted, no longer used.

  • Modules/mediastream/MediaConstraintsImpl.h:
  • bindings/js/JSMediaDevicesCustom.cpp:

(WebCore::createStringConstraint): Return Optional<> instead of RefPtr<>.
(WebCore::createBooleanConstraint): Ditto.
(WebCore::createDoubleConstraint): Ditto.
(WebCore::createIntConstraint): Ditto.
(WebCore::parseMediaTrackConstraintSetForKey): Deal with above change.

  • platform/mediastream/CaptureDeviceManager.cpp:

(CaptureDeviceManager::verifyConstraintsForMediaType): Use constraints.mandatoryConstraints.filter

instead of direct enumeration.

(CaptureDeviceManager::sessionSupportsConstraint): Use downcast<>.
(CaptureDeviceManager::isSupportedFrameRate): Ditto.

  • platform/mediastream/MediaConstraints.cpp:

(WebCore::StringConstraint::find): Lose the ConstraintType parameter.
(WebCore::StringConstraint::merge): Use downcast<>.
(WebCore::FlattenedConstraint::set): Use ConstraintHolder.
(WebCore::FlattenedConstraint::merge): Ditto.
(WebCore::MediaTrackConstraintSetMap::forEach): New.
(WebCore::MediaTrackConstraintSetMap::filter): Ditto.
(WebCore::MediaTrackConstraintSetMap::isEmpty): Ditto.
(WebCore::MediaTrackConstraintSetMap::set): Ditto.
(WebCore::MediaConstraint::copy): Deleted.
(WebCore::IntConstraint::copy): Deleted.
(WebCore::DoubleConstraint::copy): Deleted.
(WebCore::BooleanConstraint::copy): Deleted.
(WebCore::StringConstraint::copy): Deleted.

  • platform/mediastream/MediaConstraints.h:

(WebCore::MediaConstraint::MediaConstraint):
(WebCore::MediaConstraint::isEmpty):
(WebCore::MediaConstraint::isMandatory):
(WebCore::MediaConstraint::merge):
(WebCore::MediaConstraint::isInt):
(WebCore::MediaConstraint::isDouble):
(WebCore::MediaConstraint::isBoolean):
(WebCore::MediaConstraint::isString):
(WebCore::MediaConstraint::dataType):
(WebCore::MediaConstraint::constraintType):
(WebCore::NumericConstraint::getMin):
(WebCore::NumericConstraint::getMax):
(WebCore::NumericConstraint::getExact):
(WebCore::NumericConstraint::getIdeal):
(WebCore::NumericConstraint::fitnessDistance):
(WebCore::NumericConstraint::validForRange):
(WebCore::NumericConstraint::find):
(WebCore::NumericConstraint::NumericConstraint):
(WebCore::NumericConstraint::innerMerge):
(WebCore::FlattenedConstraint::isEmpty):
(WebCore::FlattenedConstraint::iterator::iterator):
(WebCore::FlattenedConstraint::iterator::operator*):
(WebCore::FlattenedConstraint::iterator::operator++):
(WebCore::FlattenedConstraint::iterator::operator==):
(WebCore::FlattenedConstraint::iterator::operator!=):
(WebCore::FlattenedConstraint::begin):
(WebCore::FlattenedConstraint::end):
(WebCore::FlattenedConstraint::ConstraintHolder::create):
(WebCore::FlattenedConstraint::ConstraintHolder::~ConstraintHolder):
(WebCore::FlattenedConstraint::ConstraintHolder::constraint):
(WebCore::FlattenedConstraint::ConstraintHolder::dataType):
(WebCore::FlattenedConstraint::ConstraintHolder::constraintType):
(WebCore::FlattenedConstraint::ConstraintHolder::ConstraintHolder):
(WebCore::MediaConstraint::getMin): Deleted.
(WebCore::MediaConstraint::getMax): Deleted.
(WebCore::MediaConstraint::getExact): Deleted.
(WebCore::MediaConstraint::getIdeal): Deleted.
(WebCore::MediaConstraint::validForRange): Deleted.
(WebCore::MediaConstraint::find): Deleted.
(WebCore::MediaConstraint::fitnessDistance): Deleted.
(WebCore::MediaConstraint::type): Deleted.

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::fitnessDistance): Use downcast<>.
(WebCore::applyNumericConstraint):
(WebCore::RealtimeMediaSource::applyConstraint): Ditto.
(WebCore::RealtimeMediaSource::selectSettings): Ditto. Use constraints.mandatoryConstraints.filter

instead of direct enumeration.

(WebCore::RealtimeMediaSource::applyConstraints):
(WebCore::RealtimeMediaSource::setSampleRate): Sample rate is an int, not a double.
(WebCore::RealtimeMediaSource::setSampleSize): Sample size is also an int.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/mac/AVCaptureDeviceManager.mm:

(WebCore::AVCaptureDeviceManager::sessionSupportsConstraint): Use downcast<>.

  • platform/mock/MediaConstraintsMock.cpp:

(WebCore::isIntMediaConstraintSatisfiable): Use downcast<>.
(WebCore::isDoubleMediaConstraintSatisfiable): Ditto.
(WebCore::isBooleanMediaConstraintSatisfiable): Ditto.
(WebCore::isStringMediaConstraintSatisfiable):
(WebCore::isSatisfiable):
(WebCore::MediaConstraintsMock::verifyConstraints): Use constraints.mandatoryConstraints.filter

instead of direct enumeration.

  • platform/mock/MediaConstraintsMock.h:
  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::MockRealtimeMediaSourceCenter::createMediaStream):

10:54 AM Changeset in webkit [206444] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

Some Now Playing behavior is broken after r206315
https://bugs.webkit.org/show_bug.cgi?id=162625
<rdar://problem/28496755>

Reviewed by Jer Noble.

Reverts the part of our heuristic that disables Now Playing in active tabs in the main window.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::pageAllowsNowPlayingControls):

  • page/Page.cpp:

(WebCore::Page::setViewState):

10:33 AM Changeset in webkit [206443] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Remove an unneeded assert in InspectorOverlay.cpp
https://bugs.webkit.org/show_bug.cgi?id=162581

Reviewed by Alexey Proskuryakov.

This assertion was added to catch unknown issues, but it is firing frequently enough on certain Inspector
tests that it is causing more harm than good.

  • inspector/InspectorOverlay.cpp:

(WebCore::buildQuadObjectForCSSRegionContentClip):
(WebCore::evaluateCommandInOverlay):

10:25 AM Changeset in webkit [206442] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Unfocusing / Focusing inspector window should not change ContentView
https://bugs.webkit.org/show_bug.cgi?id=162572
<rdar://problem/28479562>

Reviewed by Brian Burg.

Improve NavigationSidebarPanel logic for coordinating selection between trees.
When tree selection changes, the most recent selection should be restored
the next time the tree is focused.

The sidebar should also handle focusing a tree for the first time, in
which no previous selection exists, and focusing a tree that has had its
previous selection filtered out (hidden).

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineDidFocus):
(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange):
Restoring the last deselected element, instead of the last selected element
only works when the selection is moving from one tree to another. When
the elements belong to the same tree the newly selected element won't
be saved until the next selection change. If the window loses and regains
the focus before then, the tree will restore the previous selection,
effectively reverting the last selection change.

10:18 AM Changeset in webkit [206441] by dbates@webkit.org
  • 2 edits in trunk/Tools

Cannot run dump-class-layout; dies with "global name 'lldb' is not defined"
https://bugs.webkit.org/show_bug.cgi?id=162585

Reviewed by Simon Fraser.

Import the lldb module into the global namespace.

Currently dump-class-layout imports the lldb Python module using the import statement
from the helper function import_lldb. The import statement imports the names of the
specified module into the scope of import_lldb(); => the names imported from this
module cannot be accessed outside the scope of import_lldb(). Other functions in
this script assume that the lldb module was imported into the global scope. We should
import the module lldb into the global scope, if it exists, so that these functions
can find it. Otherwise, we should emit a human readable error message that explains
that we failed to import the lldb module.

Also remove some unnecessary semicolon characters.

  • Scripts/dump-class-layout:

(import_lldb):

10:14 AM Changeset in webkit [206440] by jer.noble@apple.com
  • 42 edits
    10 deletes in trunk

Remove deprecated ENCRYPTED_MEDIA implementation.
https://bugs.webkit.org/show_bug.cgi?id=161010

Source/JavaScriptCore:

Reviewed by Eric Carlson.

Remove ENABLE_ENCRYPTED_MEDIA.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Reviewed by Eric Carlson.

Remove all references to the deprecated ENABLE_ENCRYPTED_MEDIA (leaving in place
the soon-to-be deprecated ENABLE_ENCRYPTED_MEDIA_V2).

  • CMakeLists.txt:
  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/objc/DOMHTMLMediaElement.h:
  • bindings/objc/DOMHTMLMediaElement.mm:

(-[DOMHTMLMediaElement canPlayType:]):
(-[DOMHTMLMediaElement canPlayType:keySystem:]): Deleted.

  • bindings/js/JSDictionary.cpp:
  • bindings/js/JSDictionary.h:
  • dom/Element.idl:
  • dom/EventNames.in:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::selectNextSourceChild):
(WebCore::exceptionCodeForMediaKeyException): Deleted.
(WebCore::HTMLMediaElement::canPlayType): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerKeyAdded): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerKeyError): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerKeyMessage): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded): Deleted.

  • html/HTMLMediaElement.h:
  • html/HTMLMediaElement.idl:
  • html/MediaError.h:
  • html/MediaError.idl:
  • html/MediaKeyError.h:
  • html/MediaKeyError.idl:
  • html/MediaKeyEvent.cpp: Removed.

(WebCore::MediaKeyEvent::MediaKeyEvent): Deleted.
(WebCore::MediaKeyEvent::~MediaKeyEvent): Deleted.
(WebCore::MediaKeyEvent::eventInterface): Deleted.

  • html/MediaKeyEvent.h: Removed.
  • html/MediaKeyEvent.idl: Removed.
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::nextBestMediaEngine):
(WebCore::MediaPlayer::generateKeyRequest): Deleted.
(WebCore::MediaPlayer::addKey): Deleted.
(WebCore::MediaPlayer::cancelKeyRequest): Deleted.
(WebCore::MediaPlayer::keyAdded): Deleted.
(WebCore::MediaPlayer::keyError): Deleted.
(WebCore::MediaPlayer::keyMessage): Deleted.
(WebCore::MediaPlayer::keyNeeded): Deleted.

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerKeyAdded): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerKeyError): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerKeyMessage): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerKeyNeeded): Deleted.

  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::addKey): Deleted.
(WebCore::MediaPlayerPrivateInterface::generateKeyRequest): Deleted.
(WebCore::MediaPlayerPrivateInterface::cancelKeyRequest): Deleted.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:

(WebCore::CDMSessionAVContentKeySession::update):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsKeySystem):
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsType): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::generateKeyRequest): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::addKey): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::cancelKeyRequest): Deleted.

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:

(WebCore::MediaPlayerPrivateQTKit::supportsType): Deleted.

  • testing/MockCDM.h:

Source/WebKit/mac:

Remove ENABLE_ENCRYPTED_MEDIA.

Reviewed by Eric Carlson.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

Reviewed by Eric Carlson.

Remove ENABLE_ENCRYPTED_MEDIA.

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

Reviewed by Eric Carlson.

Remove ENABLE_ENCRYPTED_MEDIA.

  • wtf/FeatureDefines.h:

Tools:

Reviewed by Eric Carlson.

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

Reviewed by Eric Carlson.

  • fast/events/constructors/media-key-event-constructor-expected.txt: Removed.
  • fast/events/constructors/media-key-event-constructor.html: Removed.
  • media/encrypted-media/encrypted-media-can-play-type-expected.txt: Removed.
  • media/encrypted-media/encrypted-media-can-play-type-webm-expected.txt: Removed.
  • media/encrypted-media/encrypted-media-can-play-type-webm.html: Removed.
  • media/encrypted-media/encrypted-media-can-play-type.html: Removed.
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/fast/events/constructors/media-key-event-constructor-expected.txt: Removed.
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
9:58 AM Changeset in webkit [206439] by Chris Dumez
  • 17 edits
    1 add in trunk

[WK2] Navigating to a Blob URL does not trigger a download
https://bugs.webkit.org/show_bug.cgi?id=162574

Reviewed by Darin Adler.

Source/WebKit2:

Add support for converting Blob URL loads into downloads.

  • NetworkProcess/Downloads/BlobDownloadClient.cpp:

(WebKit::BlobDownloadClient::didReceiveResponseAsync):
Make sure we return a valid suggested filename because the client side (Safari)
does not deal with empty suggested filenames. Use "unknown" by default to
match the default suggested filename of non-Blob downloads.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::startWithHandle):

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::convertHandleToDownload):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/ios/DownloadIOS.mm:

(WebKit::Download::startNetworkLoadWithHandle):

  • NetworkProcess/Downloads/mac/DownloadMac.mm:

(WebKit::Download::startNetworkLoadWithHandle):

  • NetworkProcess/Downloads/soup/DownloadSoup.cpp:

(WebKit::Download::startNetworkLoadWithHandle):

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):

  • NetworkProcess/NetworkLoad.h:

(WebKit::NetworkLoad::handle):

Tools:

Add API that tests navigating to a Blob URL and checks that that the load
properly gets converted into a download.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:

(-[BlobDownloadDelegate _downloadDidStart:]):
(-[BlobDownloadDelegate _download:didReceiveResponse:]):
(-[BlobDownloadDelegate _download:didReceiveData:]):
(-[BlobDownloadDelegate _download:decideDestinationWithSuggestedFilename:allowOverwrite:]):
(-[BlobDownloadDelegate _downloadDidFinish:]):
(-[DownloadBlobURLNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/DownloadRequestBlobURL.html: Added.

LayoutTests:

Rebaseline now that the suggested download name is "unknown" by default
for blob downloads as well.

  • fast/dom/HTMLAnchorElement/anchor-download-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt:
9:47 AM Changeset in webkit [206438] by commit-queue@webkit.org
  • 9 edits in trunk/Source

[Fetch API] Use Ref<const T> in FetchBody::m_data variant
https://bugs.webkit.org/show_bug.cgi?id=162599

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

Source/WebCore:

Covered by existing tests.

Using Ref<const T> for all variants of m_data except for FormData since FetchBody is actually creating it and may modifiy it.
Updating blob loading code path to use a const Blob& instead of a Blob&.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::FetchBody):
(WebCore::FetchBody::extract):
(WebCore::FetchBody::clone):

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::blobBody):
(WebCore::FetchBody::arrayBufferBody):
(WebCore::FetchBody::arrayBufferViewBody):

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::loadBlob):

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

(WebCore::FetchLoader::start):

  • Modules/fetch/FetchLoader.h:

Source/WTF:

Enabling to use DeferrableRefCounted<const T> by making m_refCount mutable.

  • wtf/DeferrableRefCounted.h:

(WTF::DeferrableRefCountedBase::ref):
(WTF::DeferrableRefCountedBase::derefBase):
(WTF::DeferrableRefCounted::deref):

9:33 AM WebKitGTK/Releasing edited by Michael Catanzaro
Add item to update UA versions (diff)
9:02 AM Changeset in webkit [206437] by Konstantin Tokarev
  • 7 edits in trunk

[cmake] Simplify Clang checks and prepare for compiler ID split
https://bugs.webkit.org/show_bug.cgi?id=162609

Reviewed by Michael Catanzaro.

CMake 3.x introduces separate compiler id for AppleClang, making condition
(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") inappropriate as check for
any clang version. Introduce COMPILER_IS_CLANG instead, which is also
shorter that CMAKE_CXX_COMPILER_ID comparison.

  • CMakeLists.txt:
  • Source/cmake/OptionsCommon.cmake:
  • Source/cmake/WebKitHelpers.cmake:
  • Source/cmake/OptionsEfl.cmake: Use CMAKE_COMPILER_IS_GNUCXX instead of

!Clang check because this is what was really meant here.

8:42 AM Changeset in webkit [206436] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Unreviewed typo fix

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::standardUserAgent):

7:32 AM Changeset in webkit [206435] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Clean-up CachedImage constructor
https://bugs.webkit.org/show_bug.cgi?id=162601

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

No change of behavior.
Removing an unused constructor.
Specializing one constructor for manually cached images.
Cleaning initialization of some CachedImage fields.

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImage):

  • loader/cache/CachedImage.h:
  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::addImageToCache):

6:50 AM Changeset in webkit [206434] by Michael Catanzaro
  • 4 edits in trunk

[GTK] Install binaries to pkglibexecdir rather than bindir
https://bugs.webkit.org/show_bug.cgi?id=162602

Reviewed by Carlos Garcia Campos.

Source/JavaScriptCore:

Install jsc shell to LIBEXEC_INSTALL_DIR rather than EXEC_INSTALL_DIR.

Note these locations are the same on non-GTK ports.

  • shell/CMakeLists.txt:

Tools:

Install MiniBrowser to LIBEXEC_INSTALL_DIR rather than EXEC_INSTALL_DIR.

  • MiniBrowser/gtk/CMakeLists.txt:
6:40 AM Changeset in webkit [206433] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[FreeType] Add comment further justifying use of FT_LOAD_FORCE_AUTOHINT
https://bugs.webkit.org/show_bug.cgi?id=162607

Reviewed by Martin Robinson.

  • platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:

(WebCore::FontCustomPlatformData::FontCustomPlatformData):

6:20 AM Changeset in webkit [206432] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Build fails for X11+EGL due to missing gst_gl_display_x11_new_with_display()
https://bugs.webkit.org/show_bug.cgi?id=162606

Patch by Mario Sanchez Prada <mario@endlessm.com> on 2016-09-27
Reviewed by Gustavo Noronha Silva.

Use the right check to retrieve the right instance of GstGLDisplay
depending on whether we're using GLX or EGL, not X11 or Wayland.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):

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

[GTK][EFL] imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html is failing
https://bugs.webkit.org/show_bug.cgi?id=162547

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-27
Reviewed by Michael Catanzaro.

Covered by existing tests.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::createTestingSession): Setting the underlying soupSession.

5:31 AM Changeset in webkit [206430] by Konstantin Tokarev
  • 4 edits in trunk

[cmake] Added COMPILER_IS_GCC_OR_CLANG variable to simplify conditions.
https://bugs.webkit.org/show_bug.cgi?id=162605

Reviewed by Michael Catanzaro.

  • CMakeLists.txt:
  • Source/cmake/OptionsCommon.cmake:
  • Source/cmake/WebKitHelpers.cmake:
4:46 AM Changeset in webkit [206429] by Gyuyoung Kim
  • 2 edits in trunk/Tools

[EFL] Locate color picker popup to center of window
https://bugs.webkit.org/show_bug.cgi?id=162540

Reviewed by Michael Catanzaro.

Color picker popup hasn't located in a center of main window, because
elm_win_center() function doesn't work correctly. It looks a bug.

To fix the problem, this patch uses evas_object_geometry_set() instead.

  • MiniBrowser/efl/main.c:

(_color_picker_request_cb):

4:24 AM Changeset in webkit [206428] by Michael Catanzaro
  • 2 edits in trunk/Tools

[GTK] Disable ACCELERATED_2D_CANVAS when using build-webkit
https://bugs.webkit.org/show_bug.cgi?id=162600

Reviewed by Carlos Garcia Campos.

  • Scripts/webkitperl/FeatureList.pm:
3:49 AM Changeset in webkit [206427] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit2

[GTK] Unreviewed typo fix

  • UIProcess/API/gtk/WebKitWebInspector.cpp:

(webkit_web_inspector_class_init):

2:27 AM Changeset in webkit [206426] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

[GTK] Mac defaults are used for key shortcuts on Linux
https://bugs.webkit.org/show_bug.cgi?id=162564

Don't set Mac's default keymap as a fallthrough for CodeMirror when we
are not on Mac.

Patch by Tomas Popela <tpopela@redhat.com> on 2016-09-27
Reviewed by Carlos Garcia Campos.

  • UserInterface/Test.html: Include Platform.js for the

WebInspector.Platform definition.

  • UserInterface/Views/CodeMirrorAdditions.js:
2:10 AM Changeset in webkit [206425] by Gustavo Noronha Silva
  • 3 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge 206424 - [GTK] Should check whether GDK can use GL before asking it to
https://bugs.webkit.org/show_bug.cgi?id=162598

Reviewed by Michael Catanzaro.

gdk_cairo_draw_from_gl can fail even when WebKit itself has been able to use GL (its
context creation code might be buggy, GL may have been disabled using GDK_GL=disable, …).
Unfortunately it does not have any error reporting other than a warning printed to
stderr, so we cannot fallback from it. We have to first check if GL can be used by GDK
by trying to create a context.

See https://bugzilla.redhat.com/show_bug.cgi?id=1378987

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::canGdkUseGL): decide whether GDK can use GL by
trying to create a context for a GdkWindow.
(WebKit::AcceleratedBackingStoreWayland::paint): fallback to glReadPixels if GDK cannot
use GL.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.h:
2:06 AM Changeset in webkit [206424] by Gustavo Noronha Silva
  • 3 edits in trunk/Source/WebKit2

[GTK] Should check whether GDK can use GL before asking it to
https://bugs.webkit.org/show_bug.cgi?id=162598

Reviewed by Michael Catanzaro.

gdk_cairo_draw_from_gl can fail even when WebKit itself has been able to use GL (its
context creation code might be buggy, GL may have been disabled using GDK_GL=disable, …).
Unfortunately it does not have any error reporting other than a warning printed to
stderr, so we cannot fallback from it. We have to first check if GL can be used by GDK
by trying to create a context.

See https://bugzilla.redhat.com/show_bug.cgi?id=1378987

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::canGdkUseGL): decide whether GDK can use GL by
trying to create a context for a GdkWindow.
(WebKit::AcceleratedBackingStoreWayland::paint): fallback to glReadPixels if GDK cannot
use GL.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.h:
1:47 AM Changeset in webkit [206423] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

[Fetch API] Remove ReadableStreamSource firstReadCallback
https://bugs.webkit.org/show_bug.cgi?id=162339

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

No observable change of behavior.
Removing ReadableStreamSource firstReadCallback.
This makes the enqueuing of data to happen when the stream is created.
In the future, we may want to implement doPull() to enqueue data when stream actually needs it.

  • Modules/fetch/FetchResponseSource.cpp:

(WebCore::FetchResponseSource::doPull): Introduced as we introduce pull() in ReadableStreamSource.

  • Modules/fetch/FetchResponseSource.h:
  • Modules/streams/ReadableStreamInternals.js:

(readFromReadableStreamDefaultReader): Removing firstReadCallback use.

  • Modules/streams/ReadableStreamSource.h: Renaming m_startPromise in m_promise since m_promise may store start and pull promises.

(WebCore::ReadableStreamSource::isStarting):
(WebCore::ReadableStreamSource::start):
(WebCore::ReadableStreamSource::pull): Introduced to support ReadableStreamSource pulling.
(WebCore::ReadableStreamSource::startFinished):
(WebCore::ReadableStreamSource::pullFinished): Ditto.
(WebCore::ReadableStreamSource::clean):

  • Modules/streams/ReadableStreamSource.idl: Ditto.
  • bindings/js/JSReadableStreamSourceCustom.cpp: Refactoring to use callPromiseFunction

(WebCore::startReadableStream):
(WebCore::JSReadableStreamSource::start):
(WebCore::pullReadableStream): Introduced to support ReadableStreamSource pulling.
(WebCore::JSReadableStreamSource::pull): Ditto.

  • bindings/js/WebCoreBuiltinNames.h: Removing firstReadCallback
1:10 AM Changeset in webkit [206422] by mmaxfield@apple.com
  • 5 edits
    4 adds in trunk

REGRESSION(r205883): Letterpressed text is invisible
https://bugs.webkit.org/show_bug.cgi?id=162590
Source/WebCore:

<rdar://problem/28141512>

Reviewed by Simon Fraser.

r205883 removed the last place where we use CGFonts directly in WebKit. However,
our letterpress code is sensitive to the current state of the CGContext.

Tests: fast/text/letterpress-different.html

fast/text/letterpress-paint.html

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::showLetterpressedGlyphsWithAdvances):

LayoutTests:

Reviewed by Simon Fraser.

Letterpress is only implemented on iOS, so letterpress-different.html is marked
as only passing on iOS. letterpress-paint.html makes sure that letterpressed paint
is not invisible.

  • TestExpectations:
  • fast/text/letterpress-different-expected-mismatch.html: Added.
  • fast/text/letterpress-different.html: Added.
  • fast/text/letterpress-paint-expected-mismatch.html: Added.
  • fast/text/letterpress-paint.html: Added.
  • platform/ios-simulator/TestExpectations:
12:58 AM Changeset in webkit [206421] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[Fetch API] Refactor FetchBody to use std::experimental::variant
https://bugs.webkit.org/show_bug.cgi?id=162559

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

Covered by exiting tests.

Using variant to represent the variant data types.
Adding nullptr as a specific type for default empty values and to allow clean-up.
Adding FetchBody::clone as the default copy constructor is deleted with this change.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::FetchBody):
(WebCore::FetchBody::json):
(WebCore::FetchBody::text):
(WebCore::FetchBody::consumeAsStream):
(WebCore::FetchBody::consumeArrayBuffer):
(WebCore::FetchBody::consumeArrayBufferView):
(WebCore::FetchBody::consumeText):
(WebCore::FetchBody::consumeBlob):
(WebCore::FetchBody::extractFromText):
(WebCore::FetchBody::bodyForInternalRequest):
(WebCore::FetchBody::clone):

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::blobBody):
(WebCore::FetchBody::formDataBody):
(WebCore::FetchBody::arrayBufferBody):
(WebCore::FetchBody::arrayBufferViewBody):
(WebCore::FetchBody::textBody):

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::clone):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::cloneForJS):

12:52 AM Changeset in webkit [206420] by Michael Catanzaro
  • 2 edits in trunk/Tools

PyGIWarnings printed by webkit-patch
https://bugs.webkit.org/show_bug.cgi?id=152470

Reviewed by Carlos Garcia Campos.

Update to a newer version of the keyring module, since this bug has been fixed upstream for
a while. But be careful not to update to the latest version, since it has some compatibility
breaks and requires the SecretService python module on Linux, but I couldn't figure out how
to autoinstall it successfully.

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook._install_keyring):

12:07 AM Changeset in webkit [206419] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

[EFL] Fix debug build break since r204205. Unreviewed
https://bugs.webkit.org/show_bug.cgi?id=162596

No new tests, no new behaviours.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::frameImageAtIndex):

12:03 AM Changeset in webkit [206418] by commit-queue@webkit.org
  • 3 edits in trunk/Source/ThirdParty

Fixed compilation of WOFF2 on Windows
https://bugs.webkit.org/show_bug.cgi?id=162570

Patch by Konstantin Tokarev <Konstantin Tokarev> and Vitaliy Slobodin <vitaliy.slobodin@gmail.com> on 2016-09-27
Reviewed by Alex Christensen.

  • woff2/CMakeLists.txt: Avoid passing GCC-specific flags to other

compilers.

  • woff2/src/port.h: Include assert.h.

Sep 26, 2016:

11:18 PM Changeset in webkit [206417] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.15

New tag.

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

Merge r206375. rdar://problem/28484393

11:14 PM Changeset in webkit [206415] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

If you play a youtube video from now playing after it finished in Safari, controls disappear
https://bugs.webkit.org/show_bug.cgi?id=162589
<rdar://problem/28484047>

Reviewed by Jer Noble.

Tweaks the main content heuristic slightly to remove the "mostly in mainframe" requirement in the case of Now
Playing. This was added in the case of the controls manager as an additional way to identify video elements that
should not show controls, since we relax audio and video constraints for showing videos in the controls manager,
so that a video element is prevented from showing controls on grounds of lacking audio only if it has never had
audio before. In the case of Now Playing, we have stricter requirements for videos, which must have audio, which
makes the mainframe heuristic not necessary.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canShowControlsManager):

11:10 PM Changeset in webkit [206414] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source

Versioning.

10:50 PM Changeset in webkit [206413] by timothy_horton@apple.com
  • 4 edits in trunk/Source/WebKit2

Delete some unused code from r202695
https://bugs.webkit.org/show_bug.cgi?id=162595
<rdar://problem/28343784>

Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _setIsBlankBeforeFirstNonEmptyLayout:]): Deleted.
(-[WKWebView _didFirstVisuallyNonEmptyLayoutForMainFrame]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didFirstVisuallyNonEmptyLayoutForMainFrame):
We didn't end up needing this mechanism.

9:32 PM Changeset in webkit [206412] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking css3/filters/backdrop/backdrop-filter-with-reflection* tests as flaky on Sierra WK1.
https://bugs.webkit.org/show_bug.cgi?id=162591

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
8:45 PM Changeset in webkit [206411] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Make DFGSlowPathGenerator a bit more variadic
https://bugs.webkit.org/show_bug.cgi?id=162378

Patch by Sam Weinig <sam@webkit.org> on 2016-09-26
Reviewed by Filip Pizlo.

Make the subclass of CallSlowPathGenerator that takes arguments variadic
so it can take any number of arguments. Also updates the slowPathCall helper
function to be variadic. I had to move the spill mode and exception check
requirement parameters to before the arguments since the variadic arguments
must be at the end. As a convenience, I added an overload of slowPathCall that
doesn't take spill mode and exception check requirement parameters.

  • dfg/DFGSlowPathGenerator.h:

(JSC::DFG::CallResultAndArgumentsSlowPathGenerator::CallResultAndArgumentsSlowPathGenerator):
(JSC::DFG::CallResultAndArgumentsSlowPathGenerator::unpackAndGenerate):
(JSC::DFG::slowPathCall):
(JSC::DFG::CallResultAndNoArgumentsSlowPathGenerator::CallResultAndNoArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndOneArgumentSlowPathGenerator::CallResultAndOneArgumentSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndTwoArgumentsSlowPathGenerator::CallResultAndTwoArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndThreeArgumentsSlowPathGenerator::CallResultAndThreeArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndFourArgumentsSlowPathGenerator::CallResultAndFourArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndFourArgumentsSlowPathGenerator::generateInternal): Deleted.
(JSC::DFG::CallResultAndFiveArgumentsSlowPathGenerator::CallResultAndFiveArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndFiveArgumentsSlowPathGenerator::generateInternal): Deleted.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueToInt32):
(JSC::DFG::SpeculativeJIT::compileNotifyWrite):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):

8:35 PM Changeset in webkit [206410] by mitz@apple.com
  • 6 edits in trunk/Source/WebKit2

-_webViewWebProcessDidBecomeUnresponsive: gets called when the Web process is stopped in the debugger
https://bugs.webkit.org/show_bug.cgi?id=162234

Reviewed by Sam Weinig.

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::platformIsBeingDebugged): Use the KERN_PROC sysctl to get the

process flags and check for P_TRACED.

  • UIProcess/ResponsivenessTimer.cpp:

(WebKit::ResponsivenessTimer::timerFired): Call the new client function

mayBecomeUnresponsive. If it returns false, restart the timer and bail out without
changing the responsiveness state.

  • UIProcess/ResponsivenessTimer.h: Declared new client function mayBecomeUnresponsive.
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::platformIsBeingDebugged): A generic implementation that always

returns false.

(WebKit::WebProcessProxy::mayBecomeUnresponsive): Implement this new

ResponsivenessTimer::Client function to return true unless the process is being debugged.

  • UIProcess/WebProcessProxy.h:
8:06 PM Changeset in webkit [206409] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Remove 100ms timeout for media/media-source/media-source-delaying-load-event.html to try to fix flakiness.
https://bugs.webkit.org/show_bug.cgi?id=162566

Reviewed by Alexey Proskuryakov.

  • media/media-source/media-source-delaying-load-event.html:
7:46 PM Changeset in webkit [206408] by commit-queue@webkit.org
  • 8 edits in trunk/Source/JavaScriptCore

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

This change caused LayoutTest crashes. (Requested by
ryanhaddad on #webkit).

Reverted changeset:

"Add some needed CatchScopes in code that should not throw."
https://bugs.webkit.org/show_bug.cgi?id=162584
http://trac.webkit.org/changeset/206405

6:12 PM Changeset in webkit [206407] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.14

New tag.

5:06 PM Changeset in webkit [206406] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Box Model values not updated when DOM node styles change
https://bugs.webkit.org/show_bug.cgi?id=162525

Reviewed by Brian Burg.

The Box Model section should refresh itself when the selected node's
computed style changes. This is necessary since the Styles sidebar
doesn't always refresh its sections on node changes.

  • UserInterface/Views/BoxModelDetailsSectionRow.js:

(WebInspector.BoxModelDetailsSectionRow.prototype.set nodeStyles):
Refresh metrics whenever the computed style changes.

(WebInspector.BoxModelDetailsSectionRow.prototype._getBox):
(WebInspector.BoxModelDetailsSectionRow.prototype._getComponentSuffix):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createValueElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createBoxPartElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics):
Drive-by cleanup to make this large function easier to read.
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createElement): Deleted.
Renamed createValueElement.
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaWidthElement): Deleted.
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaHeightElement): Deleted.
Combined these into a single function taking a property name (width or height).

4:56 PM Changeset in webkit [206405] by mark.lam@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

Add some needed CatchScopes in code that should not throw.
https://bugs.webkit.org/show_bug.cgi?id=162584

Reviewed by Keith Miller.

  • API/JSObjectRef.cpp:

(JSObjectSetProperty):

  • This function already handles exceptions in its own way. We're honoring this contract and catching exceptions and passing it to the handler.
  • interpreter/Interpreter.cpp:

(JSC::notifyDebuggerOfUnwinding):

  • The debugger should not be throwing any exceptions.
  • jsc.cpp:

(runJSC):

  • the buck stops here. There's no reason an exception should propagate past here.
  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::save):

  • If an exception was thrown while saving the database, there's nothing we can really do about it anyway. Just fail nicely and return false. This is in line with existing error checking code in Database::save() that returns false if it's not able to open the file to save to.
  • runtime/ExceptionHelpers.cpp:

(JSC::createError):

  • If we're not able to stringify the error value, then we'll just use the provided message as the error string. It doesn't make sense to have the Error factory throw an exception that shadows the intended exception that the client probably wants to throw (assuming that that's why the client is creating this Error object).
  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::finishCreation):

  • The existing code already RELEASE_ASSERT that no exception was thrown. Hence, it's appropriate to use a CatchScope here.
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::StackFrame::nameFromCallee):

  • The sampling profiler is doing a VMInquiry get here. It should never throw an exception. Hence, we'll just use a CatchScope and assert accordingly.
4:51 PM Changeset in webkit [206404] by Antti Koivisto
  • 5 edits
    2 adds in trunk

Setter on style element's textContent or cssText doesn't trigger style recalc
https://bugs.webkit.org/show_bug.cgi?id=160331
<rdar://problem/27609715>

Reviewed by Ryosuke Niwa and Daniel Bates.

Source/WebCore:

We would not notify the parent when text node content changed in a shadow tree.

Test: fast/shadow-dom/shadow-style-text-mutation.html

  • dom/AuthorStyleSheets.cpp:

(WebCore::AuthorStyleSheets::updateActiveStyleSheets):

Invalidate shadow root children instead of the root itself when doing full invalidation.
The invalidity bits have no meaning for non-element, non-texts.

  • dom/CharacterData.cpp:

(WebCore::CharacterData::parserAppendData):
(WebCore::CharacterData::setDataAndUpdate):
(WebCore::CharacterData::notifyParentAfterChange):

Add a helper and call it also in shadow trees.

(WebCore::CharacterData::dispatchModifiedEvent):

  • dom/CharacterData.h:

LayoutTests:

  • fast/shadow-dom/shadow-style-text-mutation-expected.html: Added.
  • fast/shadow-dom/shadow-style-text-mutation.html: Added.
4:45 PM Changeset in webkit [206403] by Antti Koivisto
  • 5 edits
    4 adds in trunk

Input elements don't work inside shadow tree
https://bugs.webkit.org/show_bug.cgi?id=160427

Reviewed by Darin Adler.

Source/WebCore:

There is a bug in ComposedTreeIterator. If the iterator is initialized with an initial state where the root
is inside a shadow tree it won't iterate into slots.

If an input element is in a shadow tree it generates narrowly scoped style updates. When RenderTreeUpdater
applies such an update the update root will be inside the shadow tree and the bug will prevent the render tree
for slotted content from updating.

Added tests for both the iterator behavior and the specific symptom with input elements.

Tests: fast/shadow-dom/composed-tree-shadow-child-subtree.html

fast/shadow-dom/input-element-in-shadow.html

  • dom/ComposedTreeIterator.cpp:

(WebCore::ComposedTreeIterator::ComposedTreeIterator):

Check and cache if the root is inside shadow tree.

(WebCore::ComposedTreeIterator::traverseNextInShadowTree):

  • dom/ComposedTreeIterator.h:

(WebCore::ComposedTreeIterator::traverseNext):

If it is, always use the shadow traversal code path.

LayoutTests:

  • fast/shadow-dom/composed-tree-shadow-child-subtree-expected.txt: Added.
  • fast/shadow-dom/composed-tree-shadow-child-subtree.html: Added.
  • fast/shadow-dom/input-element-in-shadow-expected.html: Added.
  • fast/shadow-dom/input-element-in-shadow.html: Added.
4:40 PM Changeset in webkit [206402] by Ryan Haddad
  • 2 edits in trunk/Tools

Add Sierra to the flakiness dashboard.
https://bugs.webkit.org/show_bug.cgi?id=162509

Reviewed by Alexey Proskuryakov.

  • TestResultServer/static-dashboards/builders.jsonp:
4:11 PM Changeset in webkit [206401] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Exception unwinding code should use a CatchScope instead of a ThrowScope.
https://bugs.webkit.org/show_bug.cgi?id=162583

Reviewed by Geoffrey Garen.

This is because the exception unwinding code does not throw an exception.
It only inspects the thrown exception and passes it to the appropriate handler.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::unwind):

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

3:48 PM Changeset in webkit [206400] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

Add an Option to disable the CodeCache
https://bugs.webkit.org/show_bug.cgi?id=162579

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-26
Reviewed by Geoffrey Garen.

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):
Do not use the cache if the Option is disabled.

  • runtime/Options.h:

New option to not use the code cache.

3:42 PM Changeset in webkit [206399] by Wenson Hsieh
  • 6 edits in trunk/Source/WebCore

Seeking video doesn't update seek position
https://bugs.webkit.org/show_bug.cgi?id=162575
<rdar://problem/28457219>

Reviewed by Jer Noble.

On ToT, seeking in a video causes the playhead to stutter, and does not actually update media remote's seek
position. This is partly due to how we do not update media remote with new information when beginning to respond
to remote seek commands, so media remote continues to think that a playing video is still playing despite the
user attempting to seek through it.

To fix this, we introduce timer-based guards around remote seek commands, such that a seek "gesture" begins when
we receive the first seek command and ends when no seek command has been received in a set amount of time (this
is 0.5 seconds, which is approximately what other clients around the platform use).

Also, when responding to a remote seek, perform the seek with no tolerance. This prevents the playhead from
stuttering at the end of a seek from the final requested destination of the seek to the last actually seeked
time in the video.

When beginning to seek, we must pause the media. Through existing mechanisms, this causes the media session
manager to update its Now Playing information, which informs media remote that we are no longer playing and
prevents us from stuttering. However, when ending a seek, we must also trigger an additional update to again
refresh media remote's view of the current time. This prevents a flicker when playing media after seeking.

Unit tests to be added in a follow-up due to time constraints.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::handleSeekToPlaybackPosition):
(WebCore::HTMLMediaElement::seekToPlaybackPositionEndedTimerFired):
(WebCore::HTMLMediaElement::didReceiveRemoteControlCommand):

  • html/HTMLMediaElement.h:
  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::scheduleUpdateNowPlayingInfo):
(WebCore::PlatformMediaSessionManager::sessionDidEndRemoteScrubbing):
(WebCore::PlatformMediaSessionManager::sessions): Deleted.

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

(WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary):
(WebCore::MediaSessionManagerMac::scheduleUpdateNowPlayingInfo):
(WebCore::MediaSessionManagerMac::sessionDidEndRemoteScrubbing):
(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

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

Marking media/media-document-audio-repaint.html as flaky on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=155757

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:20 PM Changeset in webkit [206397] by Chris Dumez
  • 21 edits in trunk

[WK2] BlobDownloadClient should use asynchronous IPC to decide destination path
https://bugs.webkit.org/show_bug.cgi?id=162568

Reviewed by Alex Christensen.

Source/WebCore:

Update BlobResourceHandle to wait for continueDidReceiveResponse() to be
called after it calls the client's didReceiveResponseAsync(), before
actually reading the Blob Data.

No new tests, covered by existing tests.

  • platform/network/BlobResourceHandle.cpp:

(WebCore::BlobResourceHandle::continueDidReceiveResponse):
(WebCore::BlobResourceHandle::getSizeForNext):
(WebCore::BlobResourceHandle::notifyResponseOnSuccess):
(WebCore::BlobResourceHandle::notifyResponseOnError):

Source/WebKit2:

Use DecideDestinationWithSuggestedFilenameAsync IPC to decide the destination
path in the case of Blob downloads, instead of the synchronous alternative.
To achieve this, BlobResourceHandle was updated in WebCore to properly support
asynchronous callback and BlobDownloadClient was updated to use asynchronous
callbacks. When BlobDownloadClient::didReceiveResponseAsync() is called, we
now ask the WebContent process asynchronously to decide what the destination
path should be. Then, when we later get the destination path back from the
WebContent process, we create the file on disk and call
continueDidReceiveResponse() on the BlobResourceHandle so we start getting the
blob data to write.

  • NetworkProcess/Downloads/BlobDownloadClient.cpp:

(WebKit::BlobDownloadClient::didReceiveResponseAsync):
(WebKit::BlobDownloadClient::didDecideDownloadDestination):

  • NetworkProcess/Downloads/BlobDownloadClient.h:
  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::decideDestinationWithSuggestedFilenameAsync):
(WebKit::Download::didDecideDownloadDestination):
(WebKit::Download::continueDidReceiveResponse):
(WebKit::Download::decideDestinationWithSuggestedFilename): Deleted.

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::willDecidePendingDownloadDestination):
(WebKit::DownloadManager::continueDecidePendingDownloadDestination):
(WebKit::DownloadManager::convertHandleToDownload): Deleted.

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::continueDidReceiveResponse):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::continueDecidePendingDownloadDestination):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxy.messages.in:

LayoutTests:

  • fast/dom/HTMLAnchorElement/anchor-download-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt:
  • http/tests/security/anchor-download-allow-blob-expected.txt:

Rebaseline several Blob download tests now that the "Download started"
message always comes first (as it should).

  • platform/mac-wk2/TestExpectations:

Unskip test that is no longer flaky.

2:55 PM Changeset in webkit [206396] by dbates@webkit.org
  • 4 edits in trunk/Source

Mark Ping{Handle, Load} as final
https://bugs.webkit.org/show_bug.cgi?id=162576

Reviewed by Alex Christensen.

Source/WebCore:

We should not support subclassing of a ping handle or overriding its ResourceHandleClient
callbacks because there are security/privacy implications with a ping request. We should
not encourage subclassing without careful consideration.

  • platform/network/PingHandle.h:

Source/WebKit2:

We should not support subclassing of a ping handle or overriding its NetworkDataTaskClient
callbacks because there are security/privacy implications with a ping request. We should
not encourage subclassing without careful consideration.

  • NetworkProcess/PingLoad.h:
2:51 PM Changeset in webkit [206395] by dbates@webkit.org
  • 57 edits in trunk

Rename IOS_TEXT_AUTOSIZING to TEXT_AUTOSIZING
https://bugs.webkit.org/show_bug.cgi?id=162365

Reviewed by Simon Fraser.

.:

  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake: Substitute ENABLE_TEXT_AUTOSIZING for ENABLE_IOS_TEXT_AUTOSIZING,

update the description of this feature to better describe what it does and re-order the define in the
list of defines such that it is in sorted order.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Repurpose the feature name TEXT_AUTOSIZING for the ENABLE(IOS_TEXT_AUTOSIZING)-guarded code
as this code represents WebKit's automatic text size adjustment machinery and is compiled
on both macOS and iOS.

  • Configurations/FeatureDefines.xcconfig:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSPropertyNames.in:
  • css/StyleBuilderCustom.h:
  • css/StyleResolver.cpp:

(WebCore::StyleResolver::updateFont):

  • css/StyleResolver.h:
  • css/parser/CSSParser.cpp:

(WebCore::CSSParserContext::CSSParserContext):
(WebCore::CSSParser::parseValue):

  • css/parser/CSSParser.h:
  • css/parser/CSSParserMode.h:
  • dom/Document.cpp:

(WebCore::Document::destroyRenderTree):

  • dom/Document.h:
  • editing/EditingStyle.cpp:
  • page/FrameView.cpp:

(WebCore::FrameView::layout):

  • page/Page.cpp:

(WebCore::Page::Page):

  • page/Page.h:
  • page/Settings.in:
  • platform/graphics/FontCascade.h:
  • platform/graphics/FontDescription.cpp:
  • platform/graphics/FontDescription.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::RenderBlockFlow):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderElement.cpp:
  • rendering/RenderElement.h:
  • rendering/RenderObject.cpp:
  • rendering/RenderObject.h:
  • rendering/RenderText.cpp:

(WebCore::RenderText::RenderText):

  • rendering/RenderText.h:
  • rendering/TextAutoSizing.cpp:
  • rendering/TextAutoSizing.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresLayout):

  • rendering/style/RenderStyle.h:
  • rendering/style/StyleInheritedData.cpp:

(WebCore::StyleInheritedData::StyleInheritedData):
(WebCore::StyleInheritedData::operator==):

  • rendering/style/StyleInheritedData.h:
  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator==):

  • rendering/style/StyleRareInheritedData.h:
  • rendering/style/TextSizeAdjustment.h:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setTextAutosizingEnabled):
(WebCore::InternalSettings::setTextAutosizingWindowSizeOverride):

  • testing/InternalSettings.h:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:
  • WebView/WebFrame.mm:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • DumpRenderTree/TestRunner.h:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
2:25 PM Changeset in webkit [206394] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206241. rdar://problem/28450514

2:25 PM Changeset in webkit [206393] by bshafiei@apple.com
  • 20 edits in branches/safari-602-branch/Source

Merge r206238. rdar://problem/28450514

2:11 PM Changeset in webkit [206392] by benjamin@webkit.org
  • 23 edits in trunk/Source

[JSC] Shrink the Math inline caches some more
https://bugs.webkit.org/show_bug.cgi?id=162485

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch applies some lessons learnt from op_negate
to shrink the generated asm of the previous 3 inline
caches.

In order of importance:
-We do not need to pass the pointer to ArithProfile

on the slow path. We can just get the profile out
of the Math IC.
This saves us from materializing a 64bits value
in a register before the call on the slow path.

-We can remove a bunch of mov by setting up the registers

in the way the slow path needs them.
The slow path makes a function calls with the input
as second and third arguments, and return the result in
the "return register". By using those as target when
loading/storing from the stack, we remove 3 mov per slow path.

-When performing integer add, we can set the result directly in

the output register if that does not trashes one of the input
register. This removes one mov per integer add.

The inline cache average sizes on Sunspider change as follow:
-Adds: 147.573099->131.555556 (~10%)
-Muls: 186.882353->170.991597 (~8%)
-Subs: 139.127907->121.523256 (~12%)

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

(JSC::JITAddGenerator::generateInline):
(JSC::JITAddGenerator::generateFastPath):

  • jit/JITArithmetic.cpp:

(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):

  • jit/JITInlines.h:

(JSC::JIT::callOperation): Deleted.

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

Source/WTF:

  • wtf/Bag.h:

Don't copy the arguments before initializing the nodes.

2:02 PM Changeset in webkit [206391] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: Progress: [Mac] Content in label element should be used as AXTitle or AXDescription
https://bugs.webkit.org/show_bug.cgi?id=162573

Reviewed by Chris Fleizach.

Source/WebCore:

Exposed the label element's text as the AXTitle of the progress indicator.

Test: accessibility/mac/progress-with-label-element.html

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::titleElementText):
(WebCore::AccessibilityNodeObject::title):

LayoutTests:

  • accessibility/mac/progress-with-label-element-expected.txt: Added.
  • accessibility/mac/progress-with-label-element.html: Added.
1:39 PM Changeset in webkit [206390] by Ryan Haddad
  • 16 edits in trunk/Source/WebCore

Rebaseline bindings tests after r206386.

Unreviewed test gardening.

  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
  • bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:
  • bindings/scripts/test/JS/JSTestInterface.cpp:
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
  • bindings/scripts/test/JS/JSTestNode.cpp:
  • bindings/scripts/test/JS/JSTestNondeterministic.cpp:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:
1:39 PM Changeset in webkit [206389] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/media-controls-drag-timeline-set-controls-property.html as flaky on Yosemite Debug WK2.
https://bugs.webkit.org/show_bug.cgi?id=161659

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:19 PM Changeset in webkit [206388] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore
ASSERTION FAILED: m_origin
m_type == CachedResource::MainResource

https://bugs.webkit.org/show_bug.cgi?id=162472
<rdar://problem/28431522>

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

Covered by existing tests.

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImage): Fixing the last CachedImage constructor.
Using CachedResource protected constructor.

  • loader/cache/CachedResource.h: Small clean-up.
12:55 PM Changeset in webkit [206387] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK][EFL] imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html is failing
https://bugs.webkit.org/show_bug.cgi?id=162547

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-26
Reviewed by Carlos Garcia Campos.

Covered by LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html now passing.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::createTestingSession): Setting a default Accept-Language value.

12:11 PM Changeset in webkit [206386] by mark.lam@apple.com
  • 146 edits in trunk/Source

Added RETURN_IF_EXCEPTION() macro and use it for exception checks.
https://bugs.webkit.org/show_bug.cgi?id=162521

Reviewed by Saam Barati.

Source/JavaScriptCore:

Also, where possible, if the return type is JSValue, changed the returned value
(on exception) to the empty JSValue (instead of sometimes jsUndefined, jsNull,
or the thrown exception value).

There are a few places where I had to continue to return the previously returned
value (instead of the empty JSValue) in order for tests to pass. This is needed
because there are missing exception checks that will need to be added before I
can change those to return the empty JSValue too. Identifying all the places
where those checks need to be added is beyond the scope of this patch. I will
work on adding missing exception checks in a subsequent patch.

In this patch, there is one missing exception check in replaceUsingRegExpSearch()
that was easily identified, and is necessary so that Interpreter::execute()
functions can return JSValue. I've added this missing check.

This patch has passed the JSC and layout tests.

  • dfg/DFGOperations.cpp:

(JSC::DFG::operationPutByValInternal):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • inspector/JSJavaScriptCallFrame.cpp:

(Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension):

  • interpreter/Interpreter.cpp:

(JSC::eval):
(JSC::sizeOfVarargs):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):

  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::functionsOnStack):

  • jit/JITOperations.cpp:

(JSC::getByVal):

  • jsc.cpp:

(WTF::ImpureGetter::getOwnPropertySlot):
(functionRun):
(functionRunString):
(functionLoad):
(functionLoadString):
(functionReadFile):
(functionCheckSyntax):
(functionSetRandomSeed):
(functionLoadModule):
(functionCreateBuiltin):
(functionCheckModuleSyntax):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::getByVal):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • profiler/ProfilerBytecodeSequence.cpp:

(JSC::Profiler::BytecodeSequence::addSequenceProperties):

  • profiler/ProfilerCompilation.cpp:

(JSC::Profiler::Compilation::toJS):

  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::toJS):

  • profiler/ProfilerOSRExitSite.cpp:

(JSC::Profiler::OSRExitSite::toJS):

  • profiler/ProfilerOriginStack.cpp:

(JSC::Profiler::OriginStack::toJS):

  • runtime/ArrayPrototype.cpp:

(JSC::speciesConstructArray):
(JSC::shift):
(JSC::unshift):
(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncToLocaleString):
(JSC::slowJoin):
(JSC::fastJoin):
(JSC::arrayProtoFuncJoin):
(JSC::arrayProtoFuncPop):
(JSC::arrayProtoFuncPush):
(JSC::arrayProtoFuncReverse):
(JSC::arrayProtoFuncShift):
(JSC::arrayProtoFuncSlice):
(JSC::arrayProtoFuncSplice):
(JSC::arrayProtoFuncUnShift):
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf):
(JSC::moveElements):
(JSC::arrayProtoPrivateFuncConcatMemcpy):

  • runtime/BooleanConstructor.cpp:

(JSC::constructWithBooleanConstructor):

  • runtime/CommonSlowPaths.h:

(JSC::CommonSlowPaths::opIn):

  • runtime/Completion.cpp:

(JSC::loadAndEvaluateModule):
(JSC::loadModule):

  • runtime/ConsoleObject.cpp:

(JSC::consoleProtoFuncAssert):
(JSC::consoleProtoFuncProfile):
(JSC::consoleProtoFuncProfileEnd):
(JSC::consoleProtoFuncTakeHeapSnapshot):
(JSC::consoleProtoFuncTime):
(JSC::consoleProtoFuncTimeEnd):

  • runtime/DateConstructor.cpp:

(JSC::constructDate):
(JSC::dateParse):

  • runtime/DatePrototype.cpp:

(JSC::dateProtoFuncToPrimitiveSymbol):
(JSC::dateProtoFuncToJSON):

  • runtime/ErrorConstructor.cpp:

(JSC::Interpreter::constructWithErrorConstructor):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::sanitizedToString):

  • runtime/ErrorPrototype.cpp:

(JSC::errorProtoFuncToString):

  • runtime/ExceptionScope.h:
  • runtime/FunctionConstructor.cpp:

(JSC::constructFunctionSkippingEvalEnabledCheck):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::copyToArguments):

  • runtime/GetterSetter.cpp:

(JSC::callGetter):

  • runtime/HashMapImpl.h:

(JSC::jsMapHash):
(JSC::HashMapImpl::finishCreation):
(JSC::HashMapImpl::findBucket):
(JSC::HashMapImpl::add):
(JSC::HashMapImpl::rehash):

  • runtime/InspectorInstrumentationObject.cpp:

(JSC::inspectorInstrumentationObjectLog):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::createSubclassStructure):

  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::initializeCollator):

  • runtime/IntlCollatorConstructor.cpp:

(JSC::constructIntlCollator):
(JSC::IntlCollatorConstructorFuncSupportedLocalesOf):

  • runtime/IntlCollatorPrototype.cpp:

(JSC::IntlCollatorFuncCompare):
(JSC::IntlCollatorPrototypeGetterCompare):

  • runtime/IntlDateTimeFormat.cpp:

(JSC::toDateTimeOptionsAnyDate):
(JSC::IntlDateTimeFormat::initializeDateTimeFormat):

  • runtime/IntlDateTimeFormatConstructor.cpp:

(JSC::constructIntlDateTimeFormat):
(JSC::IntlDateTimeFormatConstructorFuncSupportedLocalesOf):

  • runtime/IntlDateTimeFormatPrototype.cpp:

(JSC::IntlDateTimeFormatFuncFormatDateTime):
(JSC::IntlDateTimeFormatPrototypeGetterFormat):

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::initializeNumberFormat):

  • runtime/IntlNumberFormatConstructor.cpp:

(JSC::constructIntlNumberFormat):
(JSC::IntlNumberFormatConstructorFuncSupportedLocalesOf):

  • runtime/IntlNumberFormatPrototype.cpp:

(JSC::IntlNumberFormatFuncFormatNumber):
(JSC::IntlNumberFormatPrototypeGetterFormat):

  • runtime/IntlObject.cpp:

(JSC::intlBooleanOption):
(JSC::intlStringOption):
(JSC::intlNumberOption):
(JSC::canonicalizeLocaleList):
(JSC::supportedLocales):

  • runtime/IntlObjectInlines.h:

(JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor):

  • runtime/IteratorOperations.cpp:

(JSC::iteratorNext):
(JSC::iteratorStep):
(JSC::iteratorClose):
(JSC::iteratorForIterable):

  • runtime/IteratorOperations.h:

(JSC::forEachInIterable):

  • runtime/JSArray.cpp:

(JSC::JSArray::pop):
(JSC::JSArray::copyToArguments):

  • runtime/JSArrayBufferConstructor.cpp:

(JSC::constructArrayBuffer):

  • runtime/JSArrayBufferPrototype.cpp:

(JSC::arrayBufferProtoFuncSlice):

  • runtime/JSArrayInlines.h:

(JSC::getLength):
(JSC::toLength):

  • runtime/JSBoundFunction.cpp:

(JSC::getBoundFunctionStructure):
(JSC::JSBoundFunction::create):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::putToPrimitive):
(JSC::JSValue::toStringSlowCase):

  • runtime/JSCJSValueInlines.h:

(JSC::toPreferredPrimitiveType):
(JSC::JSValue::getPropertySlot):
(JSC::JSValue::equalSlowCaseInline):

  • runtime/JSDataViewPrototype.cpp:

(JSC::getData):
(JSC::setData):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::setFunctionName):

  • runtime/JSGenericTypedArrayView.h:

(JSC::JSGenericTypedArrayView::setIndex):

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::constructGenericTypedArrayViewFromIterator):
(JSC::constructGenericTypedArrayViewWithArguments):
(JSC::constructGenericTypedArrayView):

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::speciesConstruct):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncCopyWithin):
(JSC::genericTypedArrayViewProtoFuncIncludes):
(JSC::genericTypedArrayViewProtoFuncIndexOf):
(JSC::genericTypedArrayViewProtoFuncJoin):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):

  • runtime/JSGlobalObject.h:

(JSC::constructEmptyArray):
(JSC::constructArray):
(JSC::constructArrayNegativeIndexed):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::instantiateDeclarations):

  • runtime/JSONObject.cpp:

(JSC::Stringifier::stringify):
(JSC::Stringifier::toJSON):
(JSC::Stringifier::appendStringifiedValue):
(JSC::Stringifier::Holder::appendNextProperty):
(JSC::Walker::walk):
(JSC::JSONProtoFuncParse):

  • runtime/JSObject.cpp:

(JSC::ordinarySetSlow):
(JSC::JSObject::setPrototypeWithCycleCheck):
(JSC::callToPrimitiveFunction):
(JSC::JSObject::defaultHasInstance):
(JSC::JSObject::getPropertyNames):
(JSC::JSObject::toNumber):
(JSC::JSObject::toString):
(JSC::JSObject::defineOwnNonIndexProperty):
(JSC::JSObject::getGenericPropertyNames):
(JSC::JSObject::getMethod):

  • runtime/JSObjectInlines.h:

(JSC::createListFromArrayLike):
(JSC::JSObject::getPropertySlot):
(JSC::JSObject::getNonIndexPropertySlot):

  • runtime/JSPromiseConstructor.cpp:

(JSC::constructPromise):

  • runtime/JSPromiseDeferred.cpp:

(JSC::JSPromiseDeferred::create):

  • runtime/JSPropertyNameEnumerator.h:

(JSC::propertyNameEnumerator):

  • runtime/JSPropertyNameIterator.cpp:

(JSC::JSPropertyNameIterator::create):

  • runtime/JSScope.cpp:

(JSC::isUnscopable):

  • runtime/JSString.cpp:

(JSC::JSString::equalSlowCase):

  • runtime/JSStringJoiner.cpp:

(JSC::JSStringJoiner::join):

  • runtime/LiteralParser.cpp:

(JSC::LiteralParser<CharType>::parse):

  • runtime/MapBase.h:

(JSC::MapBase::finishCreation):

  • runtime/MapConstructor.cpp:

(JSC::constructMap):

  • runtime/MathObject.cpp:

(JSC::mathProtoFuncClz32):
(JSC::mathProtoFuncHypot):
(JSC::mathProtoFuncIMul):

  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeParseModule):
(JSC::moduleLoaderPrototypeRequestedModules):
(JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):

  • runtime/NativeErrorConstructor.cpp:

(JSC::Interpreter::constructWithNativeErrorConstructor):

  • runtime/NumberConstructor.cpp:

(JSC::constructWithNumberConstructor):

  • runtime/ObjectConstructor.cpp:

(JSC::constructObject):
(JSC::objectConstructorGetPrototypeOf):
(JSC::objectConstructorSetPrototypeOf):
(JSC::objectConstructorGetOwnPropertyDescriptor):
(JSC::objectConstructorGetOwnPropertyDescriptors):
(JSC::objectConstructorGetOwnPropertyNames):
(JSC::objectConstructorGetOwnPropertySymbols):
(JSC::objectConstructorKeys):
(JSC::ownEnumerablePropertyKeys):
(JSC::toPropertyDescriptor):
(JSC::objectConstructorDefineProperty):
(JSC::defineProperties):
(JSC::objectConstructorSeal):
(JSC::objectConstructorFreeze):
(JSC::objectConstructorIsSealed):
(JSC::objectConstructorIsFrozen):
(JSC::objectConstructorIsExtensible):
(JSC::ownPropertyKeys):

  • runtime/ObjectConstructor.h:

(JSC::constructObjectFromPropertyDescriptor):

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncHasOwnProperty):
(JSC::objectProtoFuncIsPrototypeOf):
(JSC::objectProtoFuncDefineGetter):
(JSC::objectProtoFuncDefineSetter):
(JSC::objectProtoFuncLookupGetter):
(JSC::objectProtoFuncLookupSetter):
(JSC::objectProtoFuncPropertyIsEnumerable):
(JSC::objectProtoFuncToLocaleString):
(JSC::objectProtoFuncToString):

  • runtime/Operations.cpp:

(JSC::jsAddSlowCase):

  • runtime/PropertyDescriptor.cpp:

(JSC::PropertyDescriptor::slowGetterSetter):

  • runtime/ProxyConstructor.cpp:

(JSC::makeRevocableProxy):

  • runtime/ProxyObject.cpp:

(JSC::performProxyGet):
(JSC::ProxyObject::performGet):
(JSC::ProxyObject::performInternalMethodGetOwnProperty):
(JSC::ProxyObject::performHasProperty):
(JSC::ProxyObject::performPut):
(JSC::ProxyObject::putByIndexCommon):
(JSC::performProxyCall):
(JSC::performProxyConstruct):
(JSC::ProxyObject::performDelete):
(JSC::ProxyObject::performPreventExtensions):
(JSC::ProxyObject::performIsExtensible):
(JSC::ProxyObject::performDefineOwnProperty):
(JSC::ProxyObject::performGetOwnPropertyNames):
(JSC::ProxyObject::performSetPrototype):
(JSC::ProxyObject::performGetPrototype):

  • runtime/ReflectObject.cpp:

(JSC::reflectObjectConstruct):
(JSC::reflectObjectDefineProperty):
(JSC::reflectObjectGet):
(JSC::reflectObjectGetOwnPropertyDescriptor):
(JSC::reflectObjectIsExtensible):
(JSC::reflectObjectPreventExtensions):
(JSC::reflectObjectSet):
(JSC::reflectObjectSetPrototypeOf):

  • runtime/RegExpConstructor.cpp:

(JSC::toFlags):
(JSC::regExpCreate):
(JSC::constructRegExp):

  • runtime/RegExpConstructor.h:

(JSC::isRegExp):

  • runtime/RegExpObject.cpp:

(JSC::collectMatches):
(JSC::RegExpObject::matchGlobal):

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoFuncCompile):
(JSC::flagsString):
(JSC::regExpProtoFuncToString):
(JSC::regExpProtoGetterFlags):
(JSC::regExpProtoFuncSearchFast):
(JSC::regExpProtoFuncSplitFast):

  • runtime/SetConstructor.cpp:

(JSC::constructSet):

  • runtime/StringConstructor.cpp:

(JSC::stringFromCodePoint):
(JSC::constructWithStringConstructor):

  • runtime/StringObject.cpp:

(JSC::StringObject::defineOwnProperty):

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingRegExpSearch):
(JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
(JSC::replaceUsingStringSearch):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingRegExp):
(JSC::stringProtoFuncReplaceUsingStringSearch):
(JSC::stringProtoFuncCodePointAt):
(JSC::stringProtoFuncSlice):
(JSC::stringProtoFuncSplitFast):
(JSC::stringProtoFuncSubstr):
(JSC::stringProtoFuncSubstring):
(JSC::stringProtoFuncLocaleCompare):
(JSC::toLocaleCase):
(JSC::stringProtoFuncBig):
(JSC::stringProtoFuncSmall):
(JSC::stringProtoFuncBlink):
(JSC::stringProtoFuncBold):
(JSC::stringProtoFuncFixed):
(JSC::stringProtoFuncItalics):
(JSC::stringProtoFuncStrike):
(JSC::stringProtoFuncSub):
(JSC::stringProtoFuncSup):
(JSC::stringProtoFuncFontcolor):
(JSC::stringProtoFuncFontsize):
(JSC::stringProtoFuncAnchor):
(JSC::stringProtoFuncLink):
(JSC::trimString):
(JSC::stringProtoFuncStartsWith):
(JSC::stringProtoFuncEndsWith):
(JSC::stringIncludesImpl):
(JSC::stringProtoFuncIncludes):
(JSC::builtinStringIncludesInternal):
(JSC::stringProtoFuncNormalize):

  • runtime/SymbolConstructor.cpp:

(JSC::symbolConstructorFor):

  • runtime/TemplateRegistry.cpp:

(JSC::TemplateRegistry::getTemplateObject):

  • runtime/WeakMapConstructor.cpp:

(JSC::constructWeakMap):

  • runtime/WeakSetConstructor.cpp:

(JSC::constructWeakSet):

  • tools/JSDollarVMPrototype.cpp:

(JSC::functionPrint):

Source/WebCore:

No new tests because this patch is mostly refactoring. The only change in
behavior is that functions that have a JSValue return type will now return the
empty JSValue when an exception is thrown. I tested this behavior by running
the existing JSC and layout tests.

  • bindings/js/ArrayValue.cpp:

(WebCore::ArrayValue::get):

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::toJS):

  • bindings/js/JSApplePaySessionCustom.cpp:

(WebCore::JSApplePaySession::completeShippingMethodSelection):
(WebCore::JSApplePaySession::completeShippingContactSelection):
(WebCore::JSApplePaySession::completePaymentMethodSelection):

  • bindings/js/JSAudioTrackCustom.cpp:

(WebCore::JSAudioTrack::setKind):
(WebCore::JSAudioTrack::setLanguage):

  • bindings/js/JSBlobCustom.cpp:

(WebCore::constructJSBlob):

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::JSCSSStyleDeclaration::getPropertyCSSValue):

  • bindings/js/JSCommandLineAPIHostCustom.cpp:

(WebCore::getJSListenerFunctions):

  • bindings/js/JSCryptoAlgorithmDictionary.cpp:

(WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):
(WebCore::getHashAlgorithm):
(WebCore::createAesCbcParams):
(WebCore::createAesKeyGenParams):
(WebCore::createHmacKeyParams):
(WebCore::createRsaKeyGenParams):
(WebCore::createRsaOaepParams):

  • bindings/js/JSCryptoKeySerializationJWK.cpp:

(WebCore::getStringFromJSON):
(WebCore::JSCryptoKeySerializationJWK::reconcileUsages):
(WebCore::JSCryptoKeySerializationJWK::keyDataRSAComponents):
(WebCore::buildJSONForRSAComponents):
(WebCore::addUsagesToJSON):
(WebCore::JSCryptoKeySerializationJWK::serialize):

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):

  • bindings/js/JSCustomElementRegistryCustom.cpp:

(WebCore::getCustomElementCallback):
(WebCore::JSCustomElementRegistry::define):
(WebCore::whenDefinedPromise):

  • bindings/js/JSDOMBinding.cpp:

(WebCore::valueToUSVString):
(WebCore::hasIteratorMethod):
(WebCore::toSmallerInt):
(WebCore::toSmallerUInt):
(WebCore::toInt32EnforceRange):
(WebCore::toUInt32EnforceRange):
(WebCore::toInt64EnforceRange):
(WebCore::toUInt64EnforceRange):

  • bindings/js/JSDOMBinding.h:

(WebCore::toJSSequence):
(WebCore::toJS):
(WebCore::jsFrozenArray):

  • bindings/js/JSDOMPromise.cpp:

(WebCore::rejectPromiseWithExceptionIfAny):

  • bindings/js/JSDOMStringMapCustom.cpp:

(WebCore::JSDOMStringMap::putDelegate):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::setLocation):
(WebCore::JSDOMWindow::open):
(WebCore::JSDOMWindow::showModalDialog):
(WebCore::handlePostMessage):
(WebCore::JSDOMWindow::setTimeout):
(WebCore::JSDOMWindow::setInterval):

  • bindings/js/JSDataCueCustom.cpp:

(WebCore::constructJSDataCue):

  • bindings/js/JSDeviceMotionEventCustom.cpp:

(WebCore::readAccelerationArgument):
(WebCore::readRotationRateArgument):
(WebCore::JSDeviceMotionEvent::initDeviceMotionEvent):

  • bindings/js/JSDictionary.cpp:

(WebCore::JSDictionary::tryGetProperty):
(WebCore::JSDictionary::convertValue):

  • bindings/js/JSDictionary.h:

(WebCore::JSDictionary::tryGetPropertyAndResult):

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::JSDocument::getCSSCanvasContext):

  • bindings/js/JSFileCustom.cpp:

(WebCore::constructJSFile):

  • bindings/js/JSGeolocationCustom.cpp:

(WebCore::JSGeolocation::getCurrentPosition):
(WebCore::JSGeolocation::watchPosition):

  • bindings/js/JSHTMLAllCollectionCustom.cpp:

(WebCore::callHTMLAllCollection):

  • bindings/js/JSHTMLCanvasElementCustom.cpp:

(WebCore::JSHTMLCanvasElement::getContext):

  • bindings/js/JSHTMLElementCustom.cpp:

(WebCore::constructJSHTMLElement):

  • bindings/js/JSHistoryCustom.cpp:

(WebCore::JSHistory::pushState):
(WebCore::JSHistory::replaceState):

  • bindings/js/JSIDBDatabaseCustom.cpp:

(WebCore::JSIDBDatabase::createObjectStore):

  • bindings/js/JSMessageEventCustom.cpp:

(WebCore::handleInitMessageEvent):

  • bindings/js/JSMessagePortCustom.cpp:

(WebCore::fillMessagePortArray):

  • bindings/js/JSMessagePortCustom.h:

(WebCore::handlePostMessage):

  • bindings/js/JSMockContentFilterSettingsCustom.cpp:

(WebCore::JSMockContentFilterSettings::setDecisionPoint):
(WebCore::toDecision):
(WebCore::JSMockContentFilterSettings::setDecision):
(WebCore::JSMockContentFilterSettings::setUnblockRequestDecision):

  • bindings/js/JSNodeFilterCustom.cpp:

(WebCore::JSNodeFilter::acceptNode):

  • bindings/js/JSNodeOrString.cpp:

(WebCore::toNodeOrStringVector):

  • bindings/js/JSSQLTransactionCustom.cpp:

(WebCore::JSSQLTransaction::executeSql):

  • bindings/js/JSSVGLengthCustom.cpp:

(WebCore::JSSVGLength::convertToSpecifiedUnits):

  • bindings/js/JSStorageCustom.cpp:

(WebCore::JSStorage::getOwnPropertyNames):

  • bindings/js/JSTextTrackCustom.cpp:

(WebCore::JSTextTrack::setLanguage):

  • bindings/js/JSVideoTrackCustom.cpp:

(WebCore::JSVideoTrack::setKind):
(WebCore::JSVideoTrack::setLanguage):

  • bindings/js/JSWebGL2RenderingContextCustom.cpp:

(WebCore::JSWebGL2RenderingContext::getIndexedParameter):

  • bindings/js/JSWebGLRenderingContextBaseCustom.cpp:

(WebCore::getObjectParameter):
(WebCore::JSWebGLRenderingContextBase::getExtension):
(WebCore::JSWebGLRenderingContextBase::getFramebufferAttachmentParameter):
(WebCore::JSWebGLRenderingContextBase::getParameter):
(WebCore::JSWebGLRenderingContextBase::getProgramParameter):
(WebCore::JSWebGLRenderingContextBase::getShaderParameter):
(WebCore::toVector):
(WebCore::dataFunctionf):
(WebCore::dataFunctionMatrix):

  • bindings/js/JSWebKitSubtleCryptoCustom.cpp:

(WebCore::cryptoKeyFormatFromJSValue):
(WebCore::cryptoKeyUsagesFromJSValue):
(WebCore::JSWebKitSubtleCrypto::generateKey):
(WebCore::importKey):
(WebCore::JSWebKitSubtleCrypto::importKey):
(WebCore::exportKey):
(WebCore::JSWebKitSubtleCrypto::exportKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):

  • bindings/js/JSWorkerCustom.cpp:

(WebCore::constructJSWorker):

  • bindings/js/JSWorkerGlobalScopeCustom.cpp:

(WebCore::JSWorkerGlobalScope::importScripts):
(WebCore::JSWorkerGlobalScope::setTimeout):
(WebCore::JSWorkerGlobalScope::setInterval):

  • bindings/js/ReadableStreamDefaultController.cpp:

(WebCore::ReadableStreamDefaultController::invoke):

  • bindings/js/ScheduledAction.cpp:

(WebCore::ScheduledAction::create):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateDictionaryImplementationContent):
(GenerateImplementation):
(GenerateParametersCheck):
(GenerateImplementationFunctionCall):
(GenerateConstructorDefinition):

  • html/HTMLMediaElement.cpp:

(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
(WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):

12:09 PM Changeset in webkit [206385] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

-Wtautological-compare triggered in URLParser::internalValuesConsistent
https://bugs.webkit.org/show_bug.cgi?id=162551

Reviewed by Alex Christensen.

Fix logic error.

  • platform/URLParser.cpp:

(WebCore::URLParser::internalValuesConsistent):

11:57 AM Changeset in webkit [206384] by Konstantin Tokarev
  • 2 edits in trunk

[cmake] Added an option to disable thin archives when they are undesirable.
https://bugs.webkit.org/show_bug.cgi?id=162561

Reviewed by Michael Catanzaro.

  • Source/cmake/OptionsCommon.cmake: Added USE_THIN_ARCHIVES option.
11:57 AM Changeset in webkit [206383] by Michael Catanzaro
  • 2 edits
    1 add in trunk/Source/WebCore

Add CairoUniquePtr and use it in FontPlatformDataFreetype.cpp
https://bugs.webkit.org/show_bug.cgi?id=162557

Reviewed by Alex Christensen.

  • platform/graphics/cairo/CairoUniquePtr.h: Added.

(WebCore::CairoPtrDeleter<cairo_font_options_t>::operator()):

  • platform/graphics/freetype/FontPlatformDataFreeType.cpp:

(WebCore::getDefaultCairoFontOptions): Return a smart pointer.
(WebCore::FontPlatformData::buildScaledFont): Use smart pointer.

11:55 AM Changeset in webkit [206382] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK] TestContextMenu is failing
https://bugs.webkit.org/show_bug.cgi?id=162569

We cannot use the MP3 file in the TestContextMenu, as it will not work
by default on most distributions (that don't have an MP3 codecs
installed). Change the test to use OGG file instead.

Patch by Tomas Popela <tpopela@redhat.com> on 2016-09-26
Reviewed by Michael Catanzaro.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:

(testContextMenuDefaultMenu):

11:41 AM Changeset in webkit [206381] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Silence unused parameter warnings from Geoclue2Interface.c
https://bugs.webkit.org/show_bug.cgi?id=162545

Reviewed by Carlos Garcia Campos.

  • PlatformGTK.cmake:
11:17 AM Changeset in webkit [206380] by commit-queue@webkit.org
  • 3 edits in trunk/Source/bmalloc

Avoid implicit conversion from iterator to pointer
https://bugs.webkit.org/show_bug.cgi?id=162482

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> on 2016-09-26
Reviewed by Geoffrey Garen.

Not every STL supporting such conversion, we should get a pointer explicitly.

  • bmalloc/Chunk.h:

(bmalloc::Chunk::lines):
(bmalloc::Chunk::pages):

  • bmalloc/FixedVector.h:

(bmalloc::FixedVector::begin):

11:09 AM Changeset in webkit [206379] by Konstantin Tokarev
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Allow fixedExecutableMemoryPoolSize to be set during build
https://bugs.webkit.org/show_bug.cgi?id=162514

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2016-09-26
Reviewed by Mark Lam.

  • jit/ExecutableAllocator.h:
10:07 AM Changeset in webkit [206378] by Yusuke Suzuki
  • 2 edits in trunk/Tools

Using char16_t instead of wchar_t in TestWebKitAPI URLParser tests
https://bugs.webkit.org/show_bug.cgi?id=162537

Reviewed by Alex Christensen.

Some build bot (Linux ARM GTK port) fails since we cannot select
the specific StringBuilder::append method for wchar_t.

wchar_t implementation highly depends on platforms. sizeof(wchar_t) == 2
in Windows, while sizeof(wchar_t) == 4 in Linux and OS X. So, ICU
uses wchar_t for UChar (UTF-16) in Windows while it doesn't in other
platforms.

StringBuilder::append is overloaded for UChar. In Windows, we can pass
wchar_t since UChar is wchar_t. However, we cannot do that in other platforms.

Instead of using wchar_t, we use more platform portable UTF-16 literal for
testing. Use char16_t and C++11 UTF-16 literal.

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::utf16String):
(TestWebKitAPI::TEST_F):
(TestWebKitAPI::wideString): Deleted.

9:40 AM Changeset in webkit [206377] by Michael Catanzaro
  • 5 edits in trunk/Source

std::unique_ptr deleter functions should not check if pointer is null
https://bugs.webkit.org/show_bug.cgi?id=162558

Reviewed by Alex Christensen.

std::unique_ptr already does this before calling the deleter.

Source/WebCore:

  • platform/graphics/x11/XUniquePtr.h:

(WebCore::XPtrDeleter::operator()):
(WebCore::XPtrDeleter<XImage>::operator()):
(WebCore::XPtrDeleter<_XGC>::operator()):
(WebCore::XPtrDeleter<GLXcontextRec>::operator()):

Source/WTF:

  • wtf/efl/UniquePtrEfl.h:
  • wtf/glib/GUniquePtr.h:
8:25 AM Changeset in webkit [206376] by Michael Catanzaro
  • 5 edits in trunk/Source/WebKit2

Fix -Wformat warnings in WebLoaderStrategy
https://bugs.webkit.org/show_bug.cgi?id=162553

Reviewed by Alex Christensen.

Consistently use PRIu64 to print uint64_t

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::didReceiveResponse):
(WebKit::Download::didReceiveData):
(WebKit::Download::didFinish):
(WebKit::Download::didFail):
(WebKit::Download::didCancel):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::start):
(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::setDefersLoading):
(WebKit::NetworkResourceLoader::abort):
(WebKit::NetworkResourceLoader::didReceiveBuffer):
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::didFailLoading):
(WebKit::NetworkResourceLoader::continueWillSendRequest):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::willSendRequest):
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::didFailResourceLoad):
(WebKit::WebResourceLoader::didReceiveResource):

8:23 AM Changeset in webkit [206375] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[Win][Debug] Compile fix.
https://bugs.webkit.org/show_bug.cgi?id=162550

Reviewed by Alex Christensen.

Windows headers need the FragmentForwardIterator '==' operator in debug mode.

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::FragmentForwardIterator::operator==):

7:26 AM Changeset in webkit [206374] by commit-queue@webkit.org
  • 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

Unreviewed, relanding r206317 after typo fix.

Patch by Csaba Osztrogonác <oszi@inf.u-szeged.hu> on 2016-09-26

  • stress/string-joining-long-strings-should-not-crash.js:
7:17 AM Changeset in webkit [206373] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[GTK] Unnecessary extern functions in FontPlatformDataFreeType.cpp
https://bugs.webkit.org/show_bug.cgi?id=162555

Reviewed by Carlos Garcia Campos.

These functions should be file-static.

  • platform/graphics/freetype/FontPlatformDataFreeType.cpp:

(WebCore::convertFontConfigSubpixelOrder):
(WebCore::convertFontConfigHintStyle):
(WebCore::setCairoFontOptionsFromFontConfigPattern):

6:42 AM Changeset in webkit [206372] by Michael Catanzaro
  • 7 edits
    7 copies in trunk

Rolled over to ChangeLog-2016-09-26

5:40 AM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
4:54 AM Changeset in webkit [206371] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit2

Fix -Wformat warnings in WebLoaderStrategy
https://bugs.webkit.org/show_bug.cgi?id=162553

Unreviewed

Two of the format arguments are swapped. Fix them.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):

4:46 AM Changeset in webkit [206370] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore
ASSERTION FAILED: m_origin
m_type == CachedResource::MainResource

https://bugs.webkit.org/show_bug.cgi?id=162472
<rdar://problem/28431522>

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

No change of behavior.

Introducing a new CachedResource constructor for already loaded resources.
Sharing code with the other constructor in the init method.
The main difference with this new constructor is that the resource has no specified origin.
The response tainting remains Basic.

Making some additional code clean-up.

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImage): Making use of the new constructor.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::CachedResource):
(WebCore::CachedResource::finishRequestInitialization):

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::type):

3:20 AM Changeset in webkit [206369] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

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

Patch by Olivier Blin <Olivier Blin> on 2016-09-26
Reviewed by Philippe Normand.

GPU-GPU copy of video textures to WebGL has been added for
GStreamer in bug 159928. It did not handle textures with inverted
Y, and thus copy to such textures was not accelerated.

This occurs with THREE.js which defaults to flipY for textures.
It can be tested on http://flimshaw.github.io/Valiant360/

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

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

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
12:26 AM Changeset in webkit [206368] by bshafiei@apple.com
  • 15 edits in branches/safari-602-branch/Source

Merge r206350. rdar://problem/28115680

Sep 25, 2016:

10:35 PM Changeset in webkit [206367] by Chris Dumez
  • 9 edits in trunk/Source/WebKit2

Regression(r206356): Caused crashes for !NETWORK_SESSION code path
https://bugs.webkit.org/show_bug.cgi?id=162541

Reviewed by Alexey Proskuryakov.

After r206356, if Download is downloading a Blob instead of doing a
network load, then m_resourceHandle / m_downloadClient are used to do
the download. This broke some assumptions on Mac because the
NETWORK_SESSION code path assumed it was relying on m_download and the
!NETWORK_SESSION code path assumed it was using m_nsURLDownload /
m_delegate.

This patch refactors the code so that:

  • The Download destructor now takes care of invalidating m_resourceHandle and m_downloadClient before calling platformInvalidate(). For the SOUP code path, platformInvalidate() no longer needs to do anything because SOUP uses m_resourceHandle / m_downloadClient only. For the Mac !NETWORK_SESSION code path, we keep invalidating m_nsURLDownload / m_delegate but we no longer assume that those are initialized (given that they are not when downloading a blob). Other platforms do nothing in platformInvalidate() at the moment.
  • Download::cancel() now takes care of cancelling the download if we're downloading a blob. Otherwise, we call the platform specific cancelNetworkLoad(). This is the same pattern that is used for start() / startNetworkLoad().
  • NetworkProcess/Downloads/BlobDownloadClient.cpp:

(WebKit::BlobDownloadClient::didCancel):

  • NetworkProcess/Downloads/BlobDownloadClient.h:
  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::~Download):
(WebKit::Download::cancel):

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:

(WebKit::Download::cancelNetworkLoad):
(WebKit::Download::cancel): Deleted.

  • NetworkProcess/Downloads/ios/DownloadIOS.mm:

(WebKit::Download::cancelNetworkLoad):
(WebKit::Download::cancel): Deleted.

  • NetworkProcess/Downloads/mac/DownloadMac.mm:

(WebKit::Download::cancelNetworkLoad):
(WebKit::Download::platformInvalidate):
(WebKit::Download::cancel): Deleted.

  • NetworkProcess/Downloads/soup/DownloadSoup.cpp:

(WebKit::Download::cancelNetworkLoad):
(WebKit::Download::platformInvalidate):
(WebKit::Download::cancel): Deleted.

8:57 PM Changeset in webkit [206366] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unviewed, skip slow web-platform test in Debug builds

The following test is slow and frequently times out for Debug builds:
imported/w3c/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm

8:22 PM Changeset in webkit [206365] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark fast/dom/HTMLAnchorElement/anchor-download.html as flaky on WK2.

  • platform/mac-wk2/TestExpectations:
8:22 PM Changeset in webkit [206364] by Gyuyoung Kim
  • 2 edits in trunk/Tools

[EFL] Adjust EFL indentation to EFL MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=162542

Unreviewed, EFL simple coding style fix.

Some functions wasn't applied EFL coding style in prefix fix.

  • MiniBrowser/efl/main.c:

(_key_down_cb):
(view_focus_set):
(_mouse_down_cb):
(title_set):
(_title_changed_cb):
(_url_changed_cb):
(_back_forward_list_changed_cb):
(_progress_cb):
(_error_cb):
(_download_request_cb):
(close_file_picker):
(_filepicker_parent_deletion_cb):
(_filepicker_deletion_cb):
(_fileselector_done_cb):
(_file_chooser_request_cb):
(_download_finished_cb):
(_download_failed_cb):
(_color_changed_cb):
(_color_item_selected_cb):
(_color_picker_ok_clicked_cb):
(_color_picker_cancel_clicked_cb):
(_color_picker_dismiss_cb):
(_color_picker_request_cb):
(quit):
(has_scheme):
(url_from_user_input):
(url_load_from_user_input):
(_url_bar_activated_cb):
(_url_bar_clicked_cb):
(_search_field_aborted_cb):
(_search_field_activated_cb):
(_search_field_clicked_cb):
(_back_button_clicked_cb):
(_forward_button_clicked_cb):
(_search_backward_button_clicked_cb):
(_search_forward_button_clicked_cb):
(_search_case_option_changed):
(_search_word_start_option_changed_cb):
(_search_close_button_clicked_cb):
(_refresh_button_clicked_cb):
(_stop_button_clicked_cb):
(list_item_label_get):
(_list_item_select_cb):
(navigation_button_longpress_process):
(_forward_button_longpress_cb):
(_back_button_longpress_cb):
(quit_event_loop):
(_ok_clicked_cb):
(_file_entry_dialog_show):

10:28 AM Changeset in webkit [206363] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION (r203437): DOM not updated when editing Box Model values (border, margin, etc)
https://bugs.webkit.org/show_bug.cgi?id=162522
<rdar://problem/28458203>

Reviewed by Brian Burg.

  • UserInterface/Views/BoxModelDetailsSectionRow.js:

(WebInspector.BoxModelDetailsSectionRow.prototype._refresh):
(WebInspector.BoxModelDetailsSectionRow.prototype._highlightDOMNode):
(WebInspector.BoxModelDetailsSectionRow.prototype._editingEnded):
Drive-by style fix for delete. Also removed unused properties.
(WebInspector.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.toggleInlineStyleProperty):
Use priority "important" instead of "!important".

9:45 AM Changeset in webkit [206362] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[GTK] German translation update
https://bugs.webkit.org/show_bug.cgi?id=152228

Patch by Benedikt M. Thoma <gnome@thomba.net> on 2016-09-25
Rubber-stamped by Michael Catanzaro.

  • de.po:
6:32 AM Changeset in webkit [206361] by Antti Koivisto
  • 22 edits in trunk/Source

AuthorStyleSheets shouldn't trigger synchronous style resolutions
https://bugs.webkit.org/show_bug.cgi?id=162532

Reviewed by Darin Adler.

Source/WebCore:

AuthorStyleSheets::didChange() took four different enum values, two of which triggered
a synchronous style resolution. This is almost always unnecessary as any subsequent
call that requires up-to-date style or layout will perform it. In the few cases where
it is actually needed the client can just do it manually.

The patch also replaces the remaining two enum values with functions:

void didChangeCandidatesForActiveSet();
void didChangeContentsOrInterpretation();

The first indicates that the set of active stylesheets might have changed and needs to be recomputed.
The seconds one indicates that either the content of some stylesheet has changed or that the environment
where we interpret the sheets has somehow changed.

The existing "AsNeeded" values map to didChangeCandidatesForActiveSet() and the rest map to
didChangeContentsOrInterpretation(). This also makes it obvious that some call sites use the wrong value.
The patch doesn't address these cases.

  • css/CSSStyleSheet.cpp:

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

  • dom/AuthorStyleSheets.cpp:

(WebCore::AuthorStyleSheets::AuthorStyleSheets):
(WebCore::AuthorStyleSheets::analyzeStyleSheetChange):
(WebCore::AuthorStyleSheets::updateActiveStyleSheets):
(WebCore::AuthorStyleSheets::flushPendingChanges):
(WebCore::AuthorStyleSheets::scheduleActiveSetChange):
(WebCore::AuthorStyleSheets::didChange):
(WebCore::AuthorStyleSheets::pendingChangeTimerFired):
(WebCore::AuthorStyleSheets::flushPendingUpdates): Deleted.
(WebCore::AuthorStyleSheets::scheduleOptimizedUpdate): Deleted.
(WebCore::AuthorStyleSheets::optimizedUpdateTimerFired): Deleted.

  • dom/AuthorStyleSheets.h:

(WebCore::AuthorStyleSheets::hasPendingUpdate):

  • dom/Document.cpp:

(WebCore::Document::setContentLanguage):
(WebCore::Document::recalcStyle):
(WebCore::Document::updateStyleIfNeeded):
(WebCore::Document::updateLayoutIgnorePendingStylesheets):
(WebCore::Document::didRemoveAllPendingStylesheet):
(WebCore::Document::usesStyleBasedEditability):
(WebCore::Document::processHttpEquiv):
(WebCore::Document::setSelectedStylesheetSet):

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

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

Source/WebKit/mac:

  • WebView/WebHTMLView.mm:

(-[WebHTMLView reapplyStyles]):
(-[WebHTMLView _setPrinting:minimumPageLogicalWidth:logicalHeight:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustViewSize:paginateScreenContent:]):

12:01 AM Changeset in webkit [206360] by Yusuke Suzuki
  • 6 edits in trunk/Source/WebCore

Unreviewed, update results of DOM binding tests after r206354.
https://bugs.webkit.org/show_bug.cgi?id=162503

Update results of DOM binding tests. After r206354, setDOMException takes
ThrowScope as its second argument.

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

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

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

(WebCore::JSTestNamedConstructorNamedConstructor::construct):

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

(WebCore::jsTestNondeterministicNondeterministicGetterExceptionAttr):
(WebCore::setJSTestNondeterministicNondeterministicSetterExceptionAttr):

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

(WebCore::jsTestObjAttrWithGetterException):
(WebCore::jsTestObjAttrWithGetterExceptionWithMessage):
(WebCore::jsTestObjStringAttrWithGetterException):
(WebCore::jsTestObjWithScriptStateAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::jsTestObjNullableStringValue):
(WebCore::setJSTestObjAttrWithSetterException):
(WebCore::setJSTestObjAttrWithSetterExceptionWithMessage):
(WebCore::setJSTestObjStringAttrWithSetterException):
(WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows):
(WebCore::jsTestObjPrototypeFunctionMethodWithException):
(WebCore::jsTestObjPrototypeFunctionMethodWithExceptionWithMessage):
(WebCore::jsTestObjPrototypeFunctionWithScriptStateVoidException):
(WebCore::jsTestObjPrototypeFunctionWithScriptStateObjException):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException):
(WebCore::jsTestObjPrototypeFunctionStringArrayFunction):
(WebCore::jsTestObjPrototypeFunctionDomStringListFunction):
(WebCore::jsTestObjPrototypeFunctionGetSVGDocument):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise):

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

(WebCore::jsTestTypedefsAttrWithGetterException):
(WebCore::jsTestTypedefsStringAttrWithGetterException):
(WebCore::setJSTestTypedefsAttrWithSetterException):
(WebCore::setJSTestTypedefsStringAttrWithSetterException):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction2):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithException):

Sep 24, 2016:

11:37 PM Changeset in webkit [206359] by Chris Dumez
  • 6 edits
    2 adds in trunk

REGRESSION (r206221): [USER] com.apple.WebKit.WebContent.Development at com.apple.JavaScriptCore: vmEntryToJavaScript + 299
https://bugs.webkit.org/show_bug.cgi?id=162536
<rdar://problem/28415971>

Reviewed by Gavin Barraclough.

Source/JavaScriptCore:

Drop API on PropertySlot for setting a cacheable custom getter/setter
given that this is not supported yet and will lead to crashes if used.

  • runtime/PropertySlot.h:

(JSC::PropertySlot::isCacheableCustom):
(JSC::PropertySlot::isCacheableCustomAccessor): Deleted.
(JSC::PropertySlot::setCacheableCustomGetterSetter): Deleted.

Source/WebCore:

Stop marking cross-origin Window/Location objects properties as cacheable
given that we do not support yet caching of such properties. This is because
they are using the new CustomAccesstor PropertySlot type, which is not handled
yet by Repatch.cpp. Performance is anyway not critical for cross-origin
Window / Location properties.

Test: http/tests/security/cross-origin-window-property-caching-crash.html

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::getOwnPropertySlotDelegate):

LayoutTests:

Add layout test coverage.

  • http/tests/security/cross-origin-window-property-caching-crash-expected.txt: Added.
  • http/tests/security/cross-origin-window-property-caching-crash.html: Added.
10:08 PM Changeset in webkit [206358] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

[WK2] Enable support for 'download' attribute on anchor elements
https://bugs.webkit.org/show_bug.cgi?id=162535

Reviewed by Darin Adler.

Enable support for 'download' attribute on anchor elements for WebKit2
now that:

  • It works with our NETWORK_SESSION code path (Bug 162531)
  • Supports Blob / Data URLs (Bug 156099)
  • Requires user interaction / ignores synthetic clicks (Bug 156099)
  • Shared/WebPreferencesDefinitions.h:
8:17 PM Changeset in webkit [206357] by Chris Dumez
  • 3 edits
    2 adds in trunk

REGRESSION (r205524): Crash under WTF::numGraphemeClusters()
https://bugs.webkit.org/show_bug.cgi?id=162534
<rdar://problem/28463828>

Reviewed by David Kilzer.

Source/WebCore:

We were constructing a StringView from a temporary String and then passing it to
WTF::numGraphemeClusters().

Test: fast/dom/HTMLInputElement/handleBeforeTextInsertedEvent-crash.html

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::handleBeforeTextInsertedEvent):

LayoutTests:

Add layout test coverage.

  • fast/dom/HTMLInputElement/handleBeforeTextInsertedEvent-crash-expected.txt: Added.
  • fast/dom/HTMLInputElement/handleBeforeTextInsertedEvent-crash.html: Added.
7:39 PM Changeset in webkit [206356] by Chris Dumez
  • 22 edits
    4 adds in trunk

<a download> does not support Blob URLs
https://bugs.webkit.org/show_bug.cgi?id=156099
<rdar://problem/25535520>

Reviewed by Darin Adler.

Source/WebCore:

Only allow trusted events to trigger downloads for <a download>, as per:

Without this, a script could download a file to the user's disk without
any user gesture or consent, simply by calling a.click(). I have confirmed
that Firefox also ignores the click for <a download> if it is synthetic.
Chrome allows synthetic clicks to trigger downloads but I filed a bug
about it.

Test: fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

Source/WebKit2:

Add support for downloading Blob URLs to WebKit2. This should work for
all WebKit2 port. This also works in combination with the download
attribute on anchor elements. Note that the download attribute is only
enabled at runtime in the context of the layout tests for now. I'll
enable the download attribute on WK2 once I have fixed Bug 162531.

  • CMakeLists.txt:
  • NetworkProcess/Downloads/BlobDownloadClient.cpp: Added.

(WebKit::BlobDownloadClient::BlobDownloadClient):
(WebKit::BlobDownloadClient::didReceiveResponse):
(WebKit::BlobDownloadClient::didReceiveBuffer):
(WebKit::BlobDownloadClient::didFinishLoading):
(WebKit::BlobDownloadClient::didFail):

  • NetworkProcess/Downloads/BlobDownloadClient.h: Added.
  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::Download):
(WebKit::Download::start):
(WebKit::Download::didStart):
(WebKit::Download::didReceiveResponse):
(WebKit::Download::decideDestinationWithSuggestedFilename):
(WebKit::Download::~Download): Deleted.
(WebKit::Download::didReceiveData): Deleted.
(WebKit::Download::shouldDecodeSourceDataOfMIMEType): Deleted.

  • NetworkProcess/Downloads/Download.h:

(WebKit::Download::Download):
(WebKit::Download::suggestedName):
(WebKit::Download::request):

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/Downloads/ios/DownloadIOS.mm:

(WebKit::Download::startNetworkLoad):

  • NetworkProcess/Downloads/mac/DownloadMac.mm:

(WebKit::Download::startNetworkLoad):

  • NetworkProcess/Downloads/soup/DownloadSoup.cpp:

(WebKit::Download::startNetworkLoad):

  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxy.messages.in:
  • WebKit2.xcodeproj/project.pbxproj:

LayoutTests:

Unskip / rebaseline existing tests now that <a download> supports Blob URLs.

  • TestExpectations:
  • fast/dom/HTMLAnchorElement/anchor-download-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt: Added.
  • fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html: Added.
  • fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt:
  • http/tests/security/anchor-download-allow-blob-expected.txt:
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
6:00 PM Changeset in webkit [206355] by Chris Dumez
  • 13 edits in trunk

[WK2] anchor.download attribute value is ignored by NETWORK_SESSION code path
https://bugs.webkit.org/show_bug.cgi?id=162531

Reviewed by Darin Adler.

Source/WebKit2:

Pipe the suggested filename through in the NETWORK_SESSION code path so
that it is used when deciding the destination path.

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::PendingDownload):

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/NetworkDataTask.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::setSuggestedFilename):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTask::suggestedFilename):
(WebKit::NetworkDataTask::setSuggestedFilename):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]):

Tools:

Update decideDestinationWithSuggestedFilename() to return a actual file path
instead of nullptr. The NETWORK_SESSION code path cancels the download when
decideDestinationWithSuggestedFilename() returns an empty file path, unlike
the !NETWORK_SESSION code path that just continue downloading without
explicitely setting a destination path. This lead to different test results
for NETWORK_SESSION and !NETWORK_SESSION code paths. Returns a valid
destination path makes more sense and leads to consistent results.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::decideDestinationWithSuggestedFilename):

LayoutTests:

Unskip tests that are now passing.

  • platform/mac/TestExpectations:
5:43 PM Changeset in webkit [206354] by Yusuke Suzuki
  • 4 edits in trunk/Source/WebCore

[Binding] setDOMException should be inlined and fall to the slow path if exception occurs
https://bugs.webkit.org/show_bug.cgi?id=162503

Reviewed by Saam Barati.

Binding code emits setDOMException in critical paths. However, it is not inlined.
Since exception less frequently occurs, we should have inlined setDOMException that
early returns if it does not need to raise an exception. And it should call the exception
raising code as slow path case. This tiny optimization can offer improvement if
the DOM function is tiny and DOM binding occupies large part of it. Combined with r206338,
it offers 5% improvement in Dromaeo dom-attr getAttribute / setAttribute tests.

  • bindings/js/JSDOMBinding.cpp:

(WebCore::throwDOMException): Extract the actual exception raising code.
(WebCore::setDOMExceptionSlow): Call throwDOMException and keep it not inlined.
(WebCore::setDOMException):

  • bindings/js/JSDOMBinding.h:

(WebCore::setDOMException): Use ThrowScope& to check scope.exception().
And it has a path for normal case that allows early returning.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):
(GenerateImplementationFunctionCall):
(GenerateConstructorDefinition):

2:53 PM Changeset in webkit [206353] by caitp@igalia.com
  • 2 edits in trunk/JSTests

[JSTests] fix test262 expectations following r206333
https://bugs.webkit.org/show_bug.cgi?id=162533

Reviewed by Yusuke Suzuki.

  • test262.yaml:
6:10 AM Changeset in webkit [206352] by Antti Koivisto
  • 2 edits in trunk/Source/WebKit/mac

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

Reviewed by Andreas Kling.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView reapplyStyles]):
(-[WebHTMLView _setPrinting:minimumPageLogicalWidth:logicalHeight:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustViewSize:paginateScreenContent:]):

5:28 AM Changeset in webkit [206351] by Antti Koivisto
  • 22 edits in trunk/Source/WebCore

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

Remove StyleResolverUpdateFlag argument that was misused to indicate sync style recalc.
Clients can call updateStyleIfNeeded() directly though none of them appears to need it.

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

Note: See TracTimeline for information about the timeline view.