⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Jan 14, 2019:

10:01 PM Changeset in webkit [239975] by mmaxfield@apple.com
  • 3 edits
    4 adds in trunk/Source/WebCore

[WHLSL] Implement the Type Checker
https://bugs.webkit.org/show_bug.cgi?id=193080

Reviewed by Dean Jackson.

This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Source/Checker.mjs into C++.

The Checker passes types between nested expressions. An inner expression figures out what type it is, and
passes that information up to an outer expression. This is done via reading/writing into a HashMap,
because all the type information needs to be saved so that the Metal codegen can emit the correct types.

These types can have two forms: A regular type (like "int[]") or a ResolvableType. ResolvableTypes
represent literals, since a literal needs to know its context before it knows what type it should be. So,
if you have a function like "void foo(int x)" and you have a call like "foo(3)", the 3's ResolvableType
gets passed to the CallExpression, which then unifies it with the function's parameter type, thereby
resolving the 3 to be an int.

There are a few examples where multiple expressions will have the same type: "return (foo, 3)." If those
types are regular types, then it's no problem; we can just clone() the type and stick both in the HashMap.
However, if the type is a ResolvableType, an outer expression will only resolve that type once, so the two
ResolvableTypes can't be distinct. The Checker solves this problem by making a reference-counted wrapper
around ResolvableTypes and using that in the HashMap instead.

Once all the ResolvableTypes have been resolved, a second pass runs through the entire HashMap and assigns
the known types to all the expressions. LValues and their associated address spaces are held in a parallel
HashMap, and are assigned to the expression at the same time. The type is an Optional<AddressSpace> because
address spaces are only relevant if the value is an lvalue; if it's nullopt then that means the expression
is an rvalue.

No new tests because it isn't hooked up yet. Not enough of the compiler exists to have any meaningful sort
of test. When enough of the compiler is present, I'll port the reference implementation's test suite.

  • Modules/webgpu/WHLSL/WHLSLChecker.cpp: Added.

(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::checkSemantics):
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::Checker):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::Checker::checkShaderType):
(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::Checker::recurseAndGetInfo):
(WebCore::WHLSL::Checker::getInfo):
(WebCore::WHLSL::Checker::assignType):
(WebCore::WHLSL::Checker::forwardType):
(WebCore::WHLSL::getUnnamedType):
(WebCore::WHLSL::Checker::finishVisitingPropertyAccess):
(WebCore::WHLSL::Checker::recurseAndWrapBaseType):
(WebCore::WHLSL::Checker::isBoolType):
(WebCore::WHLSL::Checker::recurseAndRequireBoolType):
(WebCore::WHLSL::check):

  • Modules/webgpu/WHLSL/WHLSLChecker.h: Added.
  • Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp: Added.

(WebCore::WHLSL::Gatherer::Gatherer):
(WebCore::WHLSL::Gatherer::reset):
(WebCore::WHLSL::Gatherer::takeEntryPointItems):
(WebCore::WHLSL::Gatherer::visit):
(WebCore::WHLSL::gatherEntryPointItems):

  • Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h: Added.

(WebCore::WHLSL::EntryPointItem::EntryPointItem):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
9:15 PM Changeset in webkit [239974] by achristensen@apple.com
  • 6 edits in trunk/Source

Split headerValueForVary into specialized functions for NetworkProcess and WebProcess/WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=193429

Reviewed by Joseph Pecoraro.

Source/WebCore:

headerValueForVary is a strange function that is causing trouble with my NetworkProcess global state removal project.
It currently accesses the cookie storage to see if there's a match in two different ways currently written as fallbacks.
In the WebProcess or in WebKitLegacy, it uses cookiesStrategy to access cookies via IPC or directly, respectively,
depending on the PlatformStrategies implementation of cookiesStrategy for that process.
In the NetworkProcess, it uses WebCore::NetworkStorageSession to access cookies directly.
Both of these cookie accessing methods use global state in the process, and I must split them to refactor them separately.
This patch does the split by passing in the method of cookie access: a CookiesStrategy& or a NetworkStorageSession&.
Further refactoring will be done in bug 193368 and bug 161106 to build on this and replace the global state with
member variables of the correct containing objects.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::setResponse):
(WebCore::CachedResource::varyHeaderValuesMatch):

  • platform/network/CacheValidation.cpp:

(WebCore::cookieRequestHeaderFieldValue):
(WebCore::headerValueForVary):
(WebCore::collectVaryingRequestHeaders):
(WebCore::verifyVaryingRequestHeaders):

  • platform/network/CacheValidation.h:

Source/WebKit:

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::makeUseDecision):
(WebKit::NetworkCache::Cache::retrieve):
(WebKit::NetworkCache::Cache::makeEntry):
(WebKit::NetworkCache::Cache::makeRedirectEntry):
(WebKit::NetworkCache::Cache::update):

8:11 PM Changeset in webkit [239973] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

Move a test implementation file that got misplaced in the Xcode project

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
8:03 PM Changeset in webkit [239972] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Fix a style mistake in PageClientImplMac

  • UIProcess/mac/PageClientImplMac.h:

Somehow these methods ended up above the members.

7:31 PM Changeset in webkit [239971] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Only run the node comparison code in FrameSelection::respondToNodeModification() for range selections
https://bugs.webkit.org/show_bug.cgi?id=193416

Reviewed by Wenson Hsieh.

The code inside the m_selection.firstRange() clause needs to only run for non-collapsed selections, and
it shows up on Speedometer profiles so optimize to only run this code if we have a selection range.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::respondToNodeModification):

7:26 PM Changeset in webkit [239970] by Michael Catanzaro
  • 2 edits in trunk/Source/WTF

Use unorm2_normalize instead of precomposedStringWithCanonicalMapping in userVisibleString
https://bugs.webkit.org/show_bug.cgi?id=192945

Reviewed by Alex Christensen.

Replace use of the nice NSString function precomposedStringWithCanonicalMapping with the ICU
API unorm2_normalize. This is to prep the code for translation to cross-platform C++. Of
course this is much worse than the preexisting code, but this is just a transitional
measure and not the final state of the code. It wouldn't make sense to do this if the code
were to remain Objective C++.

  • wtf/cocoa/NSURLExtras.mm:

(WTF::toNormalizationFormC):
(WTF::userVisibleString):

7:01 PM Changeset in webkit [239969] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add option to JSC to dump memory footprint on script completion
https://bugs.webkit.org/show_bug.cgi?id=193422

Reviewed by Mark Lam.

Added the --footprint option to dump peak and current memory usage. This uses the same
OS calls added in r2362362.

  • jsc.cpp:

(printUsageStatement):
(CommandLine::parseArguments):
(jscmain):

6:37 PM Changeset in webkit [239968] by keith_miller@apple.com
  • 2 edits in trunk/JSTests

Skip type-check-hoisting-phase-hoist... with no jit
https://bugs.webkit.org/show_bug.cgi?id=193421

Reviewed by Mark Lam.

It's timing out the 32-bit bots and takes 330 seconds
on my machine when run by itself.

  • stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js:
6:14 PM Changeset in webkit [239967] by achristensen@apple.com
  • 5 edits in trunk

Bulgarian TLD should not punycode-encode URLs with Bulgarian Cyrillic characters
https://bugs.webkit.org/show_bug.cgi?id=193411
<rdar://problem/47215929>

Reviewed by Alexey Proskuryakov.

Source/WTF:

  • wtf/cocoa/NSURLExtras.mm:

(WTF::allCharactersAllowedByTLDRules):

LayoutTests:

  • fast/url/user-visible/cyrillic-NFD-expected.txt:
  • fast/url/user-visible/cyrillic-NFD.html:
5:51 PM Changeset in webkit [239966] by wilander@apple.com
  • 3 edits in trunk/LayoutTests

Restructure http/tests/resourceLoadStatistics/remove-blocking-in-redirect.html to address flakiness
https://bugs.webkit.org/show_bug.cgi?id=191211
<rdar://problem/45818606>

Unreviewed test gardening.

This test is flaky on the MacOS WK2 bot. The patch avoids a page navigation and
redirect which may avoid the code that changed in
https://trac.webkit.org/changeset/237735/webkit and made the test more flaky.

  • http/tests/resourceLoadStatistics/remove-blocking-in-redirect-expected.txt:
  • http/tests/resourceLoadStatistics/remove-blocking-in-redirect.html:
5:31 PM Changeset in webkit [239965] by Simon Fraser
  • 12 edits in trunk

Animation and other code is too aggressive about invalidating layer composition
https://bugs.webkit.org/show_bug.cgi?id=193343

Reviewed by Antoine Quint.

Source/WebCore:

We used to have the concept of a "SyntheticStyleChange", which was used to trigger
style updates for animation, and also to get compositing updated.

That morphed into a call to Element::invalidateStyleAndLayerComposition(), which causes
a style update to result in a "RecompositeLayer" diff, which in turn triggers compositing work,
and dirties DOM touch event regions (which can be expensive to update).

However, not all the callers of Element::invalidateStyleAndLayerComposition() need to trigger
compositing, and doing so from animations caused excessive touch event regions on yahoo.com,
which has several visibility:hidden elements with background-position animation.

So fix callers of invalidateStyleAndLayerComposition() which don't care about compositing to instead
call just invalidateStyle().

Also fix KeyframeAnimation::animate to correctly return true when animation state changes—it failed to
do so, because fireAnimationEventsIfNeeded() can run the state machine and change state.

  • animation/KeyframeEffect.cpp:

(WebCore::invalidateElement):

  • page/animation/AnimationBase.cpp:

(WebCore::AnimationBase::setNeedsStyleRecalc):

  • page/animation/CSSAnimationController.cpp:

(WebCore::CSSAnimationControllerPrivate::updateAnimations):
(WebCore::CSSAnimationControllerPrivate::fireEventsAndUpdateStyle):
(WebCore::CSSAnimationControllerPrivate::pauseAnimationAtTime):
(WebCore::CSSAnimationControllerPrivate::pauseTransitionAtTime):
(WebCore::CSSAnimationController::cancelAnimations):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::animate):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::imageChanged):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects const):

  • rendering/svg/SVGResourcesCache.cpp:

(WebCore::SVGResourcesCache::clientStyleChanged):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate):

  • svg/SVGAnimateElementBase.cpp:

(WebCore::applyCSSPropertyToTarget):
(WebCore::removeCSSPropertyFromTarget):

LayoutTests:

This test was clobbering the 'box' class on the animating element and therefore making it disappear.

  • legacy-animation-engine/compositing/animation/animation-compositing.html:
5:26 PM Changeset in webkit [239964] by yusukesuzuki@slowstart.org
  • 4 edits
    1 add in trunk

[JSC] AI should check the given constant's array type when folding GetByVal into constant
https://bugs.webkit.org/show_bug.cgi?id=193413
<rdar://problem/46092389>

Reviewed by Keith Miller.

JSTests:

This test is super flaky. It causes crash in r238109, but it does not crash with --useConcurrentJIT=false.
It does not cause any crashes on the latest revision too. Basically, it highly depends on the timing, and
without this patch, the root cause is not fixed yet. If GetLocal is turned into JSConstant in AI,
but GetByVal does not have appropriate ArrayModes, JSC crashes.

  • stress/ai-should-perform-array-check-on-get-by-val-constant-folding.js: Added.

(compareArray):

Source/JavaScriptCore:

If GetByVal's DFG::ArrayMode's type is Array::Double, we expect that the result of GetByVal is Double, since we already performed CheckStructure or CheckArray
to ensure this array type. But this assumption on the given value becomes wrong in AI, since CheckStructure may not perform filtering. And the proven AbstractValue
in GetByVal would not be expected one.

We have the graph before performing constant folding.

53:<!0:-> GetLocal(Check:Untyped:@77, JS|MustGen|UseAsOther, Array, arg2(C<Array>/FlushedCell), R:Stack(7), bc#37, ExitValid) predicting Array
54:< 1:-> JSConstant(JS|PureNum|UseAsOther|UseAsInt|ReallyWantsInt, BoolInt32, Int32: 0, bc#37, ExitValid)
93:<!0:-> CheckStructure(Cell:@53, MustGen, [%C7:Array], R:JSCell_structureID, Exits, bc#37, ExitValid)
94:< 1:-> GetButterfly(Check:Cell:@53, Storage|PureInt, R:JSObject_butterfly, Exits, bc#37, ExitValid)
55:<!0:-> GetByVal(Check:KnownCell:@53, Check:Int32:@54, Check:Untyped:@94, Double|MustGen|VarArgs|PureInt, AnyIntAsDouble|NonIntAsdouble, Double+OriginalCopyOnWriteArray+SaneChain+AsIs+Read, R:Butterfly_publicLength,IndexedDoubleProperties, Exits, bc#37, ExitValid) predicting StringIdent|NonIntAsdouble

And 53 is converted to JSConstant in the constant folding. It leads to constant folding attempt in GetByVal.

53:< 1:-> JSConstant(JS|UseAsOther, Array, Weak:Object: 0x117fb4370 with butterfly 0x8000e4050 (Structure %BV:Array), StructureID: 104, bc#37, ExitValid)
54:< 1:-> JSConstant(JS|PureNum|UseAsOther|UseAsInt|ReallyWantsInt, BoolInt32, Int32: 0, bc#37, ExitValid)
93:<!0:-> CheckStructure(Cell:@53, MustGen, [%C7:Array], R:JSCell_structureID, Exits, bc#37, ExitValid)
94:< 1:-> GetButterfly(Check:Cell:@53, Storage|PureInt, R:JSObject_butterfly, Exits, bc#37, ExitValid)
55:<!0:-> GetByVal(Check:KnownCell:@53, Check:Int32:@54, Check:Untyped:@94, Double|MustGen|VarArgs|PureInt, AnyIntAsDouble|NonIntAsdouble, Double+OriginalCopyOnWriteArray+SaneChain+AsIs+Read, R:Butterfly_publicLength,IndexedDoubleProperties, Exits, bc#37, ExitValid) predicting StringIdent|NonIntAsdouble

GetByVal gets constant Array from @53, and attempt to perform constant folding by leverating CoW state: if the given array's butterfly is CoW and we performed CoW array check for this GetByVal, the array would not be changed as long as the check works.
However, CheckStructure for @53 does not filter anything at AI. So, if @53 is CopyOnWrite | Contiguous array (not CopyOnWrite | Double array!), GetByVal will get a JSValue. But it does not meet the requirement of GetByVal since it has Double Array mode, and says it returns Double.
Here, CheckStructure is valid because structure of the constant object would be changed. What we should do is additional CoW & ArrayShape check in GetByVal when folding since this node leverages CoW's interesting feature,
"If CoW array check (CheckStructure etc.) is emitted by GetByVal's DFG::ArrayMode, the content is not changed from the creation!".

This patch adds ArrayShape check in addition to CoW status check in GetByVal.

Unfortunately, this crash is very flaky. In the above case, if @53 stays GetLocal after the constant folding phase, this issue does not occur. We can see this crash in r238109, but it is really hard to reproduce it in the current ToT.
I verified this fix works in r238109 with the attached test.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGAbstractValue.cpp:

(JSC::DFG::AbstractValue::fixTypeForRepresentation):

4:55 PM Changeset in webkit [239963] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Remove reporting for mach lookups confirmed in-use
https://bugs.webkit.org/show_bug.cgi?id=193415
<rdar://problem/47266542>

Reviewed by Brent Fulgham.

Also, start denying the services which have not been confirmed to be in use.

  • WebProcess/com.apple.WebProcess.sb.in:
4:49 PM Changeset in webkit [239962] by Alan Coon
  • 7 edits in tags/Safari-607.1.20.2/Source

Versioning.

4:39 PM Changeset in webkit [239961] by Caio Lima
  • 3 edits
    1 add in trunk

[BigInt] Literal parsing is crashing when used inside a Object Literal
https://bugs.webkit.org/show_bug.cgi?id=193404

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/big-int-literal-inside-literal-object.js: Added.

Source/JavaScriptCore:

Former implementation was relying into token.m_data.radix after the
call of next() into Parser.cpp. This is not safe because next
clobbers token.m_data.radix in some cases (e.g is CLOSEBRACE).
Now we get radix value before calling next() into parser and store
in a local variable.

  • parser/Parser.cpp:

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

4:19 PM Changeset in webkit [239960] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

IndexedDB: When deleting databases, some open databases might be missed
https://bugs.webkit.org/show_bug.cgi?id=193090

Reviewed by Brady Eidson.

We should close all databases with an open backing store instead of looking at which ones have an open database
connection. This is because a database might be in the process of getting a backing store before its connection
has been created.

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesForOrigins):

4:00 PM Changeset in webkit [239959] by commit-queue@webkit.org
  • 19 edits
    1 copy
    3 moves
    35 adds
    4 deletes in trunk/LayoutTests

Import current Resource-Timing WPTs
https://bugs.webkit.org/show_bug.cgi?id=193302

Patch by Charles Vazac <cvazac@akamai.com> on 2019-01-14
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/resource-timing/SyntheticResponse.py:

(main):

  • web-platform-tests/resource-timing/buffer-full-add-after-full-event-expected.txt: Added.
  • web-platform-tests/resource-timing/buffer-full-add-after-full-event.html: Added.
  • web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-expected.txt: Added.
  • web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-that-drop.html: Added.
  • web-platform-tests/resource-timing/buffer-full-add-entries-during-callback.html: Added.
  • web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt: Added.
  • web-platform-tests/resource-timing/buffer-full-add-then-clear.html: Added.
  • web-platform-tests/resource-timing/buffer-full-decrease-buffer-during-callback.html: Added.
  • web-platform-tests/resource-timing/buffer-full-increase-buffer-during-callback-expected.txt: Added.
  • web-platform-tests/resource-timing/buffer-full-increase-buffer-during-callback.html: Added.
  • web-platform-tests/resource-timing/buffer-full-inspect-buffer-during-callback-expected.txt: Added.
  • web-platform-tests/resource-timing/buffer-full-inspect-buffer-during-callback.html: Added.
  • web-platform-tests/resource-timing/buffer-full-set-to-current-buffer-expected.txt: Added.
  • web-platform-tests/resource-timing/buffer-full-set-to-current-buffer.html: Added.
  • web-platform-tests/resource-timing/buffer-full-store-and-clear-during-callback-expected.txt: Added.
  • web-platform-tests/resource-timing/buffer-full-store-and-clear-during-callback.html: Added.
  • web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt: Added.
  • web-platform-tests/resource-timing/buffer-full-then-increased.html: Added.
  • web-platform-tests/resource-timing/buffer-full-when-populate-entries-expected.txt: Added.
  • web-platform-tests/resource-timing/buffer-full-when-populate-entries.html: Added.
  • web-platform-tests/resource-timing/document-domain-no-impact-loader.sub-expected.txt: Added.
  • web-platform-tests/resource-timing/document-domain-no-impact-loader.sub.html: Added.
  • web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched.sub-expected.txt: Added.
  • web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched.sub.html: Added.
  • web-platform-tests/resource-timing/resource-timing-level1.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing.js.

(assertInvariants):
(window.onload):

  • web-platform-tests/resource-timing/resource-timing-level1.sub-expected.txt: Added.
  • web-platform-tests/resource-timing/resource-timing-level1.sub.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing.html.
  • web-platform-tests/resource-timing/resource_connection_reuse.html:
  • web-platform-tests/resource-timing/resource_timing.worker.js:
  • web-platform-tests/resource-timing/resource_timing_buffer_full_when_populate_entries-expected.txt: Removed.
  • web-platform-tests/resource-timing/resource_timing_buffer_full_when_populate_entries.html: Removed.
  • web-platform-tests/resource-timing/resource_timing_store_and_clear_during_callback-expected.txt: Removed.
  • web-platform-tests/resource-timing/resource_timing_store_and_clear_during_callback.html: Removed.
  • web-platform-tests/resource-timing/resources/buffer-full-utilities.js: Added.

(let.appendScript):
(let.waitForNextTask):
(let.waitForEventToFire.return.new.Promise):
(let.waitForEventToFire):

  • web-platform-tests/resource-timing/resources/document-domain-no-impact.sub.html: Added.
  • web-platform-tests/resource-timing/resources/iframe-setdomain.sub.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/resource-timing/iframe-setdomain.sub.html.
  • web-platform-tests/resource-timing/resources/w3c-import.log:
  • web-platform-tests/resource-timing/resources/webperftestharness.js:

(wp_test):
(test_namespace):

  • web-platform-tests/resource-timing/resources/webperftestharnessextension.js:

(test_resource_entries):
(performance_entrylist_checker): Deleted.

  • web-platform-tests/resource-timing/single-entry-per-resource.html:
  • web-platform-tests/resource-timing/supported_resource_type.any-expected.txt: Added.
  • web-platform-tests/resource-timing/supported_resource_type.any.html: Added.
  • web-platform-tests/resource-timing/supported_resource_type.any.js: Added.

(test):

  • web-platform-tests/resource-timing/supported_resource_type.any.worker-expected.txt: Added.
  • web-platform-tests/resource-timing/supported_resource_type.any.worker.html: Added.
  • web-platform-tests/resource-timing/test_resource_timing.https-expected.txt: Added.
  • web-platform-tests/resource-timing/test_resource_timing.https.html: Added.
  • web-platform-tests/resource-timing/test_resource_timing.js:

(resource_load):

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

LayoutTests:

3:45 PM Changeset in webkit [239958] by jiewen_tan@apple.com
  • 5 edits in trunk/LayoutTests

Unreviewed, test fixes after r239852.

  • http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-u2f.https.html:
  • http/wpt/webauthn/public-key-credential-get-success-hid.https.html:
  • http/wpt/webauthn/public-key-credential-get-success-u2f.https.html:
3:24 PM Changeset in webkit [239957] by Michael Catanzaro
  • 9 edits in releases/WebKitGTK/webkit-2.22/Source

Merge r239787 - Gigacage disabling checks should handle the GIGACAGE_ALLOCATION_CAN_FAIL case properly.
https://bugs.webkit.org/show_bug.cgi?id=193292
<rdar://problem/46485450>

Reviewed by Yusuke Suzuki.

Source/bmalloc:

Previously, when GIGACAGE_ALLOCATION_CAN_FAIL is true, we allow the Gigacage to
be disabled if we fail to allocate memory for it. However, Gigacage::primitiveGigacageDisabled()
still always assumes that the Gigacage is always enabled after ensureGigacage() is
called.

This patch updates Gigacage::primitiveGigacageDisabled() to allow the Gigacage to
already be disabled if GIGACAGE_ALLOCATION_CAN_FAIL is true and wasEnabled() is
false.

In this patch, we also put the wasEnabled flag in the 0th slot of the
g_gigacageBasePtrs buffer to ensure that it is also protected against writes just
like the Gigacage base pointers.

To achieve this, we do the following:

  1. Added a reservedForFlags field in struct BasePtrs.
  2. Added a ReservedForFlagsAndNotABasePtr Gigacage::Kind.
  3. Added assertions to ensure that the BasePtrs::primitive is at the offset matching the offset computed from Gigacage::Primitive. Ditto for BasePtrs::jsValue and Gigacage::JSValue.
  4. Added assertions to ensure that Gigacage::ReservedForFlagsAndNotABasePtr is not used for fetching a Gigacage base pointer.
  5. Added RELEASE_BASSERT_NOT_REACHED() to implement such assertions in bmalloc.

No test added because this issue requires Gigacage allocation to fail in order to
manifest. I've tested it manually by modifying the code locally to force an
allocation failure.

  • bmalloc/BAssert.h:
  • bmalloc/Gigacage.cpp:

(Gigacage::ensureGigacage):
(Gigacage::primitiveGigacageDisabled):

  • bmalloc/Gigacage.h:

(Gigacage::wasEnabled):
(Gigacage::setWasEnabled):
(Gigacage::name):
(Gigacage::basePtr):
(Gigacage::size):

  • bmalloc/HeapKind.h:

(bmalloc::heapKind):

Source/JavaScriptCore:

  • runtime/VM.h:

(JSC::VM::gigacageAuxiliarySpace):

Source/WTF:

Update the USE_SYSTEM_MALLOC version of Gigacage.h to match the bmalloc version.

  • wtf/Gigacage.h:
3:24 PM Changeset in webkit [239956] by Michael Catanzaro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/bmalloc

Merge r239245 - Gigacage runway should immediately follow the primitive cage
https://bugs.webkit.org/show_bug.cgi?id=192733

Reviewed by Saam Barati.

This patch makes sure that the Gigacage runway is always
immediately after the primitive cage. Since writing outside the
primitive gigacage is likely to be more dangerous than the JSValue
cage. The ordering of the cages is still random however.

  • bmalloc/Gigacage.cpp:

(Gigacage::ensureGigacage):

3:22 PM Changeset in webkit [239955] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Event breakpoints: typing uppercase "DOM" doesn't show completions for events that start with "DOM"
https://bugs.webkit.org/show_bug.cgi?id=193384

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/EventBreakpointPopover.js:

(WI.EventBreakpointPopover.prototype.show):

2:59 PM Changeset in webkit [239954] by Alan Coon
  • 1 copy in tags/Safari-607.1.20.2

New tag.

2:52 PM Changeset in webkit [239953] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Event breakpoints: text field and completion popover fonts should match
https://bugs.webkit.org/show_bug.cgi?id=193249

Reviewed by Matt Baker.

  • UserInterface/Views/EventBreakpointPopover.css:

(.popover .event-breakpoint-content > .event-type > input): Added.
(.popover .event-breakpoint-content > .event-type > input::placeholder): Added.

  • UserInterface/Views/EventBreakpointPopover.js:

(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype._showSuggestionsView):
Subtract the <input> border and padding from the bounds position so the <input> text lines
up with the WI.CompletionSuggestionsView text.

  • UserInterface/Views/CompletionSuggestionsView.js:

(WI.CompletionSuggestionsView):
Drive-by: force dir=ltr to match the text-align: left; CSS styling.

2:51 PM Changeset in webkit [239952] by rniwa@webkit.org
  • 15 edits in trunk/Source/WebCore

Remove redundant check for alignAttr and hiddenAttr in various isPresentationAttribute overrides
https://bugs.webkit.org/show_bug.cgi?id=193410

Reviewed by Simon Fraser.

Removed redundant checks for check for alignAttr and hiddenAttr in isPresentationAttribute overrides
in HTMLElement subclasses since HTMLElement::isPresentationAttribute already checks for those attributes.

  • html/HTMLDivElement.cpp:

(WebCore::HTMLDivElement::isPresentationAttribute const): Deleted.

  • html/HTMLDivElement.h:
  • html/HTMLEmbedElement.cpp:

(WebCore::HTMLEmbedElement::isPresentationAttribute const): Deleted.

  • html/HTMLEmbedElement.h:
  • html/HTMLHRElement.cpp:

(WebCore::HTMLHRElement::isPresentationAttribute const):

  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::isPresentationAttribute const):

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::isPresentationAttribute const):

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::isPresentationAttribute const):

  • html/HTMLParagraphElement.cpp:

(WebCore::HTMLParagraphElement::isPresentationAttribute const): Deleted.

  • html/HTMLParagraphElement.h:
  • html/HTMLTableCaptionElement.cpp:

(WebCore::HTMLTableCaptionElement::isPresentationAttribute const): Deleted.

  • html/HTMLTableCaptionElement.h:
  • html/HTMLTableElement.cpp:

(WebCore::HTMLTableElement::isPresentationAttribute const):

  • html/HTMLTablePartElement.cpp:

(WebCore::HTMLTablePartElement::isPresentationAttribute const):

2:31 PM Changeset in webkit [239951] by yusukesuzuki@slowstart.org
  • 13 edits
    1 add in trunk

[JSC] Do not use asArrayModes() with Structures because it discards TypedArray information
https://bugs.webkit.org/show_bug.cgi?id=193372

Reviewed by Saam Barati.

JSTests:

  • stress/typed-array-array-modes-profile.js: Added.

(foo):

Source/JavaScriptCore:

When RegisteredStructureSet is filtered with AbstractValue, we use structure, SpeculationType, and ArrayModes.
However, we use asArrayModes() function with IndexingMode to compute the ArrayModes in AbstractValue. This is
wrong since this discards TypedArray ArrayModes. As a result, if RegisteredStructureSet with TypedArrays is
filtered with ArrayModes of AbstractValue populated from TypedArrays, we filter all the structures out since
AbstractValue's ArrayModes become NonArray, which is wrong with the TypedArrays' ArrayModes. This leads to
incorrect FTL code generation with MultiGetByOffset etc. nodes because,

  1. AI think that this MultiGetByOffset never succeeds since all the values of RegisteredStructureSet are filtered out by the AbstractValue.
  2. AI says the state of MultiGetByOffset is invalid since AI think it never succeeds.
  3. So subsequent code becomes FTL crash code since AI think the execution should do OSR exit.
  4. Then, FTL emits the code for MultiGetByOffset, and emits crash after that.
  5. But in reality, the incoming value can match to the one of the RegisteredStructureSet value since (1)'s structures are incorrectly filtered by the incorrect ArrayModes.
  6. Then, the execution goes on, and falls into the FTL crash.

This patch fixes the incorrect ArrayModes calculation by the following changes

  1. Rename asArrayModes to asArrayModesIgnoringTypedArrays.
  2. Fix incorrect asArrayModesIgnoringTypedArrays use in our code. Use arrayModesFromStructure instead.
  3. Fix OSR exit code which stores incorrect ArrayModes to the profiles.
  • bytecode/ArrayProfile.cpp:

(JSC::dumpArrayModes):
(JSC::ArrayProfile::computeUpdatedPrediction):

  • bytecode/ArrayProfile.h:

(JSC::asArrayModesIgnoringTypedArrays):
(JSC::arrayModesFromStructure):
(JSC::arrayModesIncludeIgnoringTypedArrays):
(JSC::shouldUseSlowPutArrayStorage):
(JSC::shouldUseFastArrayStorage):
(JSC::shouldUseContiguous):
(JSC::shouldUseDouble):
(JSC::shouldUseInt32):
(JSC::asArrayModes): Deleted.
(JSC::arrayModeFromStructure): Deleted.
(JSC::arrayModesInclude): Deleted.

  • dfg/DFGAbstractValue.cpp:

(JSC::DFG::AbstractValue::observeTransitions):
(JSC::DFG::AbstractValue::set):
(JSC::DFG::AbstractValue::mergeOSREntryValue):
(JSC::DFG::AbstractValue::contains const):

  • dfg/DFGAbstractValue.h:

(JSC::DFG::AbstractValue::observeTransition):
(JSC::DFG::AbstractValue::validate const):
(JSC::DFG::AbstractValue::observeIndexingTypeTransition):

  • dfg/DFGArrayMode.cpp:

(JSC::DFG::ArrayMode::fromObserved):
(JSC::DFG::ArrayMode::alreadyChecked const):

  • dfg/DFGArrayMode.h:

(JSC::DFG::ArrayMode::structureWouldPassArrayModeFiltering):
(JSC::DFG::ArrayMode::arrayModesThatPassFiltering const):
(JSC::DFG::ArrayMode::arrayModesWithIndexingShape const):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::executeOSRExit):
(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGRegisteredStructureSet.cpp:

(JSC::DFG::RegisteredStructureSet::filterArrayModes):
(JSC::DFG::RegisteredStructureSet::arrayModesFromStructures const):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

  • jit/JITInlines.h:

(JSC::JIT::chooseArrayMode):
(JSC::arrayProfileSaw): Deleted.

  • runtime/JSType.h:

(JSC::isTypedArrayType):

2:23 PM Changeset in webkit [239950] by Michael Catanzaro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WTF

Merge r239873 - WorkQueue::concurrentApply() passes a raw pointer to a temporary String to Thread::create().
https://bugs.webkit.org/show_bug.cgi?id=191350

Reviewed by Brent Fulgham.

The non COCOA version of WorkQueue::concurrentApply() creates a temporary
String for the threadName and passes the raw pointer of this String to
Thread::create(). After freeing this String, Thread::entryPoint() uses
the raw char pointer to internally initialize the thread.

The fix is to use a single literal string for all the threads' names since
they are created for a thread-pool.

  • wtf/WorkQueue.cpp:

(WTF::WorkQueue::concurrentApply):

2:23 PM Changeset in webkit [239949] by Michael Catanzaro
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.22

Merge r239642 - Parsed protocol of javascript URLs with embedded newlines and carriage returns do not match parsed protocol in Chrome and Firefox
https://bugs.webkit.org/show_bug.cgi?id=193155
<rdar://problem/40230982>

Reviewed by Chris Dumez.

Source/WebCore:

Test: fast/loader/comment-only-javascript-url.html

Make a special case for URLs beginning with 'javascript:'. We should always
treat these as JS URLs, even if the content contained within the URL
string might match other parts of the URL parsing spec.

  • html/URLUtils.h:

(WebCore::URLUtils<T>::protocol const):

LayoutTests:

  • fast/loader/comment-only-javascript-url-expected.txt: Added.
  • fast/loader/comment-only-javascript-url.html: Added.
2:19 PM Changeset in webkit [239948] by commit-queue@webkit.org
  • 49 edits in trunk

Unreviewed, rolling out r239901, r239909, r239910, r239912,
r239913, and r239914.
https://bugs.webkit.org/show_bug.cgi?id=193407

These revisions caused an internal failure (Requested by
Truitt on #webkit).

Reverted changesets:

"[Cocoa] Avoid importing directly from subumbrella frameworks"
https://bugs.webkit.org/show_bug.cgi?id=186016
https://trac.webkit.org/changeset/239901

"Tried to fix USE(APPLE_INTERNAL_SDK) builds after r239901."
https://trac.webkit.org/changeset/239909

"Tried to fix the build."
https://trac.webkit.org/changeset/239910

"Fixed iOS builds after r239910."
https://trac.webkit.org/changeset/239912

"More build fixing."
https://trac.webkit.org/changeset/239913

"Tried to fix USE(APPLE_INTERNAL_SDK) 32-bit builds."
https://trac.webkit.org/changeset/239914

2:16 PM Changeset in webkit [239947] by mark.lam@apple.com
  • 14 edits in trunk

Re-enable ability to build --cloop builds.
https://bugs.webkit.org/show_bug.cgi?id=192955
Source/JavaScriptCore:

<rdar://problem/46882363>

Reviewed by Saam barati and Keith Miller.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Reviewed by Saam barati and Keith Miller.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

<rdar://problem/46882363>

Reviewed by Saam barati and Keith Miller.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

<rdar://problem/46882363>

Reviewed by Saam barati and Keith Miller.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

<rdar://problem/46882363>

Reviewed by Saam barati and Keith Miller.

  • Configurations/FeatureDefines.xcconfig:

Tools:

<rdar://problem/46882363>

Reviewed by Saam barati and Keith Miller.

The --cloop build option was being ignored this whole time since r236381.
This patch makes it possible to build CLoop builds again.

  • Scripts/build-jsc:
  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
2:10 PM Changeset in webkit [239946] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

https://bugs.webkit.org/show_bug.cgi?id=193403
<rdar://problem/46750743>

Continue fix in r239711 by using WeakPtr in SourceBufferPrivateAVFObjC.

Reviewed by Eric Carlson.

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

(WebCore::SourceBufferPrivateAVFObjC::setCDMSession):

2:02 PM Changeset in webkit [239945] by Jonathan Bedard
  • 6 edits in trunk/Tools

webkitpy: Expose device_type from host-like objects
https://bugs.webkit.org/show_bug.cgi?id=193406
<rdar://problem/47262305>

Reviewed by Lucas Forschler.

Devices should expose device_type. As a result, all host objects should
provide a device_type property, even if they do not yet define a device_type.

  • Scripts/webkitpy/common/system/systemhost.py:

(SystemHost):
(SystemHost.device_type):

  • Scripts/webkitpy/common/system/systemhost_mock.py:

(MockSystemHost):
(MockSystemHost.device_type):

  • Scripts/webkitpy/port/device.py:

(Device):
(Device.device_type):

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager._find_exisiting_device_for_request):
(SimulatedDeviceManager._disambiguate_device_type):
(SimulatedDeviceManager._does_fulfill_request):
(SimulatedDeviceManager.device_count_for_type):
(SimulatedDeviceManager.initialize_devices):

  • Scripts/webkitpy/xcode/simulated_device_unittest.py:

(test_available_devices):
(test_swapping_devices):

1:56 PM Changeset in webkit [239944] by Justin Fan
  • 8 edits in trunk

[WebGPU] Map WebGPUBindGroupLayoutBindings from the BindGroupLayoutDescriptor for error checking and later referencing
https://bugs.webkit.org/show_bug.cgi?id=193405

Reviewed by Dean Jackson.

Source/WebCore:

When creating a WebGPUBindGroupLayout, cache the WebGPUBindGroupLayoutDescriptor's list of BindGroupLayoutBindings
in a HashMap, keyed by binding number, for quick reference during the WebGPUProgrammablePassEncoder::setBindGroups
implementation to follow. Also add error-checking e.g. detecting duplicate binding numbers in the same WebGPUBindGroupLayout
and non-existent binding numbers when creating the WebGPUBindGroup.

No new tests. BindGroups and BindGroupLayouts reflect the (canonical?) strategy of returning empty
objects upon creation failure and reporting errors elswhere. Since error reporting is not yet implemented,
the error checks aren't testable from LayoutTests right now. Expected behavior unchanged and covered by existing tests.

  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::createBindGroup const):

Number of bindings must be consistent between bindings and layout bindings.
BindGroupBindings should only refer to existing BindGroupLayoutBindings.

  • platform/graphics/gpu/GPUBindGroup.h:
  • platform/graphics/gpu/GPUBindGroupLayout.h:

(WebCore::GPUBindGroupLayout::bindingsMap const): Added. Cache map of BindGroupLayoutBindings.

  • platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm: Disallow duplicate binding numbers in BindGroupLayoutBindings.

(WebCore::GPUBindGroupLayout::tryCreate):
(WebCore::GPUBindGroupLayout::GPUBindGroupLayout):

LayoutTests:

Small fixes that do not alter behavior.

  • webgpu/bind-groups.html:
  • webgpu/pipeline-layouts.html:
1:44 PM Changeset in webkit [239943] by Alan Coon
  • 1 copy in tags/Safari-606.4.5.3.1

Tag Safari-606.4.5.3.1.

1:41 PM Changeset in webkit [239942] by Alan Coon
  • 7 edits in branches/safari-606.4.5.3-branch/Source

Versioning.

1:35 PM Changeset in webkit [239941] by Ryan Haddad
  • 2 edits in branches/safari-607-branch/Tools

Cherry-pick r239939. rdar://problem/47255372

webkitpy: Support alternate simctl device list output (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=193362
<rdar://problem/47122965>

Rubber-stamped by Lucas Forschler.

  • Scripts/webkitpy/xcode/simulated_device.py: (SimulatedDeviceManager.populate_available_devices):

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

1:34 PM Changeset in webkit [239940] by mark.lam@apple.com
  • 9 edits in trunk

Fix all CLoop JSC test failures (including some LLInt bugs due to recent bytecode format change).
https://bugs.webkit.org/show_bug.cgi?id=193402
<rdar://problem/46012309>

Reviewed by Keith Miller.

JSTests:

  • stress/regexp-compile-oom.js:
  • Skip this test for !$jitTests because it is tuned for stack usage when the JIT is enabled. As a result, it will fail on cloop builds though there is no bug.

Source/JavaScriptCore:

The CLoop builds via build-jsc were previously completely disabled after our
change to enable ASM LLInt build without the JIT. As a result, JSC tests have
regressed on CLoop builds. The CLoop builds and tests will be re-enabled when
the fix for https://bugs.webkit.org/show_bug.cgi?id=192955 lands. This patch
fixes all the regressions (and some old bugs) so that the CLoop test bots won't
be red when CLoop build gets re-enabled.

In this patch, we do the following:

  1. Change CLoopStack::grow() to set the new CLoop stack top at the maximum allocated capacity (after discounting the reserved zone) as opposed to setting it only at the level that the client requested.

This fixes a small performance bug that I happened to noticed when I was
debugging a stack issue. It does not affect correctness.

  1. In LowLevelInterpreter32_64.asm:
  1. Fix loadConstantOrVariableTag() to use subi for computing the constant index because the VirtualRegister offset and FirstConstantRegisterIndex values it is operating on are both signed ints. This is just to be pedantic. The previous use of subu will still produce a correct value.
  1. Fix llintOpWithReturn() to use getu (instead of get) for reading OpIsCellWithType::type because it is of type JSType, which is a uint8_t.
  1. Fix llintOpWithMetadata() to use loadis for loading OpGetById::Metadata::modeMetadata.protoLoadMode.cachedOffset[t5] because it is of type PropertyOffset, which is a signed int.
  1. Fix commonCallOp() to use getu for loading fields argv and argc because they are of type unsigned for OpCall, OpConstruct, and OpTailCall, which are the clients of commonCallOp.
  1. Fix llintOpWithMetadata() and getClosureVar() to use loadp for loading OpGetFromScope::Metadata::operand because it is of type uintptr_t.
  1. In LowLevelInterpreter64.asm:
  1. Fix llintOpWithReturn() to use getu for reading OpIsCellWithType::type because it is of type JSType, which is a uint8_t.
  1. Fix llintOpWithMetadata() to use loadi for loading OpGetById::Metadata::modeMetadata.protoLoadMode.structure[t2] because it is of type StructureID, which is a uint32_t.

Fix llintOpWithMetadata() to use loadis for loading
OpGetById::Metadata::modeMetadata.protoLoadMode.cachedOffset[t2] because it
is of type PropertyOffset, which is a signed int.

  1. commonOp() should reload the metadataTable for op_catch because unlike for the ASM LLInt, the exception unwinding code is not able to restore "callee saved registers" for the CLoop interpreter because the CLoop uses pseudo-registers (see the CLoopRegister class).

This was the source of many exotic Cloop failures after the bytecode format
change (which introduced the metadataTable callee saved register). Hence,
we fix it by reloading metadataTable's value on re-entry via op_catch for
exception handling. We already take care of restoring it in op_ret.

  1. Fix llintOpWithMetadata() and getClosureVar() to use loadp for loading OpGetFromScope::Metadata::operand because it is of type uintptr_t.
  1. In LowLevelInterpreter.asm:

Fix metadata() to use loadi for loading metadataTable offsets because they are
of type unsigned. This was also a source of many exotic CLoop test failures.

  1. Change CLoopRegister into a class with a uintptr_t as its storage element. Previously, we were using a union to convert between various value types that we would store in this pseudo-register. This method of type conversion is undefined behavior according to the C++ spec. As a result, the C++ compiler may choose to elide some CLoop statements, thereby resulting in some exotic bugs.

We fix this by now always using accessor methods and assignment operators to
ensure that we use bitwise_cast to do the type conversions. Since bitwise_cast
uses a memcpy, this ensures that there's no undefined behavior, and that CLoop
statements won't get elided willy-nilly by the compiler.

Ditto for the CloopDobleRegisters.

Similarly, use bitwise_cast for ints2Double() and double2Ints() utility
functions.

Also use bitwise_cast (instead of reinterpret_cast) for the CLoop CAST macro.

  1. Fix cloop.rb to use the new CLoopRegister and CLoopDoubleRegister classes.

Add a clLValue accessor for offlineasm operand types to distinguish
LValue use of the operands from RValue uses.

Replace the use of clearHighWord() with simply casting to uint32_t. This is
more efficient for the C++ compiler (and help speed up debug build runs).

Also fix 32-bit arithmetic operations to only set the lower 32-bit value of
the pseudo registers. This fixes some CLoop JSC test failures.

This patch has been manually tested with the JSC tests on the following builds:
64bit X86 ASM LLLint (without JIT), 64bit and 32bit X86 CLoop, and ARMv7 Cloop.

  • interpreter/CLoopStack.cpp:

(JSC::CLoopStack::grow):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter.cpp:

(JSC::CLoopRegister::i const):
(JSC::CLoopRegister::u const):
(JSC::CLoopRegister::i32 const):
(JSC::CLoopRegister::u32 const):
(JSC::CLoopRegister::i8 const):
(JSC::CLoopRegister::u8 const):
(JSC::CLoopRegister::ip const):
(JSC::CLoopRegister::i8p const):
(JSC::CLoopRegister::vp const):
(JSC::CLoopRegister::cvp const):
(JSC::CLoopRegister::callFrame const):
(JSC::CLoopRegister::execState const):
(JSC::CLoopRegister::instruction const):
(JSC::CLoopRegister::vm const):
(JSC::CLoopRegister::cell const):
(JSC::CLoopRegister::protoCallFrame const):
(JSC::CLoopRegister::nativeFunc const):
(JSC::CLoopRegister::i64 const):
(JSC::CLoopRegister::u64 const):
(JSC::CLoopRegister::encodedJSValue const):
(JSC::CLoopRegister::opcode const):
(JSC::CLoopRegister::operator ExecState*):
(JSC::CLoopRegister::operator const Instruction*):
(JSC::CLoopRegister::operator JSCell*):
(JSC::CLoopRegister::operator ProtoCallFrame*):
(JSC::CLoopRegister::operator Register*):
(JSC::CLoopRegister::operator VM*):
(JSC::CLoopRegister::operator=):
(JSC::CLoopRegister::bitsAsDouble const):
(JSC::CLoopRegister::bitsAsInt64 const):
(JSC::CLoopDoubleRegister::operator T const):
(JSC::CLoopDoubleRegister::d const):
(JSC::CLoopDoubleRegister::bitsAsInt64 const):
(JSC::CLoopDoubleRegister::operator=):
(JSC::LLInt::ints2Double):
(JSC::LLInt::double2Ints):
(JSC::LLInt::decodeResult):
(JSC::CLoop::execute):
(JSC::LLInt::Ints2Double): Deleted.
(JSC::LLInt::Double2Ints): Deleted.
(JSC::CLoopRegister::CLoopRegister): Deleted.
(JSC::CLoopRegister::clearHighWord): Deleted.

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/cloop.rb:
1:32 PM Changeset in webkit [239939] by Jonathan Bedard
  • 2 edits in trunk/Tools

webkitpy: Support alternate simctl device list output (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=193362
<rdar://problem/47122965>

Rubber-stamped by Lucas Forschler.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager.populate_available_devices):

1:27 PM Changeset in webkit [239938] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Remove unused networking entitlement from iOS WebProcess entitlements
https://bugs.webkit.org/show_bug.cgi?id=193267

Patch by Alex Christensen <achristensen@webkit.org> on 2019-01-14
Reviewed by Dean Jackson.

  • Configurations/WebContent-iOS.entitlements:

This gave access to VPN stuff. It's not needed any more.

1:17 PM Changeset in webkit [239937] by Alan Coon
  • 1 copy in branches/safari-606.4.5.3-branch

New branch.

1:13 PM Changeset in webkit [239936] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Enable MDNS ICE candidate support by default
https://bugs.webkit.org/show_bug.cgi?id=193358

Reviewed by Geoffrey Garen.

  • Shared/WebPreferences.yaml:
1:07 PM Changeset in webkit [239935] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles: pressing Down key on empty value field shouldn't discard completion popover
https://bugs.webkit.org/show_bug.cgi?id=193098
<rdar://problem/47016036>

Reviewed by Devin Rousso.

Hide CompletionSuggestionsView when SpreadsheetTextField moves, e.g. by scrolling or resizing the sidebar.
Update CompletionSuggestionsView position after pressing Up or Down key, because SpreadsheetTextField may
move from wrapping text.

  • UserInterface/Views/CompletionSuggestionsView.js:

(WI.CompletionSuggestionsView.prototype.hide):
(WI.CompletionSuggestionsView.prototype.show):
(WI.CompletionSuggestionsView.prototype.showUntilAnchorMoves): Removed.
(WI.CompletionSuggestionsView.prototype.hideWhenElementMoves): Added.
(WI.CompletionSuggestionsView.prototype._stopMoveTimer): Added.
(WI.CompletionSuggestionsView):

  • UserInterface/Views/SpreadsheetTextField.js:

(WI.SpreadsheetTextField.prototype.set suggestionHint):
(WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
(WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
(WI.SpreadsheetTextField.prototype._updateCompletions):
(WI.SpreadsheetTextField.prototype._showSuggestionsView): Added.

(WI.SpreadsheetTextField.prototype._reAttachSuggestionHint):
Drive-by: abstract out repeating code into a private method.

1:01 PM Changeset in webkit [239934] by mrajca@apple.com
  • 3 edits in trunk/Source/WebKit

Expose preference for site-specific quirks on iOS
https://bugs.webkit.org/show_bug.cgi?id=193353

Reviewed by Dean Jackson.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setNeedsSiteSpecificQuirks:]):
(-[WKPreferences _needsSiteSpecificQuirks]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
12:27 PM Changeset in webkit [239933] by keith_miller@apple.com
  • 22 edits
    3 copies
    5 adds in trunk/Source/JavaScriptCore

JSC should have a module loader API
https://bugs.webkit.org/show_bug.cgi?id=191121

Reviewed by Michael Saboff.

This patch adds a new delegate to JSContext that is called to fetch
any resolved module. The resolution of a module identifier is computed
as if it were a URL on the web with the caveat that it must be a file URL.

A new class JSScript has also been added that is similar to JSScriptRef.
Right now all JSScripts are copied into memory. In the future we should
mmap the provided file into memory so the OS can evict it to disk under
pressure. Additionally, the API does not make use of the code signing path
nor the bytecode caching path, which we will add in subsequent patches.

Lastly, a couple of new convenience methods have been added. C API
conversion, can now toRef a JSValue with just a vm rather than
requiring an ExecState. Secondly, there is now a call wrapper that
does not require CallData and CallType since many places don't
care about this.

  • API/APICast.h:

(toRef):

  • API/JSAPIGlobalObject.cpp: Copied from Source/JavaScriptCore/API/JSVirtualMachineInternal.h.
  • API/JSAPIGlobalObject.h: Added.

(JSC::JSAPIGlobalObject::create):
(JSC::JSAPIGlobalObject::createStructure):
(JSC::JSAPIGlobalObject::JSAPIGlobalObject):

  • API/JSAPIGlobalObject.mm: Added.

(JSC::JSAPIGlobalObject::moduleLoaderResolve):
(JSC::JSAPIGlobalObject::moduleLoaderImportModule):
(JSC::JSAPIGlobalObject::moduleLoaderFetch):
(JSC::JSAPIGlobalObject::moduleLoaderCreateImportMetaProperties):

  • API/JSAPIValueWrapper.h:

(JSC::jsAPIValueWrapper): Deleted.

  • API/JSContext.h:
  • API/JSContext.mm:

(-[JSContext moduleLoaderDelegate]):
(-[JSContext setModuleLoaderDelegate:]):

  • API/JSContextInternal.h:
  • API/JSContextPrivate.h:
  • API/JSContextRef.cpp:

(JSGlobalContextCreateInGroup):

  • API/JSScript.h: Added.
  • API/JSScript.mm: Added.

(+[JSScript scriptWithSource:inVirtualMachine:]):
(fillBufferWithContentsOfFile):
(+[JSScript scriptFromUTF8File:inVirtualMachine:withCodeSigning:andBytecodeCache:]):
(getJSScriptSourceCode):

  • API/JSScriptInternal.h: Copied from Source/JavaScriptCore/API/JSVirtualMachineInternal.h.
  • API/JSValueInternal.h:
  • API/JSVirtualMachineInternal.h:
  • API/tests/testapi.mm:

(+[JSContextFetchDelegate contextWithBlockForFetch:]):
(-[JSContextFetchDelegate context:fetchModuleForIdentifier:withResolveHandler:andRejectHandler:]):
(checkModuleCodeRan):
(checkModuleWasRejected):
(testFetch):
(testFetchWithTwoCycle):
(testFetchWithThreeCycle):
(testLoaderResolvesAbsoluteScriptURL):
(testLoaderRejectsNilScriptURL):
(testLoaderRejectsFailedFetch):
(testImportModuleTwice):
(+[JSContextFileLoaderDelegate newContext]):
(resolvePathToScripts):
(-[JSContextFileLoaderDelegate context:fetchModuleForIdentifier:withResolveHandler:andRejectHandler:]):
(testLoadBasicFile):
(testObjectiveCAPI):

  • API/tests/testapiScripts/basic.js: Copied from Source/JavaScriptCore/API/JSVirtualMachineInternal.h.
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • SourcesCocoa.txt:
  • config.h:
  • postprocess-headers.sh:
  • runtime/CallData.cpp:

(JSC::call):

  • runtime/CallData.h:
  • runtime/Completion.cpp:

(JSC::loadAndEvaluateModule):

  • runtime/Completion.h:
  • runtime/JSCast.h:

(JSC::jsSecureCast):

  • runtime/JSGlobalObject.cpp:

(JSC::createProxyProperty):

12:17 PM Changeset in webkit [239932] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Settings: group titles should vertically align with the first editor
https://bugs.webkit.org/show_bug.cgi?id=193391

Reviewed by Dean Jackson.

  • UserInterface/Views/SettingsTabContentView.css:

(.content-view.settings > .settings-view > .container):
(.content-view.settings > .settings-view > .container > .editor-group > .editor): Added.
(.content-view.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Added.
(.content-view.settings > .settings-view > .container > .editor-group > .editor select):
(.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):

12:09 PM Changeset in webkit [239931] by Wenson Hsieh
  • 10 edits in trunk

[iOS] Expose SPI to access the current sentence boundary and selection state
https://bugs.webkit.org/show_bug.cgi?id=193398
<rdar://problem/45893108>

Reviewed by Dean Jackson.

Source/WebKit:

Expose SPI on WKWebView for internal clients to grab information about attributes at the current selection; so
far, this only includes whether the selection is a caret or a range, and whether or not the start of the
selection is at the start of a new sentence.

Test: EditorStateTests.ObserveSelectionAttributeChanges

  • Shared/EditorState.cpp:

(WebKit::EditorState::PostLayoutData::encode const):
(WebKit::EditorState::PostLayoutData::decode):

  • Shared/EditorState.h:

Add a new bit in EditorState on iOS to compute whether or not the start of the selection is at the start of a
new sentence. This is computed and set when sending post-layout data in WebPageIOS.mm.

  • UIProcess/API/Cocoa/WKWebView.mm:

(selectionAttributes):
(-[WKWebView _didChangeEditorState]):
(-[WKWebView _selectionAttributes]):

Make the new SPI property support KVO by invoking -willChangeValueForKey: and -didChangeValueForKey:
whenever the selection attributes change.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformEditorState const):

Tools:

Add an API test to verify that an SPI client can observe changes in the @"_selectionAttributes" key path on
WKWebView, and that inserting text, deleting, and changing the selection cause selection attributes to change as
expected.

  • TestWebKitAPI/EditingTestHarness.h:
  • TestWebKitAPI/EditingTestHarness.mm:

(-[EditingTestHarness moveBackward]):
(-[EditingTestHarness moveForward]):
(-[EditingTestHarness moveForwardAndExpectEditorStateWith:]):

Add a couple of new helper methods on EditingTestHarness.

  • TestWebKitAPI/Tests/WebKitCocoa/EditorStateTests.mm:

(-[SelectionChangeObserver initWithWebView:]):
(-[SelectionChangeObserver webView]):
(-[SelectionChangeObserver observeValueForKeyPath:ofObject:change:context:]):
(-[SelectionChangeObserver currentSelectionAttributes]):

11:21 AM Changeset in webkit [239930] by mmaxfield@apple.com
  • 55 edits
    2 copies
    1 delete in trunk/Source/WebCore

[WHLSL] Assorted cleanup
https://bugs.webkit.org/show_bug.cgi?id=193389

Reviewed by Dean Jackson.

This is a bunch of non-behavior-changing cleanup.

  • The compiler uses UniqueRef all over the place, and UniqueRef has an implicit operator T&. Therefore, we don't need to static_cast<T&> everywhere.
  • ConstantExpressionEnumerationMemberReference is the exact same thing as EnumerationMemberLiteral, so this patch deletes the longer-named class in favor of the shorter-named class.
  • Because of the header dependency tree, this patch moves EntryPointType into its own file so it can be used by files that FunctionDeclaration depends on. Same thing for AddressSpace.
  • EnumTypes have to have non-null base types. The parser will make sure this is always true.

No new tests because there is no behavior change.

  • Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h.
  • Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:

(WebCore::WHLSL::AST::ArrayType::type const):
(WebCore::WHLSL::AST::ArrayType::type):

  • Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:

(WebCore::WHLSL::AST::AssignmentExpression::left):
(WebCore::WHLSL::AST::AssignmentExpression::right):

  • Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
  • Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.cpp:

(WebCore::WHLSL::AST::BuiltInSemantic::isAcceptableForShaderItemDirection const):

  • Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
  • Modules/webgpu/WHLSL/AST/WHLSLConstantExpression.h:

(WebCore::WHLSL::AST::ConstantExpression::ConstantExpression):
(WebCore::WHLSL::AST::ConstantExpression::clone const):
(WebCore::WHLSL::AST::ConstantExpression::matches const):

  • Modules/webgpu/WHLSL/AST/WHLSLConstantExpressionEnumerationMemberReference.h: Removed.
  • Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:

(WebCore::WHLSL::AST::DereferenceExpression::pointer):

  • Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:

(WebCore::WHLSL::AST::DoWhileLoop::body):
(WebCore::WHLSL::AST::DoWhileLoop::conditional):

  • Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:

(WebCore::WHLSL::AST::EffectfulExpressionStatement::effectfulExpression):

  • Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h.
  • Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:

(WebCore::WHLSL::AST::EnumerationDefinition::EnumerationDefinition):
(WebCore::WHLSL::AST::EnumerationDefinition::type):

  • Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:

(WebCore::WHLSL::AST::EnumerationMemberLiteral::EnumerationMemberLiteral):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::wrap):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::left const):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::right const):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::clone const):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationDefinition):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationDefinition const):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationMember):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::enumerationMember const):
(WebCore::WHLSL::AST::EnumerationMemberLiteral::setEnumerationMember):

  • Modules/webgpu/WHLSL/AST/WHLSLExpression.h:

(WebCore::WHLSL::AST::Expression::type):
(WebCore::WHLSL::AST::Expression::setType):
(WebCore::WHLSL::AST::Expression::addressSpace const):
(WebCore::WHLSL::AST::Expression::setAddressSpace):

  • Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp:

(WebCore::WHLSL::AST::FloatLiteralType::conversionCost const):

  • Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:

(WebCore::WHLSL::AST::FloatLiteralType::preferredType):

  • Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:

(WebCore::WHLSL::AST::ForLoop::condition):
(WebCore::WHLSL::AST::ForLoop::increment):
(WebCore::WHLSL::AST::ForLoop::body):

  • Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:

(WebCore::WHLSL::AST::FunctionDeclaration::type const):
(WebCore::WHLSL::AST::FunctionDeclaration::type):

  • Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:

(WebCore::WHLSL::AST::IfStatement::conditional):
(WebCore::WHLSL::AST::IfStatement::body):
(WebCore::WHLSL::AST::IfStatement::elseBody):

  • Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:

(WebCore::WHLSL::AST::IndexExpression::indexExpression):

  • Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:

(WebCore::WHLSL::AST::IntegerLiteralType::conversionCost const):

  • Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:

(WebCore::WHLSL::AST::IntegerLiteralType::preferredType):

  • Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:

(WebCore::WHLSL::AST::LogicalExpression::left):
(WebCore::WHLSL::AST::LogicalExpression::right):

  • Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:

(WebCore::WHLSL::AST::LogicalNotExpression::operand):

  • Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:

(WebCore::WHLSL::AST::MakeArrayReferenceExpression::lValue):

  • Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:

(WebCore::WHLSL::AST::MakePointerExpression::lValue):

  • Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:

(WebCore::WHLSL::AST::PropertyAccessExpression::base):

  • Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:

(WebCore::WHLSL::AST::ReadModifyWriteExpression::lValue):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::newValueExpression):
(WebCore::WHLSL::AST::ReadModifyWriteExpression::resultExpression):

  • Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:

(WebCore::WHLSL::AST::ReferenceType::elementType const):
(WebCore::WHLSL::AST::ReferenceType::elementType):

  • Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:

(WebCore::WHLSL::AST::ResolvableType::resolvedType const):
(WebCore::WHLSL::AST::ResolvableType::resolvedType):

  • Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.cpp:

(WebCore::WHLSL::AST::ResourceSemantic::isAcceptableType const):
(WebCore::WHLSL::AST::ResourceSemantic::isAcceptableForShaderItemDirection const):

  • Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
  • Modules/webgpu/WHLSL/AST/WHLSLReturn.h:

(WebCore::WHLSL::AST::Return::value):

  • Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.cpp:

(WebCore::WHLSL::AST::SpecializationConstantSemantic::isAcceptableForShaderItemDirection const):

  • Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
  • Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.cpp:

(WebCore::WHLSL::AST::StageInOutSemantic::isAcceptableForShaderItemDirection const):

  • Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
  • Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:

(WebCore::WHLSL::AST::StructureElement::type):

  • Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:

(WebCore::WHLSL::AST::SwitchStatement::value):

  • Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:

(WebCore::WHLSL::AST::TernaryExpression::predicate):
(WebCore::WHLSL::AST::TernaryExpression::bodyExpression):
(WebCore::WHLSL::AST::TernaryExpression::elseExpression):

  • Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:

(WebCore::WHLSL::AST::TypeDefinition::type):

  • Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:

(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::conversionCost const):

  • Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:

(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::preferredType):

  • Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:

(WebCore::WHLSL::AST::VariableDeclaration::type):
(WebCore::WHLSL::AST::VariableDeclaration::initializer):
(WebCore::WHLSL::AST::VariableDeclaration::isAnonymous const):

  • Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:

(WebCore::WHLSL::AST::WhileLoop::conditional):
(WebCore::WHLSL::AST::WhileLoop::body):

  • Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:

(WebCore::WHLSL::checkDuplicateFunctions):

  • Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:

(WebCore::WHLSL::commit):
(WebCore::WHLSL::inferTypesForTypeArguments):
(WebCore::WHLSL::inferTypesForCall):

  • Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:

(WebCore::WHLSL::NameResolver::visit):
(WebCore::WHLSL::resolveNamesInTypes):
(WebCore::WHLSL::resolveNamesInFunctions):

  • Modules/webgpu/WHLSL/WHLSLNameResolver.h:
  • Modules/webgpu/WHLSL/WHLSLParser.h:
  • Modules/webgpu/WHLSL/WHLSLProgram.h:

(WebCore::WHLSL::Program::append):

  • Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:

(WebCore::WHLSL::synthesizeEnumerationFunctions):

  • Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:

(WebCore::WHLSL::synthesizeStructureAccessors):

  • Modules/webgpu/WHLSL/WHLSLVisitor.cpp:

(WebCore::WHLSL::Visitor::visit):

  • Modules/webgpu/WHLSL/WHLSLVisitor.h:
  • WebCore.xcodeproj/project.pbxproj:
10:41 AM Changeset in webkit [239929] by dinfuehr@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix property access on ARM with the baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=193393

Reviewed by Yusuke Suzuki.

Code was still using currentInstruction[4] to access the instruction's metadata.
Updated to use metadata.getPutInfo and metadata.resolveType.

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emit_op_put_to_scope):

10:00 AM Changeset in webkit [239928] by Ryan Haddad
  • 2 edits in branches/safari-607-branch/Tools

Cherry-pick r239878. rdar://problem/47255372

webkitpy: Support alternate simctl device list output
https://bugs.webkit.org/show_bug.cgi?id=193362
<rdar://problem/47122965>

Reviewed by Lucas Forschler.

  • Scripts/webkitpy/xcode/simulated_device.py: (SimulatedDeviceManager.populate_available_devices):

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

7:51 AM Changeset in webkit [239927] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

DOMCacheStorage: use-after-move in doSequentialMatch()
https://bugs.webkit.org/show_bug.cgi?id=193396

Reviewed by Youenn Fablet.

Depending on the platform- and compiler-specific calling conventions,
the doSequentialMatch() code can move out the Vector<Ref<DOMCache>>
object into the callback lambda before the DOMCache object at the
specified index is retrieved for the DOMCache::doMatch() invocation.

This problem is now avoided by retrieving reference to the target
DOMCache object in an earlier expression.

  • Modules/cache/DOMCacheStorage.cpp:

(WebCore::doSequentialMatch):

7:42 AM Changeset in webkit [239926] by Alan Bujtas
  • 6 edits
    2 adds in trunk

[LFC][BFC] Add basic box-sizing support.
https://bugs.webkit.org/show_bug.cgi?id=193392

Reviewed by Antti Koivisto.

Source/WebCore:

No min/max support yet.

Test: fast/block/block-only/box-sizing-inflow-out-of-flow-simple.html

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):

  • page/FrameViewLayoutContext.cpp:

(WebCore::layoutUsingFormattingContext):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:

  • fast/block/block-only/box-sizing-inflow-out-of-flow-simple-expected.txt: Added.
  • fast/block/block-only/box-sizing-inflow-out-of-flow-simple.html: Added.
7:22 AM Changeset in webkit [239925] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[GStreamer][WebRTC] Override DeviceType() in RealtimeMediaSource implementations
https://bugs.webkit.org/show_bug.cgi?id=193397

This was necessary but wasn't done.

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-01-14
Reviewed by Philippe Normand.

No test required as this fixes a regression in all WebRTC tests when built in debug mode.

  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
7:09 AM Changeset in webkit [239924] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

Unreviewed WPE debug build fix after r239921.

  • platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:

(webKitMediaClearKeyDecryptorDecrypt): Fix the assert that checks the
size of the mapped buffer containing IV data.

4:41 AM Changeset in webkit [239923] by zandobersek@gmail.com
  • 67 edits
    5 adds in trunk/LayoutTests

Unreviewed WPE gardening. Updating baselines for failures that in
majority of cases can be tracked down to the test fonts bump in r239436.

  • platform/wpe/animations/lineheight-animation-expected.txt:
  • platform/wpe/animations/simultaneous-start-transform-expected.txt:
  • platform/wpe/animations/width-using-ems-expected.txt:
  • platform/wpe/css1/font_properties/font-expected.txt:
  • platform/wpe/css3/unicode-bidi-isolate-basic-expected.txt:
  • platform/wpe/fast/css/line-height-determined-by-primary-font-expected.txt:
  • platform/wpe/fast/css/rtl-ordering-expected.txt:
  • platform/wpe/fast/css/text-overflow-ellipsis-bidi-expected.txt:
  • platform/wpe/fast/css/text-overflow-ellipsis-expected.txt:
  • platform/wpe/fast/css/text-overflow-ellipsis-strict-expected.txt:
  • platform/wpe/fast/css/word-space-extra-expected.txt:
  • platform/wpe/fast/dom/34176-expected.txt:
  • platform/wpe/fast/dom/52776-expected.txt:
  • platform/wpe/fast/inline/inline-box-background-expected.txt:
  • platform/wpe/fast/inline/inline-box-background-long-image-expected.txt:
  • platform/wpe/fast/inline/inline-box-background-repeat-x-expected.txt:
  • platform/wpe/fast/inline/inline-box-background-repeat-y-expected.txt:
  • platform/wpe/fast/inline/inline-content-with-float-and-margin-expected.txt: Added.
  • platform/wpe/fast/inline/simple-inline-inflow-positioned-expected.txt: Added.
  • platform/wpe/fast/inline/simple-inline-with-out-of-flow-descendant-expected.txt: Added.
  • platform/wpe/fast/inline/simple-inline-with-out-of-flow-descendant2-expected.txt: Added.
  • platform/wpe/svg/W3C-I18N/text-anchor-dirLTR-anchorEnd-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-dirLTR-anchorMiddle-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-dirLTR-anchorStart-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-dirNone-anchorEnd-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-dirNone-anchorMiddle-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-dirNone-anchorStart-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-dirRTL-anchorEnd-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-dirRTL-anchorMiddle-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-dirRTL-anchorStart-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-inherited-dirLTR-anchorEnd-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-inherited-dirLTR-anchorMiddle-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-inherited-dirLTR-anchorStart-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-inherited-dirRTL-anchorEnd-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-inherited-dirRTL-anchorMiddle-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-inherited-dirRTL-anchorStart-expected.txt:
  • platform/wpe/svg/W3C-I18N/text-anchor-no-markup-expected.txt:
  • platform/wpe/svg/W3C-SVG-1.1-SE/svgdom-over-01-f-expected.txt:
  • platform/wpe/svg/W3C-SVG-1.1-SE/text-intro-02-b-expected.txt:
  • platform/wpe/svg/W3C-SVG-1.1-SE/text-intro-09-b-expected.txt:
  • platform/wpe/svg/W3C-SVG-1.1/text-tselect-02-f-expected.txt:
  • platform/wpe/svg/custom/glyph-selection-bidi-mirror-expected.txt:
  • platform/wpe/svg/custom/svg-fonts-fallback-expected.txt:
  • platform/wpe/svg/hixie/perf/007-expected.txt:
  • platform/wpe/svg/text/bidi-embedded-direction-expected.txt:
  • platform/wpe/svg/text/bidi-reorder-value-lists-expected.txt: Added.
  • platform/wpe/svg/text/bidi-text-anchor-direction-expected.txt:
  • platform/wpe/svg/text/text-tselect-02-f-expected.txt:
  • platform/wpe/tables/mozilla/marvin/backgr_layers-opacity-expected.txt:
  • platform/wpe/tables/mozilla/marvin/backgr_position-table-expected.txt:
  • platform/wpe/tables/mozilla/marvin/backgr_simple-table-cell-expected.txt:
  • platform/wpe/tables/mozilla/marvin/backgr_simple-table-column-expected.txt:
  • platform/wpe/tables/mozilla/marvin/backgr_simple-table-column-group-expected.txt:
  • platform/wpe/tables/mozilla/marvin/backgr_simple-table-expected.txt:
  • platform/wpe/tables/mozilla/marvin/backgr_simple-table-row-expected.txt:
  • platform/wpe/tables/mozilla/marvin/backgr_simple-table-row-group-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_border-table-cell-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_border-table-column-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_border-table-column-group-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_border-table-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_border-table-quirks-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_border-table-row-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_border-table-row-group-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_layers-hide-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_layers-show-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_position-table-cell-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_position-table-column-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_position-table-column-group-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_position-table-row-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/marvin/backgr_position-table-row-group-expected.txt:
4:41 AM Changeset in webkit [239922] by cturner@igalia.com
  • 2 edits in trunk/Tools

[WPE] API test gardening
https://bugs.webkit.org/show_bug.cgi?id=193319

Reviewed by Michael Catanzaro.

  • TestWebKitAPI/glib/TestExpectations.json: Remove some now

passing tests.

4:31 AM Changeset in webkit [239921] by cturner@igalia.com
  • 16 edits
    4 adds in trunk

[GStreamer] Add sharedBuffer utility to GstMappedBuffer, and a testsuite
https://bugs.webkit.org/show_bug.cgi?id=192977

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Add a utility method on GstMappedBuffer to return a SharedBuffer
view over the mapped data with no copies.

This patch also introduces a new gstreamer port API test
directory, and includes some tests for GstMappedBuffer.

New tests in the API section.

  • platform/SharedBuffer.cpp: Add a new overload for

GstMappedBuffer that allows sharing the mapped GStreamer buffers
with zero copies.
(WebCore::SharedBuffer::create):
(WebCore::SharedBuffer::SharedBuffer):
(WebCore::SharedBuffer::DataSegment::data const):
(WebCore::SharedBuffer::DataSegment::size const):

  • platform/SharedBuffer.h:
  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webKitWebAudioSrcAllocateBuffersAndRenderAudio): Update to new
API.

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::GstMappedBuffer::createSharedBuffer): Return a shared
buffer sharing this mapped buffer. The buffer must be shareable to
use this method.

  • platform/graphics/gstreamer/GStreamerCommon.h:

(WebCore::GstMappedBuffer::create): Make GstMappedBuffer RefCounted
(WebCore::GstMappedBuffer::~GstMappedBuffer):
(WebCore::GstMappedBuffer::data):
(WebCore::GstMappedBuffer::data const):
(WebCore::GstMappedBuffer::size const):
(WebCore::GstMappedBuffer::isSharable const): New predicate to
check whether this buffer can be shared (i.e., is not writable)
(WebCore::GstMappedBuffer::GstMappedBuffer):
(WebCore::GstMappedBuffer::operator bool const): Deleted.

  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:

(WebCore::InbandTextTrackPrivateGStreamer::notifyTrackOfSample):
Update to use new API.

  • platform/graphics/gstreamer/eme/GStreamerEMEUtilities.h:

(WebCore::InitData::InitData): Ditto.

  • platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:

(webKitMediaClearKeyDecryptorFindAndSetKey): Ditto.
(webKitMediaClearKeyDecryptorDecrypt): Ditto.

  • platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:

(WebCore::WrappedMockRealtimeAudioSource::render): Ditto.

  • platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:

(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData): Ditto.

  • platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp:

(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::createBlackFrame): Ditto.

  • platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:

(WebCore::GStreamerVideoEncoder::Fragmentize): Ditto.

Tools:

  • TestWebKitAPI/PlatformGTK.cmake: Build the new GStreamer test harness
  • TestWebKitAPI/PlatformWPE.cmake: Ditto.
  • TestWebKitAPI/Tests/WebCore/gstreamer/GStreamerTest.cpp: Added.

(TestWebKitAPI::GStreamerTest::SetUp):
(TestWebKitAPI::GStreamerTest::TearDown):

  • TestWebKitAPI/Tests/WebCore/gstreamer/GStreamerTest.h: Added.
  • TestWebKitAPI/Tests/WebCore/gstreamer/GstMappedBuffer.cpp: Added.

(TestWebKitAPI::TEST_F):

2:59 AM Changeset in webkit [239920] by cturner@igalia.com
  • 2 edits in trunk/Tools

[WPE] Workaround for incorrect template specialization being selected when UChar=char16_t
https://bugs.webkit.org/show_bug.cgi?id=193332

Reviewed by Michael Catanzaro.

  • TestWebKitAPI/Tests/WTF/StringConcatenate.cpp: When UChar is

defined as a char16_t, which changed in ICU 59, the
StringTypeAdapter<UnsignedInt, ...> overload catches casts to
unsigned short. This test is relying on the behaviour that
UChar=unsigned short, which doesn't hold across platforms and ICU
library versions. The full fix would be a special syntax for
literal characters so that these ambiguities do not arise. That
work is proposed in https://bugs.webkit.org/show_bug.cgi?id=193101.
(TestWebKitAPI::TEST):

2:32 AM Changeset in webkit [239919] by commit-queue@webkit.org
  • 3 edits
    11 adds in trunk

[GTK][WPE] Graphic issue with invalidations on composited layers with subpixel positions
https://bugs.webkit.org/show_bug.cgi?id=193239

Patch by Karl Leplat <karl.leplat_ext@softathome.com> on 2019-01-14
Reviewed by Žan Doberšek.

Source/WebCore:

Test: compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions.html

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::updateContentBuffers): Use enclosed dirty rect values
when invalidating the CoordinatedBackingStore areas.

LayoutTests:

  • compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions.html: Added.
  • platform/gtk/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png: Added.
  • platform/gtk/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.txt: Added.
  • platform/ios/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png: Added.
  • platform/ios/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.txt: Added.
  • platform/mac/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png: Added.
  • platform/mac/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.txt: Added.
  • platform/wpe/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png: Added.
  • platform/wpe/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.txt: Added.
1:29 AM Changeset in webkit [239918] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.23.3

WebKitGTK+ 2.23.3

1:28 AM Changeset in webkit [239917] by Carlos Garcia Campos
  • 4 edits in trunk

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.23.3 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.23.3.
12:24 AM Changeset in webkit [239916] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed. [GTK][WPE] Run distcheck with gtkdoc and MiniBrowser enabled

  • Scripts/make-dist:

(Distcheck.configure):

Jan 13, 2019:

11:59 PM Changeset in webkit [239915] by Carlos Garcia Campos
  • 5 edits in trunk

[FreeType] Support emoji modifiers
https://bugs.webkit.org/show_bug.cgi?id=177040

Reviewed by Myles C. Maxfield.

Source/WebCore:

The problem only happens with emojis having the zero with joiner (U+200D) in the sequence. The sequence is
broken because createAndFillGlyphPage() in Font.cpp overwrites zero with joiner with zero width space (U+200B),
but the emoji font actually supports zero with joiner. This patch moves the control characters override from
createAndFillGlyphPage() to GlyphPage::fill() only for FreeType based ports. This way we can do the override
only for the cases where the code point is not supported by the font.

  • platform/graphics/Font.cpp:

(WebCore::overrideControlCharacters): Helper function to override the control characters.
(WebCore::createAndFillGlyphPage): Call overrideControlCharacters() only when not using FreeType.

  • platform/graphics/freetype/GlyphPageTreeNodeFreeType.cpp:

(WebCore::GlyphPage::fill): Use zero width space as fallback when the font doesn't support characters with
Default_Ignorable Unicode property.

LayoutTests:

Mark several emoji tests as passing now.

  • platform/gtk/TestExpectations:
9:55 PM Changeset in webkit [239914] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

Tried to fix USE(APPLE_INTERNAL_SDK) 32-bit builds.

  • pal/spi/mac/QuickDrawSPI.h:
9:51 PM Changeset in webkit [239913] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

More build fixing.

  • editing/cocoa/DictionaryLookup.mm:
4:34 PM Changeset in webkit [239912] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit

Fixed iOS builds after r239910.

  • Platform/spi/ios/PDFKitSPI.h:
4:07 PM Changeset in webkit [239911] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Minor optimization to RenderText::setRenderedText()
https://bugs.webkit.org/show_bug.cgi?id=193388

Reviewed by Ryosuke Niwa.

Avoid the call to applyTextTransform() if TextTransform is None, so that we don't
have to call previousCharacter() and reassign m_text.

Similar optimization in RenderText::textWithoutConvertingBackslashToYenSymbol().

Speedometer profiles show a few samples here, but this isn't going to win any prizes.

  • rendering/RenderText.cpp:

(WebCore::RenderText::setRenderedText):
(WebCore::RenderText::textWithoutConvertingBackslashToYenSymbol const):

3:19 PM Changeset in webkit [239910] by mitz@apple.com
  • 4 edits in trunk/Source

Tried to fix the build.

Source/WebCore:

  • editing/cocoa/DictionaryLookup.mm:

Source/WebKit:

  • Platform/spi/ios/PDFKitSPI.h:
3:13 PM Changeset in webkit [239909] by mitz@apple.com
  • 12 edits in trunk/Source

Tried to fix USE(APPLE_INTERNAL_SDK) builds after r239901.

Patch by Keith Rollin.

Source/WebCore:

  • accessibility/mac/AXObjectCacheMac.mm:

Source/WebCore/PAL:

  • pal/spi/cocoa/LaunchServicesSPI.h:
  • pal/spi/mac/HIServicesSPI.h:
  • pal/spi/mac/MetadataSPI.h:
  • pal/spi/mac/SpeechSynthesisSPI.h:

Source/WebKit:

  • Platform/IPC/mac/ConnectionMac.mm:
  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::launchServicesCheckIn):

Source/WebKitLegacy/mac:

  • WebView/PDFViewSPI.h:
1:45 PM Changeset in webkit [239908] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Update macOS queue configurations
https://bugs.webkit.org/show_bug.cgi?id=193365
<rdar://problem/47221073>

Unreviewed, renamed mac-high-sierra to mac-highsierra to match with build.webkit.org configuration.

  • BuildSlaveSupport/ews-build/config.json:
8:39 AM Changeset in webkit [239907] by Alan Bujtas
  • 4 edits in trunk

[LFC] Adjust assert for statically positioned fixed elements
https://bugs.webkit.org/show_bug.cgi?id=193385

Reviewed by Antti Koivisto.

Source/WebCore:

While computing the static position and traversing the ancestor chain, we can surely hit a positioned container
(since we need to go all the way up to the initial containing block).

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::staticVerticalPositionForOutOfFlowPositioned):
(WebCore::Layout::staticHorizontalPositionForOutOfFlowPositioned):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:
8:06 AM Changeset in webkit [239906] by Philippe Normand
  • 2 edits in trunk/Tools

[WPE][MiniBrowser] Ephemeral WebContext leaks in automation mode
https://bugs.webkit.org/show_bug.cgi?id=193387

Reviewed by Carlos Garcia Campos.

  • MiniBrowser/wpe/main.cpp:

(main):

5:15 AM Changeset in webkit [239905] by Antti Koivisto
  • 5 edits in trunk

Release assert with <img usemap> in shadow tree
https://bugs.webkit.org/show_bug.cgi?id=193378

Reviewed by Ryosuke Niwa.

Source/WebCore:

When a shadow host that has <img usemap> in the shadow tree is removed from the document, we try
to remove the map from the scope of the host.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::parseAttribute):
(WebCore::HTMLImageElement::insertedIntoAncestor):
(WebCore::HTMLImageElement::removedFromAncestor):

Tree scope changes are relevant, not the connection to the document.

LayoutTests:

  • fast/shadow-dom/image-map-tree-scope.html:
Note: See TracTimeline for information about the timeline view.