Timeline



Jul 15, 2019:

11:14 PM Changeset in webkit [247476] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

Remove redundant WebsiteDataStoreConfiguration member
https://bugs.webkit.org/show_bug.cgi?id=199820

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-15
Reviewed by Geoffrey Garen.

m_webStorageDirectory was only used for _WKWebsiteDataStoreConfiguration._webStorageDirectory's backing,
which was copied over to m_localStorageDirectory of a new object in WKWebsiteDataStore's _initWithConfiguration.
This is a baby step towards cleaning up this mess with no behavior change. I see no reason to rename the SPI.

  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration _webStorageDirectory]):
(-[_WKWebsiteDataStoreConfiguration _setWebStorageDirectory:]):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::webStorageDirectory const): Deleted.
(WebKit::WebsiteDataStoreConfiguration::setWebStorageDirectory): Deleted.

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

[macOS WK2] Layout Test http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=198670

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Mark test as flaky.
9:37 PM Changeset in webkit [247474] by keith_miller@apple.com
  • 18 edits in trunk

JSGlobalObject type macros should support feature flags and WeakRef should have one
https://bugs.webkit.org/show_bug.cgi?id=199601

Reviewed by Mark Lam.

Source/JavaScriptCore:

This patch refactors the various builtin type macros to have a
parameter, which is the feature flag enabling it. Since most
builtin types are enabled by default this patch adds a new global
bool typeExposedByDefault for clarity. Note, because static hash
tables have no concept of feature flags we can't use feature flags
with lazy properties. This is probably not a big deal as features
that are off by default won't be allocated anywhere we care about
memory usage anyway.

  • runtime/CommonIdentifiers.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::stringObjectStructure const):
(JSC::JSGlobalObject::bigIntObjectStructure const): Deleted.

  • runtime/Options.h:
  • wasm/js/JSWebAssembly.cpp:

Tools:

JSC options need to be set before the window is created for the test.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebViewToConsistentStateBeforeTesting):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(setJSCOptions):
(resetWebViewToConsistentStateBeforeTesting):

LayoutTests:

Add JSC option requirements for WeakRef tests.

  • js/script-tests/weakref-async-is-collected.js:
  • js/script-tests/weakref-eventually-collects-values.js:
  • js/script-tests/weakref-microtasks-dont-collect.js:
  • js/script-tests/weakref-weakset-consistency.js:
  • js/weakref-async-is-collected.html:
  • js/weakref-eventually-collects-values.html:
  • js/weakref-microtasks-dont-collect.html:
  • js/weakref-weakset-consistency.html:
9:35 PM Changeset in webkit [247473] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

Make WKURLSchemeTask thread safe
https://bugs.webkit.org/show_bug.cgi?id=199764

Unreviewed build fix for WinCairo port.

Source\WebKit\UIProcess\socket\RemoteInspectorProtocolHandler.cpp(82): error C2039: 'request': is not a member of 'WebKit::WebURLSchemeTask'

  • UIProcess/WebURLSchemeTask.h:

(WebKit::WebURLSchemeTask::request const): Restored WebURLSchemeTask::request with a threading assertion.

9:27 PM Changeset in webkit [247472] by Ryan Haddad
  • 15 edits
    4 deletes in trunk

Unreviewed, rolling out r247444.

Caused two scrolling tests to fail on iOS Simulator

Reverted changeset:

"Typing into a cell in a Google Sheet lags behind by one
character"
https://bugs.webkit.org/show_bug.cgi?id=199587
https://trac.webkit.org/changeset/247444

9:26 PM Changeset in webkit [247471] by keith_miller@apple.com
  • 5 edits
    1 add in trunk

A Possible Issue of Object.create method
https://bugs.webkit.org/show_bug.cgi?id=199744

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/object-create-non-object-properties-parameter.js: Added.

(catch):

Source/JavaScriptCore:

We should call toObject on the properties argument if it was not undefined.
See: https://tc39.es/ecma262/#sec-object.create

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorCreate):

LayoutTests:

Rebaseline error message due to change of error point.

  • js/Object-create-expected.txt:
9:24 PM Changeset in webkit [247470] by Alan Bujtas
  • 6 edits in trunk/Source

outlook.live.com has odd viewport with edge gap
https://bugs.webkit.org/show_bug.cgi?id=199822
<rdar://problem/53029072>

Reviewed by Wenson Hsieh.

Source/WebCore:

r244944 introduced a viewport width quirk because at certain screen size outlook.live.com's flex setup produced a slighly broken layout.
We don't seem to need this quirk anymore (composed column's min-width is removed.)

  • page/Quirks.cpp:

(WebCore::Quirks::shouldIgnoreShrinkToFitContent const): Deleted.
(WebCore::Quirks::overriddenViewLayoutWidth const): Deleted.

  • page/Quirks.h:

Source/WebKit:

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::setViewportConfigurationViewLayoutSize):
(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::resetViewportDefaultConfiguration):
(WebKit::WebPage::immediatelyShrinkToFitContent):
(WebKit::WebPage::viewLayoutSizeAdjustedForQuirks): Deleted.

9:11 PM Changeset in webkit [247469] by keith_miller@apple.com
  • 49 edits
    18 copies
    159 adds
    5 deletes in trunk/JSTests

Update test262
https://bugs.webkit.org/show_bug.cgi?id=199801

Rubber-stamped by Yusuke Suzuki.

  • test262/expectations.yaml:
  • test262/latest-changes-summary.txt:
  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/Symbol.toStringTag.js: Added.

(fg.new.FinalizationGroup):
(callback):

  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-job-not-active-throws.js: Added.

(fg.new.FinalizationGroup):
(callback):

  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-length.js: Added.

(fg.new.FinalizationGroup):
(callback):

  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-missing-internal-throws.js: Added.

(fg.new.FinalizationGroup):
(callback):

  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-name.js: Added.

(fg.new.FinalizationGroup):
(callback):

  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-not-object-throws.js: Added.

(fg.new.FinalizationGroup):
(callback):

  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-prop-desc.js: Added.

(fg.new.FinalizationGroup):
(callback):

  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/proto.js: Added.

(callback):
(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/constructor.js: Added.
  • test262/test/built-ins/FinalizationGroup/gc-has-one-chance-to-call-cleanupCallback.js: Added.

(cb):
(fg.new.FinalizationGroup):
(emptyCells):
(async.fn):
(fn.then.async):

  • test262/test/built-ins/FinalizationGroup/instance-extensible.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/length.js: Added.
  • test262/test/built-ins/FinalizationGroup/name.js: Added.
  • test262/test/built-ins/FinalizationGroup/newtarget-prototype-is-not-object.js: Added.

(newTarget):
(fn):

  • test262/test/built-ins/FinalizationGroup/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/proto-from-ctor-realm.js: Added.

(fn):

  • test262/test/built-ins/FinalizationGroup/proto.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype-from-newtarget-abrupt.js: Added.

(newTarget):

  • test262/test/built-ins/FinalizationGroup/prototype-from-newtarget-custom.js: Added.

(newTarget):

  • test262/test/built-ins/FinalizationGroup/prototype-from-newtarget.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/prototype/Symbol.toStringTag.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/callback-iterator-proto.js: Added.

(callback):
(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/callback-not-callable-throws.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanup-prevented-with-reference.js: Added.

(cb):
(fg.new.FinalizationGroup):
(emptyCells):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanup-prevented-with-unregister.js: Added.

(fg.new.FinalizationGroup):
(fg.cleanupSome.cb):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanupcallback-iterator-proto.js: Added.

(callback):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/custom-this.js: Added.

(fn):
(cb):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/gc-cleanup-not-prevented-with-wr-deref.js: Added.

(cb):
(fg.new.FinalizationGroup):
(emptyCells):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/iterator-dynamic.js: Added.

(fg.new.FinalizationGroup):
(callback):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/iterator-holdings-multiple-values.js: Added.

(fg.new.FinalizationGroup):
(callback):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/length.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/name.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/poisoned-callback-throws.js: Added.

(poisoned):
(fg.new.FinalizationGroup):
(emptyCells):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/poisoned-cleanup-callback-throws.js: Added.

(poisoned):
(emptyCells):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/return-undefined-with-gc.js: Added.

(fn):
(cb):
(emptyCells):
(prototype.assert.sameValue.fg.cleanupSome):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/return-undefined.js: Added.

(fn):
(cb):
(poisoned):
(assert.sameValue.fg.cleanupSome):
(prototype.assert.sameValue.fg.cleanupSome):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js: Added.

(cb):

  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/this-not-object-throws.js: Added.

(cb):

  • test262/test/built-ins/FinalizationGroup/prototype/constructor.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/proto.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/custom-this.js: Added.

(fn):

  • test262/test/built-ins/FinalizationGroup/prototype/register/holdings-any-value-type.js: Added.

(fn):

  • test262/test/built-ins/FinalizationGroup/prototype/register/holdings-same-as-target.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/prototype/register/length.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/name.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/return-undefined-register-itself.js: Added.

(fn):

  • test262/test/built-ins/FinalizationGroup/prototype/register/return-undefined.js: Added.

(fn):

  • test262/test/built-ins/FinalizationGroup/prototype/register/target-not-object-throws.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/prototype/register/this-does-not-have-internal-target-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/this-not-object-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-not-object-or-undefined-throws.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-holdings-and-target.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-holdings.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-target.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/prototype/unregister/custom-this.js: Added.

(fn):

  • test262/test/built-ins/FinalizationGroup/prototype/unregister/length.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/name.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/this-does-not-have-internal-cells-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/this-not-object-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/unregister.js: Added.

(fn):

  • test262/test/built-ins/FinalizationGroup/prototype/unregister/unregisterToken-not-object-throws.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/returns-new-object-from-constructor.js: Added.

(cleanupCallback):
(let.key.of.Object.getOwnPropertyNames):
(set for):

  • test262/test/built-ins/FinalizationGroup/target-not-callable-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/undefined-newtarget-throws.js: Added.

(FinalizationGroup):

  • test262/test/built-ins/FinalizationGroup/unnaffected-by-poisoned-cleanupCallback.js: Added.

(cleanupCallback):
(let.key.of.Object.getOwnPropertyNames):
(set for):

  • test262/test/built-ins/Function/StrictFunction_restricted-properties.js:
  • test262/test/built-ins/Function/prototype/bind/BoundFunction_restricted-properties.js:
  • test262/test/built-ins/Function/prototype/restricted-property-arguments.js:
  • test262/test/built-ins/Function/prototype/restricted-property-caller.js:
  • test262/test/built-ins/Object/prototype/toString/proxy-function-async.js: Added.

(asyncProxy.new.Proxy.async):

  • test262/test/built-ins/Object/prototype/toString/proxy-function.js:

(asyncProxy.new.Proxy.async):

  • test262/test/built-ins/Object/prototype/toString/symbol-tag-non-str-builtin.js: Added.

(setIter.set Symbol):
(set defaultTag):
(gen):
(get return):
(set new):

  • test262/test/built-ins/Object/prototype/toString/symbol-tag-non-str-proxy-function.js: Added.

(generatorProxy.new.Proxy):
(asyncProxy.new.Proxy.async):

  • test262/test/built-ins/Object/subclass-object-arg.js:
  • test262/test/built-ins/Promise/all/invoke-resolve-get-error-close.js:
  • test262/test/built-ins/Promise/all/resolve-element-function-name.js:
  • test262/test/built-ins/Promise/allSettled/invoke-resolve-get-error-close.js:
  • test262/test/built-ins/Promise/allSettled/reject-element-function-name.js:
  • test262/test/built-ins/Promise/allSettled/resolve-element-function-name.js:
  • test262/test/built-ins/Promise/executor-function-name.js:
  • test262/test/built-ins/Promise/race/invoke-resolve-get-error-close.js:
  • test262/test/built-ins/Promise/reject-function-name.js:
  • test262/test/built-ins/Promise/resolve-function-name.js:
  • test262/test/built-ins/Set/prototype/values/does-not-have-setdata-internal-slot-weakset.js:
  • test262/test/built-ins/WeakRef/constructor.js: Added.
  • test262/test/built-ins/WeakRef/instance-extensible.js: Added.
  • test262/test/built-ins/WeakRef/length.js: Added.
  • test262/test/built-ins/WeakRef/name.js: Added.
  • test262/test/built-ins/WeakRef/newtarget-prototype-is-not-object.js: Added.

(newTarget):

  • test262/test/built-ins/WeakRef/prop-desc.js: Added.
  • test262/test/built-ins/WeakRef/proto-from-ctor-realm.js: Added.
  • test262/test/built-ins/WeakRef/proto.js: Added.
  • test262/test/built-ins/WeakRef/prototype-from-newtarget-abrupt.js: Added.

(newTarget):

  • test262/test/built-ins/WeakRef/prototype-from-newtarget-custom.js: Added.

(newTarget):

  • test262/test/built-ins/WeakRef/prototype-from-newtarget.js: Added.
  • test262/test/built-ins/WeakRef/prototype/Symbol.toStringTag.js: Added.
  • test262/test/built-ins/WeakRef/prototype/constructor.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/custom-this.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js: Added.

(emptyCells):

  • test262/test/built-ins/WeakRef/prototype/deref/length.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/name.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/prop-desc.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/return-target.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/this-does-not-have-internal-target-throws.js: Added.

(fg.new.FinalizationGroup):

  • test262/test/built-ins/WeakRef/prototype/deref/this-not-object-throws.js: Added.
  • test262/test/built-ins/WeakRef/prototype/prop-desc.js: Added.
  • test262/test/built-ins/WeakRef/prototype/proto.js: Added.
  • test262/test/built-ins/WeakRef/returns-new-object-from-constructor.js: Added.

(let.key.of.Object.getOwnPropertyNames):
(set for):

  • test262/test/built-ins/WeakRef/target-not-object-throws.js: Added.
  • test262/test/built-ins/WeakRef/undefined-newtarget-throws.js: Added.
  • test262/test/intl402/BigInt/prototype/toLocaleString/builtin.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/default-options-object-prototype.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/length.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/returns-same-results-as-NumberFormat.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/taint-Intl-NumberFormat.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/this-value-invalid.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/throws-same-exceptions-as-NumberFormat.js:
  • test262/test/intl402/DateTimeFormat/constructor-options-order-quarter.js: Removed.
  • test262/test/intl402/DateTimeFormat/constructor-options-quarter-invalid.js: Removed.
  • test262/test/intl402/DateTimeFormat/constructor-options-quarter-valid.js: Removed.
  • test262/test/intl402/DateTimeFormat/prototype/format/dayPeriod-long-en.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/format/dayPeriod-narrow-en.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/format/dayPeriod-short-en.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/format/fractionalSecondDigits.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/argument-date-string.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/argument-near-time-boundaries.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/argument-to-integer.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/builtin.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/prop-desc.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/argument-date-string.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/argument-near-time-boundaries.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/argument-to-integer.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/builtin.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/prop-desc.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-long-en.js: Added.

(assertParts):
(assertPartsNumeric):

  • test262/test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-narrow-en.js: Added.

(assertParts):
(assertPartsNumeric):

  • test262/test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-short-en.js: Added.

(assertParts):
(assertPartsNumeric):

  • test262/test/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js: Added.

(assertParts):

  • test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order-quarter.js: Removed.
  • test262/test/intl402/DateTimeFormat/taint-Object-prototype-quarter.js: Removed.
  • test262/test/intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js:
  • test262/test/intl402/RelativeTimeFormat/prototype/formatToParts/en-us-numeric-auto.js:
  • test262/test/language/expressions/arrow-function/ArrowFunction_restricted-properties.js:
  • test262/test/language/expressions/class/elements/private-field-access-on-inner-arrow-function.js: Added.

(C.prototype.method):

  • test262/test/language/expressions/class/elements/private-field-access-on-inner-function.js: Added.

(C.prototype.method.innerFunction):
(C.prototype.method):

  • test262/test/language/expressions/class/elements/private-getter-access-on-inner-arrow-function.js: Added.

(C):
(C.method):

  • test262/test/language/expressions/class/elements/private-getter-access-on-inner-function.js: Added.

(C):
(C.method.innerFunction):
(C.method):

  • test262/test/language/expressions/class/elements/private-getter-is-not-a-own-property.js: Added.

(C):
(C.checkPrivateGetter):

  • test262/test/language/expressions/class/elements/private-method-access-on-inner-arrow-function.js: Added.

(C):
(C.method):

  • test262/test/language/expressions/class/elements/private-method-access-on-inner-function.js: Added.

(C):
(C.method.innerFunction):
(C.method):

  • test262/test/language/expressions/class/elements/private-method-is-not-a-own-property.js: Added.

(C):
(C.checkPrivateMethod):

  • test262/test/language/expressions/class/elements/private-setter-access-on-inner-arrow-function.js: Added.

(C):
(C.method):

  • test262/test/language/expressions/class/elements/private-setter-access-on-inner-function.js: Added.

(C):
(C.method.innerFunction):
(C.method):

  • test262/test/language/expressions/class/elements/private-setter-is-not-a-own-property.js: Added.

(C):
(C.checkPrivateSetter):

  • test262/test/language/expressions/class/elements/prod-private-getter-before-super-return-in-field-initializer.js:
  • test262/test/language/expressions/class/elements/prod-private-method-before-super-return-in-field-initializer.js:
  • test262/test/language/expressions/class/elements/prod-private-setter-before-super-return-in-field-initializer.js:
  • test262/test/language/expressions/class/poisoned-underscore-proto.js: Added.
  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval-indirect.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression):
(let.classStringExpression.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression):
(let.classStringExpression.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-factory.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(const.C):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression.return.prototype.m):
(let.classStringExpression.return.prototype.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-realm-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression.return.prototype.m):
(let.classStringExpression.return.prototype.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-realm.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression):
(let.classStringExpression.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-eval-indirect.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression.prototype.m):
(let.classStringExpression.prototype.access):
(let.classStringExpression):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-eval.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression.prototype.m):
(let.classStringExpression.prototype.access):
(let.classStringExpression):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-factory.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(const.C):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression.return.C.prototype.m):
(let.classStringExpression.return.C.prototype.access):
(let.classStringExpression.return.C):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-realm-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression.return.C.prototype.m):
(let.classStringExpression.return.C.prototype.access):
(let.classStringExpression.return.C):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-realm.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression):
(let.classStringExpression.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-eval-indirect.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression):
(let.classStringExpression.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-eval.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression):
(let.classStringExpression.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-factory.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(const.C):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression.return.prototype.m):
(let.classStringExpression.return.prototype.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-realm-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression.return.prototype.m):
(let.classStringExpression.return.prototype.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-realm.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.

(let.classStringExpression):
(let.classStringExpression.access):
(let.createAndInstantiateClass):

  • test262/test/language/expressions/new.target/unary-expr.js: Added.

(new):
(async):

  • test262/test/language/expressions/super/call-poisoned-underscore-proto.js: Added.

(A):

  • test262/test/language/expressions/super/prop-poisoned-underscore-proto.js: Added.
  • test262/test/language/identifiers/vals-cjk-escaped.js: Added.
  • test262/test/language/identifiers/vals-cjk.js: Added.
  • test262/test/language/statements/class/elements/private-class-field-on-frozen-objects.js:
  • test262/test/language/statements/class/elements/private-field-access-on-inner-arrow-function.js: Added.

(C.prototype.method):
(C):

  • test262/test/language/statements/class/elements/private-field-access-on-inner-function.js: Added.

(C.prototype.method.innerFunction):
(C.prototype.method):
(C):

  • test262/test/language/statements/class/elements/private-field-is-not-clobbered-by-computed-property.js: Added.

(C.prototype.checkPrivateField):
(C):

  • test262/test/language/statements/class/elements/private-field-visible-to-direct-eval-on-initializer.js: Added.

(C):

  • test262/test/language/statements/class/elements/private-field-visible-to-direct-eval.js: Added.

(C.prototype.getWithEval):
(C):
(D):

  • test262/test/language/statements/class/elements/private-getter-access-on-inner-arrow-function.js: Added.

(C.prototype.get m):
(C.prototype.method):
(C):

  • test262/test/language/statements/class/elements/private-getter-access-on-inner-function.js: Added.

(C.prototype.get m):
(C.prototype.method.innerFunction):
(C.prototype.method):
(C):

  • test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js:

(let.createAndInstantiateClass):

  • test262/test/language/statements/class/elements/private-getter-is-not-a-own-property.js: Added.

(C.prototype.get m):
(C.prototype.checkPrivateGetter):
(C):

  • test262/test/language/statements/class/elements/private-getter-is-not-clobbered-by-computed-property.js: Added.

(C.prototype.get m):
(C.prototype.checkPrivateGetter):
(C):

  • test262/test/language/statements/class/elements/private-getter-visible-to-direct-eval-on-initializer.js: Added.

(C.prototype.get m):
(C):

  • test262/test/language/statements/class/elements/private-getter-visible-to-direct-eval.js: Added.

(C.prototype.get m):
(C.prototype.getWithEval):
(C):
(D.prototype.get m):
(D):

  • test262/test/language/statements/class/elements/private-method-access-on-inner-arrow-function.js: Added.

(C.prototype.m):
(C.prototype.method):
(C):

  • test262/test/language/statements/class/elements/private-method-access-on-inner-function.js: Added.

(C.prototype.m):
(C.prototype.method.innerFunction):
(C.prototype.method):
(C):

  • test262/test/language/statements/class/elements/private-method-is-not-a-own-property.js: Added.

(C.prototype.m):
(C.prototype.checkPrivateMethod):
(C):

  • test262/test/language/statements/class/elements/private-method-is-not-clobbered-by-computed-property.js: Added.

(C.prototype.m):
(C.prototype.checkPrivateMethod):
(C):

  • test262/test/language/statements/class/elements/private-method-visible-to-direct-eval-on-initializer.js: Added.

(C.prototype.m):
(C):

  • test262/test/language/statements/class/elements/private-method-visible-to-direct-eval.js: Added.

(C.prototype.m):
(C.prototype.getWithEval):
(C):
(D.prototype.m):
(D):

  • test262/test/language/statements/class/elements/private-setter-access-on-inner-arrow-function.js: Added.

(C.prototype.set m):
(C.prototype.method):
(C):

  • test262/test/language/statements/class/elements/private-setter-access-on-inner-function.js: Added.

(C.prototype.set m):
(C.prototype.method.innerFunction):
(C.prototype.method):
(C):

  • test262/test/language/statements/class/elements/private-setter-is-not-a-own-property.js: Added.

(C.prototype.set m):
(C.prototype.checkPrivateSetter):
(C):

  • test262/test/language/statements/class/elements/private-setter-is-not-clobbered-by-computed-property.js: Added.

(C.prototype.set m):
(C.prototype.checkPrivateSetter):
(C):

  • test262/test/language/statements/class/elements/private-setter-visible-to-direct-eval-on-initializer.js: Added.

(C.prototype.set m):
(C):

  • test262/test/language/statements/class/elements/private-setter-visible-to-direct-eval.js: Added.

(C.prototype.set m):
(C.prototype.setWithEval):
(C):
(D.prototype.set m):
(D):

  • test262/test/language/statements/class/elements/prod-private-getter-before-super-return-in-field-initializer.js:
  • test262/test/language/statements/class/elements/prod-private-method-before-super-return-in-field-initializer.js:
  • test262/test/language/statements/class/elements/prod-private-setter-before-super-return-in-field-initializer.js:
  • test262/test/language/statements/class/elements/super-access-inside-a-private-getter.js: Added.

(A.prototype.method):
(A):
(C.prototype.get m):
(C.prototype.access):
(C):

  • test262/test/language/statements/class/elements/super-access-inside-a-private-method.js: Added.

(A.prototype.method):
(A):
(C.prototype.m):
(C.prototype.access):
(C):

  • test262/test/language/statements/class/elements/super-access-inside-a-private-setter.js: Added.

(A.prototype.method):
(A):
(C.prototype.set m):
(C.prototype.access):
(C):

  • test262/test/language/statements/class/poisoned-underscore-proto.js: Added.

(A):

  • test262/test/language/statements/function/13.2-30-s.js:
  • test262/test262-Revision.txt:
8:50 PM Changeset in webkit [247468] by sbarati@apple.com
  • 5 edits
    2 adds in trunk

[WHLSL] Matrix memory layout should match HLSL by laying out columns linearly
https://bugs.webkit.org/show_bug.cgi?id=199215

Reviewed by Myles C. Maxfield.

Source/WebCore:

This patch makes it so that we lay out matrices in memory in the same
way HLSL does. This is by laying out columns linearly in memory. So a float4x4
composed by this series of floats in memory:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

composes this logical matrix:
[[ 0, 4, 8, 12]

[ 1, 5, 9, 13]
[ 2, 6, 10, 14]
[ 3, 7, 11, 15]]

To implement this, we switch to using an array to represent the memory
contents linear memory layout of a matrix. So the matrix float4x3 will now
be an array<float, 12> in metal. Then, we change the indexed getter and
setter methods for matrices to load and store from and to the correct
memory locations. The memory layout of matrices is observable to WHLSL
when using a matrix as an input/output to a shader.

Test: webgpu/whlsl-matrix-memory-layout.html

  • Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:

(WebCore::WHLSL::Metal::writeNativeFunction):

  • Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:

(WebCore::WHLSL::Metal::writeNativeType):

LayoutTests:

  • webgpu/whlsl-matrix-memory-layout-expected.txt: Added.
  • webgpu/whlsl-matrix-memory-layout.html: Added.
  • webgpu/whlsl-test-harness-test.html:
7:51 PM Changeset in webkit [247467] by Wenson Hsieh
  • 7 edits in trunk

[Text autosizing] [iPadOS] Product label text is clipped in portrait mode on the front page of sephora.com
https://bugs.webkit.org/show_bug.cgi?id=199806
<rdar://problem/52902482>

Reviewed by Zalan Bujtas.

Source/WebCore:

On sephora.com, some product label text is currently boosted by idempotent text autosizing, which causes the
labels be vertically clipped. This patch augments the idempotent text autosizing heuristic to avoid this case by
checking if the element to be boosted has a fixed height or max height, whose value is very close to a small
integer multiple of the line height. In this case, it's likely that the website expects the text to be no more
than a few lines' worth of height, so boosting the text is likely to break the page.

Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::isIdempotentTextAutosizingCandidate const):

  • rendering/style/TextSizeAdjustment.cpp:

(WebCore::AutosizeStatus::updateStatus):

  • rendering/style/TextSizeAdjustment.h:

Rename Fields::DisplayNone to Fields::AvoidSubtree to avoid introducing another bit in RenderStyle's inherited
flags.

LayoutTests:

Add a new test case to an existing layout test, which mimics the product label text on sephora.com's front page.

  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates-expected.txt:
  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html:
7:32 PM Changeset in webkit [247466] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[ Mojave WK1 ] Some Image tests are flakey failures and are failing in tandem with zoomed in or blank image results
https://bugs.webkit.org/show_bug.cgi?id=193108

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-07-15
Reviewed by Simon Fraser.

Add a workaround for <rdar://problem/17084993> in createBitmapContextFromWebView().
Re-request the snapshot at kCGWindowImageNominalResolution if it was captured
at the wrong scale.

  • DumpRenderTree/mac/PixelDumpSupportMac.mm:

(takeWindowSnapshot):
(createBitmapContextFromWebView):

5:53 PM Changeset in webkit [247465] by mmaxfield@apple.com
  • 11 edits in trunk/Source

New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653

Unreviewed watchOS build fix.

Source/WebCore:

  • page/ProcessWarming.cpp:

(WebCore::ProcessWarming::prewarmGlobally):

  • page/cocoa/MemoryReleaseCocoa.mm:

(WebCore::platformReleaseMemory):

  • platform/graphics/FontCascadeDescription.cpp:
  • platform/graphics/FontDescription.h:
  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::invalidateFontCache):
(WebCore::lookupFallbackFont):

  • platform/graphics/cocoa/FontDescriptionCocoa.cpp:

(WebCore::FontCascadeDescription::effectiveFamilyAt const):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:

(WebCore::FontFamilySpecificationCoreText::fontRanges const):

  • platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:

Source/WTF:

  • wtf/Platform.h:
5:43 PM Changeset in webkit [247464] by commit-queue@webkit.org
  • 12 edits in trunk/Source

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

completely messed up the patch (Requested by litherum on
#webkit).

Reverted changeset:

"New York font erroneously gets synthetic bold"
https://bugs.webkit.org/show_bug.cgi?id=199653
https://trac.webkit.org/changeset/247462

5:42 PM Changeset in webkit [247463] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Keyword lookup can use memcmp to get around unaligned load undefined behavior
https://bugs.webkit.org/show_bug.cgi?id=199650

Patch by Saagar Jha <saagarjha@apple.com> on 2019-07-15
Reviewed by Yusuke Suzuki.

Replace KeywordLookup's hand-rolled "memcmp" with the standard version, which reduces the need to deal with
endianness and unaligned loads.

  • KeywordLookupGenerator.py:

(Trie.printSubTreeAsC): Use memcmp instead of macros to test for matches.
(Trie.printAsC): Unspecialize Lexer::parseKeyword as templating over the character type reduces the amount of
code we need to generate and moves this task out of the Python script and into the C++ compiler.

5:17 PM Changeset in webkit [247462] by mmaxfield@apple.com
  • 14 edits in trunk

Source/WebCore:
Fix builds where HAVE_DESIGN_SYSTEM_UI_FONTS is not defined.

Patch by Simon Fraser <Simon Fraser> on 2019-07-11

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontWithFamilySpecialCase):

Source/WebKit:
New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653
<rdar://problem/51692592>

Reviewed by Simon Fraser.

Add the SPI to enable the new fonts.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetShouldAllowDesignSystemUIFonts):
(WKPreferencesGetShouldAllowDesignSystemUIFonts):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _shouldAllowDesignSystemUIFonts]):
(-[WKPreferences _setShouldAllowDesignSystemUIFonts:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Source/WTF:
New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653
<rdar://problem/51692592>

Reviewed by Simon Fraser.

  • wtf/Platform.h:

LayoutTests:
New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653
<rdar://problem/51692592>

Reviewed by Simon Fraser.

  • TestExpectations:
  • fast/text/design-system-ui-10-expected-mismatch.html: Added.
  • fast/text/design-system-ui-10.html: Added.
  • fast/text/design-system-ui-11-expected-mismatch.html: Added.
  • fast/text/design-system-ui-11.html: Added.
  • fast/text/design-system-ui-12-expected-mismatch.html: Added.
  • fast/text/design-system-ui-12.html: Added.
  • fast/text/design-system-ui-13-expected-mismatch.html: Added.
  • fast/text/design-system-ui-13.html: Added.
  • fast/text/design-system-ui-14-expected-mismatch.html: Added.
  • fast/text/design-system-ui-14.html: Added.
  • fast/text/design-system-ui-15-expected-mismatch.html: Added.
  • fast/text/design-system-ui-15.html: Added.
  • fast/text/design-system-ui-16-expected-mismatch.html: Added.
  • fast/text/design-system-ui-16.html: Added.
  • fast/text/design-system-ui-2-expected.html: Added.
  • fast/text/design-system-ui-2.html: Added.
  • fast/text/design-system-ui-3-expected-mismatch.html: Added.
  • fast/text/design-system-ui-3.html: Added.
  • fast/text/design-system-ui-4-expected-mismatch.html: Added.
  • fast/text/design-system-ui-4.html: Added.
  • fast/text/design-system-ui-5-expected-mismatch.html: Added.
  • fast/text/design-system-ui-5.html: Added.
  • fast/text/design-system-ui-6-expected.html: Added.
  • fast/text/design-system-ui-6.html: Added.
  • fast/text/design-system-ui-7-expected.html: Added.
  • fast/text/design-system-ui-7.html: Added.
  • fast/text/design-system-ui-8-expected-mismatch.html: Added.
  • fast/text/design-system-ui-8.html: Added.
  • fast/text/design-system-ui-9-expected-mismatch.html: Added.
  • fast/text/design-system-ui-9.html: Added.
  • fast/text/design-system-ui-expected.html: Added.
  • fast/text/design-system-ui.html: Added.
  • platform/mac/TestExpectations:
4:45 PM Changeset in webkit [247461] by beidson@apple.com
  • 9 edits in trunk

Make WKURLSchemeTask thread safe.
<rdar://problem/50471863> and https://bugs.webkit.org/show_bug.cgi?id=199764

Reviewed by Alex Christensen.

Source/WebKit:

Punt most of the WKURLSchemeTask operations back to the main thread.
Make accessing the NSURLRequest be thread safe with lock protection.

  • UIProcess/API/Cocoa/WKURLSchemeTask.mm:

(getExceptionTypeFromMainRunLoop):
(-[WKURLSchemeTaskImpl dealloc]):
(-[WKURLSchemeTaskImpl request]):
(-[WKURLSchemeTaskImpl _requestOnlyIfCached]):
(-[WKURLSchemeTaskImpl didReceiveResponse:]):
(-[WKURLSchemeTaskImpl didReceiveData:]):
(-[WKURLSchemeTaskImpl didFinish]):
(-[WKURLSchemeTaskImpl didFailWithError:]):
(-[WKURLSchemeTaskImpl _didPerformRedirection:newRequest:]):

  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::WebURLSchemeTask):
(WebKit::WebURLSchemeTask::~WebURLSchemeTask):
(WebKit::WebURLSchemeTask::didPerformRedirection):
(WebKit::WebURLSchemeTask::didReceiveResponse):
(WebKit::WebURLSchemeTask::didReceiveData):
(WebKit::WebURLSchemeTask::didComplete):
(WebKit::WebURLSchemeTask::pageDestroyed):
(WebKit::WebURLSchemeTask::stop):
(WebKit::WebURLSchemeTask::nsRequest const):

  • UIProcess/WebURLSchemeTask.h:

(WebKit::WebURLSchemeTask::identifier const):
(WebKit::WebURLSchemeTask::pageID const):
(WebKit::WebURLSchemeTask::process):
(WebKit::WebURLSchemeTask::process const): Deleted.
(WebKit::WebURLSchemeTask::request const): Deleted.

Source/WTF:

  • wtf/MainThread.cpp:

(WTF::callOnMainAndWait):
(WTF::callOnMainRunLoopAndWait):
(WTF::callOnMainThreadAndWait):

  • wtf/MainThread.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
4:09 PM Changeset in webkit [247460] by Wenson Hsieh
  • 8 edits in trunk/Source/WebKit

Followup to r247439
https://bugs.webkit.org/show_bug.cgi?id=199788
<rdar://problem/52142570>

Reviewed by Tim Horton.

As it turns out, sending modern async completion-handler based IPC messages while processing incoming sync
messages results in a debug assertion. Instead of migrating FontAtSelection to the new async IPC mechanism,
restore the older CallbackID-based async IPC.

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

(WebKit::WebPageProxy::fontAtSelection):
(WebKit::WebPageProxy::fontAtSelectionCallback):

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

(WebKit::WebPage::fontAtSelection):

4:06 PM Changeset in webkit [247459] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Crash under DisplayRefreshMonitorManager::displayWasUpdated()
https://bugs.webkit.org/show_bug.cgi?id=199808
<rdar://problem/53070144>

Reviewed by Geoffrey Garen.

Copy m_monitors before iterating over it because the calling displayLinkFired() on the
monitor may end up calling DisplayRefreshMonitorManager::displayDidRefresh() synchronously,
which removes the monitor from m_monitors.

  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::displayWasUpdated):

3:55 PM Changeset in webkit [247458] by jiewen_tan@apple.com
  • 2 edits in trunk/Tools

Unreviewed, a build fix after r247437

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

Added platform guard towards -[WKUIDelegate _presentingViewControllerForWebView:].

3:41 PM Changeset in webkit [247457] by ysuzuki@apple.com
  • 36 edits
    1 move
    139 adds
    2 deletes in trunk

[JSC] Improve wasm wpt test results by fixing miscellaneous issues
https://bugs.webkit.org/show_bug.cgi?id=199783

Reviewed by Mark Lam.

JSTests:

Fix our spec tests.

  • wasm/js-api/Module-compile.js:
  • wasm/js-api/test_basic_api.js:

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

  • wasm/js-api/validate.js:
  • wasm/js-api/web-assembly-instantiate.js:
  • wasm/spec-tests/jsapi.js:

(testJSAPI.get test):
(testJSAPI.set test):

LayoutTests/imported/w3c:

Import web-platform-tests/wasm/jsapi. Some of tests are failing just because imported wpt tests are old.
They are fixed in the upstream. When upgrading wpt tests, we can mark them PASS.

  • resources/import-expectations.json:
  • web-platform-tests/wasm/jsapi/assertions.js: Added.

(assert_function_name):
(assert_function_length):

  • web-platform-tests/wasm/jsapi/bad-imports.js: Added.

(test_bad_imports):

  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.html: Added.
  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.js: Added.

(test_bad_imports):

  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/constructor/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/global/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/global/constructor.any.js: Added.

(assert_Global):
(test):
(test.get assert_array_equals):
(string_appeared_here.test):
(string_appeared_here.toString):
(string_appeared_here.valueOf):
(string_appeared_here.name.format_value):

  • web-platform-tests/wasm/jsapi/global/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/global/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/global/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/global/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/global/value-set.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/value-set.any.html: Added.
  • web-platform-tests/wasm/jsapi/global/value-set.any.js: Added.

(test):
(string_appeared_here.name.of.immutableOptions.test):
(string_appeared_here.name.of.mutableOptions.test):

  • web-platform-tests/wasm/jsapi/global/value-set.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/value-set.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/global/valueOf.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/valueOf.any.html: Added.
  • web-platform-tests/wasm/jsapi/global/valueOf.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/global/valueOf.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/valueOf.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/global/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.html: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.js: Added.

(test_bad_imports):

  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor.any.js: Added.

(assert_exported_function):

  • web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/instance/exports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/exports.any.html: Added.
  • web-platform-tests/wasm/jsapi/instance/exports.any.js: Added.

(setup):
(test):

  • web-platform-tests/wasm/jsapi/instance/exports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/exports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/instance/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/instance/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/instance/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/instance/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/interface.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/interface.any.html: Added.
  • web-platform-tests/wasm/jsapi/interface.any.js: Added.

(test_operations):
(test):
(const.name.of.interfaces.test):

  • web-platform-tests/wasm/jsapi/interface.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/interface.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/buffer.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/buffer.any.html: Added.
  • web-platform-tests/wasm/jsapi/memory/buffer.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/memory/buffer.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/buffer.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/memory/constructor.any.js: Added.

(assert_Memory):
(test):
(const.value.of.outOfRangeValues.test):
(test.get new):
(test.get assert_array_equals):

  • web-platform-tests/wasm/jsapi/memory/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/grow.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/grow.any.html: Added.
  • web-platform-tests/wasm/jsapi/memory/grow.any.js: Added.

(assert_ArrayBuffer):
(test):
(valueOf):
(const.value.of.outOfRangeValues.test):

  • web-platform-tests/wasm/jsapi/memory/grow.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/grow.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/memory/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/memory/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/module/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/constructor.any.js: Added.

(setup):
(test):

  • web-platform-tests/wasm/jsapi/module/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/customSections.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/customSections.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/customSections.any.js: Added.

(assert_ArrayBuffer):
(assert_sections):
(setup):
(test):

  • web-platform-tests/wasm/jsapi/module/customSections.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/customSections.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/exports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/exports.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/exports.any.js: Added.

(setup):
(assert_ModuleExportDescriptor):
(assert_exports):
(test):

  • web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/exports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/imports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/imports.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/imports.any.js: Added.

(assert_ModuleImportDescriptor):
(assert_imports):
(setup):
(test):

  • web-platform-tests/wasm/jsapi/module/imports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/imports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/module/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/table/assertions.js: Added.

(assert_equal_to_array):

  • web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/constructor.any.js: Added.

(assert_Table):
(test):
(const.value.of.outOfRangeValues.test):
(test.get const):

  • web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/get-set.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/get-set.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/get-set.any.js: Added.

(setup):
(test):
(test.set assert_equal_to_array):
(test.const.fn):
(valueOf):
(const.value.of.outOfRangeValues.test):

  • web-platform-tests/wasm/jsapi/table/get-set.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/get-set.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/grow.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/grow.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/grow.any.js: Added.

(nulls):
(test):
(valueOf):
(const.value.of.outOfRangeValues.test):

  • web-platform-tests/wasm/jsapi/table/grow.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/grow.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/length.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/length.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/length.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/table/length.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/length.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/table/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/wasm-constants.js: Added.

(bytes):
(bytesWithHeader):
(makeSig):
(makeSig_v_x):
(makeSig_v_xx):
(makeSig_r_v):
(makeSig_r_x):
(makeSig_r_xx):
(assertTraps):
(assertWasmThrows):

  • web-platform-tests/wasm/jsapi/wasm-module-builder.js: Added.

(Binary.prototype.emit_u8):
(Binary.prototype.emit_u16):
(Binary.prototype.emit_u32):
(Binary.prototype.emit_u32v):
(Binary.prototype.emit_bytes):
(Binary.prototype.emit_string):
(Binary.prototype.emit_header):
(Binary.prototype.emit_section):
(Binary):
(WasmFunctionBuilder):
(WasmFunctionBuilder.prototype.exportAs):
(WasmFunctionBuilder.prototype.exportFunc):
(WasmFunctionBuilder.prototype.addBody):
(WasmFunctionBuilder.prototype.addLocals):
(WasmFunctionBuilder.prototype.end):
(WasmGlobalBuilder):
(WasmGlobalBuilder.prototype.exportAs):
(WasmModuleBuilder):
(WasmModuleBuilder.prototype.addStart):
(WasmModuleBuilder.prototype.addMemory):
(WasmModuleBuilder.prototype.addExplicitSection):
(WasmModuleBuilder.prototype.addType):
(WasmModuleBuilder.prototype.addGlobal):
(WasmModuleBuilder.prototype.addFunction):
(WasmModuleBuilder.prototype.addImport):
(WasmModuleBuilder.prototype.addImportedGlobal):
(WasmModuleBuilder.prototype.addImportedMemory):
(WasmModuleBuilder.prototype.addImportedTable):
(WasmModuleBuilder.prototype.addExport):
(WasmModuleBuilder.prototype.addExportOfKind):
(WasmModuleBuilder.prototype.addDataSegment):
(WasmModuleBuilder.prototype.exportMemoryAs):
(WasmModuleBuilder.prototype.addFunctionTableInit):
(WasmModuleBuilder.prototype.appendToTable):
(WasmModuleBuilder.prototype.setFunctionTableLength):
(WasmModuleBuilder.prototype.toArray):
(WasmModuleBuilder.prototype.toBuffer):
(WasmModuleBuilder.prototype.instantiate):

Source/JavaScriptCore:

This patch fixes miscellaneous issues in our Wasm JS API implementation to improve WPT score.
I picked trivial ones in this patch to make this easily reviewable.

  1. Remove WebAssemblyPrototype. It does not exist in the spec. Merging WebAssemblyPrototype into JSWebAssembly.
  2. Fix various attributes. It does not match to the usual JSC builtin's convention. But this change is correct because they are changed to be matched against WebIDL definition, and WebAssembly implementation follows WebIDL. In the future, we could move WebCore WebIDL things into WTF layer and even use (or leverage some of utility functions) in our WebAssembly JS API implementation.
  3. Fix how we interpret "present" in WebAssembly spec. This does not mean HasProperty? result. It follows to WebIDL spec, and it means that Get? result is not undefined.
  4. Add argument count check to Module.customSections, which is required because the method is defined in WebIDL.
  5. Fix toNonWrappingUint32 to match it to WebIDL's conversion rule.
  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • builtins/WebAssembly.js: Renamed from Source/JavaScriptCore/builtins/WebAssemblyPrototype.js.
  • jit/Repatch.cpp:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSModuleLoader.cpp:

(JSC::moduleLoaderParseModule):

  • wasm/js/JSWebAssembly.cpp:

(JSC::JSWebAssembly::create):
(JSC::JSWebAssembly::finishCreation):
(JSC::reject):
(JSC::webAssemblyModuleValidateAsyncInternal):
(JSC::webAssemblyCompileFunc):
(JSC::resolve):
(JSC::JSWebAssembly::webAssemblyModuleValidateAsync):
(JSC::instantiate):
(JSC::compileAndInstantiate):
(JSC::JSWebAssembly::instantiate):
(JSC::webAssemblyModuleInstantinateAsyncInternal):
(JSC::JSWebAssembly::webAssemblyModuleInstantinateAsync):
(JSC::webAssemblyInstantiateFunc):
(JSC::webAssemblyValidateFunc):
(JSC::webAssemblyCompileStreamingInternal):
(JSC::webAssemblyInstantiateStreamingInternal):

  • wasm/js/JSWebAssembly.h:
  • wasm/js/JSWebAssemblyHelpers.h:

(JSC::toNonWrappingUint32):

  • wasm/js/WebAssemblyCompileErrorConstructor.cpp:

(JSC::WebAssemblyCompileErrorConstructor::finishCreation):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::WebAssemblyInstanceConstructor::finishCreation):

  • wasm/js/WebAssemblyInstancePrototype.cpp:
  • wasm/js/WebAssemblyLinkErrorConstructor.cpp:

(JSC::WebAssemblyLinkErrorConstructor::finishCreation):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::constructJSWebAssemblyMemory):
(JSC::WebAssemblyMemoryConstructor::finishCreation):

  • wasm/js/WebAssemblyMemoryPrototype.cpp:
  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::webAssemblyModuleCustomSections):
(JSC::WebAssemblyModuleConstructor::finishCreation):

  • wasm/js/WebAssemblyPrototype.cpp: Removed.
  • wasm/js/WebAssemblyPrototype.h: Removed.
  • wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:

(JSC::WebAssemblyRuntimeErrorConstructor::finishCreation):

  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::constructJSWebAssemblyTable):
(JSC::WebAssemblyTableConstructor::finishCreation):

  • wasm/js/WebAssemblyTablePrototype.cpp:

Source/WebCore:

Remove WebAssemblyPrototype.

Tests: imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.html

imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/interface.any.html
imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker.html

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::compileStreaming):
(WebCore::JSDOMWindowBase::instantiateStreaming):

LayoutTests:

  • platform/ios-simulator/TestExpectations:
  • platform/win/TestExpectations:
3:34 PM Changeset in webkit [247456] by Alan Coon
  • 30 edits
    32 deletes in tags/Safari-608.1.36

Revert r247377. rdar://problem/53125241

3:34 PM Changeset in webkit [247455] by Alan Coon
  • 2 edits in tags/Safari-608.1.36/Source/WebCore

Revert r247379. rdar://problem/53125241

3:29 PM Changeset in webkit [247454] by dino@apple.com
  • 2 edits in trunk/Source/WTF

MacCatalyst asserts when command key is raised
https://bugs.webkit.org/show_bug.cgi?id=199805
<rdar://problem/53120393>

Reviewed by Tim Horton.

Add USE_UIKIT_KEYBOARD_ADDITIONS for iOS 13+ and macCatalyst.

  • wtf/FeatureDefines.h:
3:27 PM Changeset in webkit [247453] by dino@apple.com
  • 15 edits in trunk/Source

[WebGL] Remove software rendering and simplify context creation on macOS
https://bugs.webkit.org/show_bug.cgi?id=199789

Reviewed by Sam Weinig.

Source/WebCore:

We don't ever want to fall-back to the software renderer. We'd be better
off failing to create the context completely.

Also, the number of fall-back attempts we were making before hitting
the software renderer was overkill. All hardware we support should
handle a 32bpp buffer.

Lastly, we don't want to support supersampling - multisampling only.

I lied… there is one more thing - failing to create the context
was causing an ASSERT trying to remove the GC3D from the global list.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):

  • page/Settings.yaml: Remove forceSoftwareWebGL setting.
  • platform/graphics/GraphicsContext3DAttributes.h:
  • platform/graphics/GraphicsContext3DManager.cpp:

(WebCore::GraphicsContext3DManager::addContext):
(WebCore::GraphicsContext3DManager::removeContext):
(WebCore::GraphicsContext3DManager::removeContextRequiringHighPerformance):

  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm:

(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::setPixelFormat): Deleted.

Source/WebKit:

Remove force software WebGL setting.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetForceSoftwareWebGLRendering): Deleted.
(WKPreferencesGetForceSoftwareWebGLRendering): Deleted.

  • UIProcess/API/C/WKPreferencesRefPrivate.h:

Source/WebKitLegacy/mac:

Remove force software WebGL setting.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences forceSoftwareWebGLRendering]): Deleted.
(-[WebPreferences setForceSoftwareWebGLRendering:]): Deleted.

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

(-[WebView _preferencesChanged:]):

3:24 PM Changeset in webkit [247452] by dino@apple.com
  • 52 edits in trunk/Source/WebCore

Move more WebGL things into unified builds
https://bugs.webkit.org/show_bug.cgi?id=199787

Reviewed by Wenson Hsieh.

Unify as many WebGL files as possible.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/WebGLFramebuffer.cpp:
  • html/canvas/WebGLObject.h: Move a helper function into an inline.

(WebCore::objectOrZero):

  • html/canvas/WebGLRenderingContextBase.cpp:
  • platform/graphics/cocoa/FontCacheCoreText.cpp:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:
3:14 PM Changeset in webkit [247451] by Alan Coon
  • 2 edits in tags/Safari-608.1.36/Source/WebKit

Cherry-pick r247436. rdar://problem/53106179

REGRESSION: Chase app crashes immediately after authentication
https://bugs.webkit.org/show_bug.cgi?id=199798
<rdar://problem/53106179>

Reviewed by Alex Christensen.

After r247411, we sometimes try to consult _page from WKWebView, before WKWebView's _page has been set. This
happens under a check for -[WKWebView _isEditable], from within -[WKContentView setupInteraction], which happens
if the host app is not linked on the iOS 12 SDK or earlier. To mitigate this, simply add a null check in
-_isEditable.

There's currently no great way to test this, since we don't have a mechanism for simulating linked-on checks.

  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _isEditable]):

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

2:40 PM Changeset in webkit [247450] by Keith Rollin
  • 2 edits in trunk/Source/WebCore

Add missing webgpu includes
https://bugs.webkit.org/show_bug.cgi?id=199802
<rdar://problem/53119120>

Reviewed by Myles C. Maxfield.

WHLSLFunctionWriter.cpp fails to compile on tvOS and watchOS due to
missing includes. This file likely compiles on other platforms due to
the Unified Sources facility that clumps several implementation files
together, exposing those implementation files to the others' includes.
It fails on tvOS and watchOS due to the different ways these
implementation files can get clumped together on different platforms.

No new tests as there is no functional change.

  • Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
2:36 PM Changeset in webkit [247449] by Alan Coon
  • 16 edits
    14 deletes in tags/Safari-608.1.36

Revert r247366. rdar://problem/53118665

2:36 PM Changeset in webkit [247448] by Alan Coon
  • 2 edits in tags/Safari-608.1.36/Source/WebCore

Revert r247378. rdar://problem/53118665

2:36 PM Changeset in webkit [247447] by Alan Coon
  • 11 edits
    3 deletes in tags/Safari-608.1.36/Source/WebCore

Revert r247397. rdar://problem/53118665

1:45 PM Changeset in webkit [247446] by Alan Coon
  • 7 edits in trunk/Source

Versioning.

1:42 PM Changeset in webkit [247445] by Michael Catanzaro
  • 36 edits
    2 copies
    1 move
    1 delete in trunk

Unreviewed, rolling out r247440.

Broke builds

Reverted changeset:

"[JSC] Improve wasm wpt test results by fixing miscellaneous
issues"
https://bugs.webkit.org/show_bug.cgi?id=199783
https://trac.webkit.org/changeset/247440

1:40 PM Changeset in webkit [247444] by dbates@webkit.org
  • 15 edits
    4 adds in trunk

Typing into a cell in a Google Sheet lags behind by one character
https://bugs.webkit.org/show_bug.cgi?id=199587
<rdar://problem/51616845>

Reviewed by Brent Fulgham.

Source/WebCore:

Add a Google Sheets quirk. Put all DOM timers scheduled from keydown and keypress event listeners
into a holding tank. The timers continue to tick, but are barred from executing their action until
the next text insertion or deletion or 32 ms (on device) have elapsed, whichever is sooner. We only
allocate a holding tank once per document, only if the quirk is active, and this allocation is done
when the document schedules a timer on keydown or keypress. The holding tank lives for the lifetime
of the document.

The story behind the quirk:

On keypress Google Sheets schedules timers and expects that a DOM update will occur (i.e. text
will be inserted or deleted) within the same event loop iteration as the dispatched keypress. The
UI Events spec. [1] makes no such guarantee of when a DOM update must occur in relation to the keypress
event. It could happen in the same event loop iteration as the key press (as Google expects), the
next iteration, 500ms later, 2 minutes later, etc. What the spec does guarantee is that by the time
a DOM input event is dispatched that the DOM will be updated. And this is the solution to the problem
Google Sheets is trying to solve, but is doing so using pre-IE 9 technology (though similar
functionality was available via onpropertychange in IE < 9).

See also <https://github.com/w3c/uievents/issues/238>, which is tracking a spec. text update for
this quirk.

Test: fast/events/ios/dom-update-on-keydown-quirk.html

[1] <https://w3c.github.io/uievents/> (Editor's Draft, 14 October 2018)

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

Add some files to the project.

  • dom/Document.cpp:

(WebCore::Document::domTimerHoldingTank): Added.

  • dom/Document.h:

(WebCore::Document::domTimerHoldingTankIfExists): Added.

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::install): Put the newly instantiated timer into the holding tank.
(WebCore::DOMTimer::removeById): Remove the timer from the holding tank.
(WebCore::DOMTimer::fired): Check if the timer is in the holding tank. If it is and it is a one-
shot timer then schedule it for the next event loop iteration. If it's a repeating timer just
let it continue ticking. Otherwise, do what we no now and execute the timer's action. The reason
we do not suspend timers in the holding tank is because:

  1. Far out timers (Google Sheets registers timers as far out as 5 minutes!) are not penalized. Though smart supension logic could avoid this. See (3).
  1. Empirical observations indicate that the keyboard will perform the insertion or deletion reasonably quickly (not the same event loop iteration as the keydown, but within two iterations out). So, the timers in the holding tank are short-lived.
  1. Simplifies the code. There is no need to keep additional bookkeeping to track multiple timer suspension reasons (timers currently can only have one suspension reason) or alternatively defer scheduling a timer until a later time and computing a new "fair" firing time when scheduled.
  • page/EventHandler.cpp:

(WebCore::EventHandler::internalKeyEvent): Place a token on the stack to put all DOM timers
scheduled on keydown and keypress into the holding tank if the quirk is enabled.

  • page/Quirks.cpp:

(WebCore::Quirks::needsDeferKeyDownAndKeyPressTimersUntilNextEditingCommand const): Added.

  • page/Quirks.h:
  • page/Settings.yaml: Added setting so that this quirk can be enabled from a layout test. This setting

also lets us enable the quirk for all sites or for certain third-party apps if desired.

  • page/ios/DOMTimerHoldingTank.cpp: Added.

(WebCore::DOMTimerHoldingTank::DOMTimerHoldingTank):
(WebCore::DOMTimerHoldingTank::add):
(WebCore::DOMTimerHoldingTank::remove):
(WebCore::DOMTimerHoldingTank::contains):
(WebCore::DOMTimerHoldingTank::removeAll):
(WebCore::DOMTimerHoldingTank::stopExceededMaximumHoldTimer):

  • page/ios/DOMTimerHoldingTank.h: Added.

(WebCore::DeferDOMTimersForScope::DeferDOMTimersForScope):
(WebCore::DeferDOMTimersForScope::~DeferDOMTimersForScope):
(WebCore::DeferDOMTimersForScope::isDeferring):

Source/WebKit:

Remove all timers from the holding tank on text insertion or deletion (represented as an
editing command). Timers that were in the holding tank never stopped ticking and will now
be able to execute their action.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::executeEditingCommand):
(WebKit::WebPage::insertTextAsync):
(WebKit::WebPage::setCompositionAsync):
(WebKit::WebPage::confirmCompositionAsync):
Call platformWillPerformEditingCommand().

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::platformWillPerformEditingCommand): Added.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformWillPerformEditingCommand): Remove all the timers from the holding
tank if we have a holding tank.

LayoutTests:

Add a test that enables the quirk and ensures that the DOM is up-to-date on expiration of a
zero timer scheduled from keydown, keypress, keyup, and input.

  • fast/events/ios/dom-update-on-keydown-quirk-expected.txt: Added.
  • fast/events/ios/dom-update-on-keydown-quirk.html: Added.
1:36 PM Changeset in webkit [247443] by Alan Coon
  • 1 copy in tags/Safari-608.1.36

Tag Safari-608.1.36.

1:35 PM Changeset in webkit [247442] by Ryan Haddad
  • 19 edits
    17 deletes in trunk

Unreviewed, rolling out r247397, r247378, r247366.

Broke watchOS builds.

Reverted changesets:

"[WebGPU] Implement GPUError and error scopes"
https://bugs.webkit.org/show_bug.cgi?id=199655
https://trac.webkit.org/changeset/247366/webkit

"[WebGPU] Move error scopes out of GPUDevice for more portable error generation"
https://bugs.webkit.org/show_bug.cgi?id=199740
https://trac.webkit.org/changeset/247397/webkit

1:23 PM Changeset in webkit [247441] by commit-queue@webkit.org
  • 8 edits in trunk

MathML WPT test for RadicalDegreeBottomRaisePercent fails
https://bugs.webkit.org/show_bug.cgi?id=183631

Patch by Rob Buis <rbuis@igalia.com> on 2019-07-15
Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

Adjust test expectation.

  • web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1-expected.txt:

Source/WebCore:

When stretching the radical operator also take thickness
and radical gap into account:
https://mathml-refresh.github.io/mathml-core/#radicals-msqrt-mroot

Test: imported/w3c/web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1.html

  • rendering/mathml/RenderMathMLRoot.cpp:

(WebCore::RenderMathMLRoot::layoutBlock):

LayoutTests:

Adjust test expectations.

  • platform/ios/mathml/presentation/roots-expected.txt:
  • platform/mac/mathml/presentation/roots-expected.txt:
  • platform/win/mathml/presentation/roots-expected.txt:
12:26 PM Changeset in webkit [247440] by ysuzuki@apple.com
  • 36 edits
    1 move
    139 adds
    2 deletes in trunk

[JSC] Improve wasm wpt test results by fixing miscellaneous issues
https://bugs.webkit.org/show_bug.cgi?id=199783

Reviewed by Mark Lam.

JSTests:

Fix our spec tests.

  • wasm/js-api/Module-compile.js:
  • wasm/js-api/test_basic_api.js:

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

  • wasm/js-api/validate.js:
  • wasm/js-api/web-assembly-instantiate.js:
  • wasm/spec-tests/jsapi.js:

(testJSAPI.get test):
(testJSAPI.set test):

LayoutTests/imported/w3c:

Import web-platform-tests/wasm/jsapi. Some of tests are failing just because imported wpt tests are old.
They are fixed in the upstream. When upgrading wpt tests, we can mark them PASS.

  • resources/import-expectations.json:
  • web-platform-tests/wasm/jsapi/assertions.js: Added.

(assert_function_name):
(assert_function_length):

  • web-platform-tests/wasm/jsapi/bad-imports.js: Added.

(test_bad_imports):

  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.html: Added.
  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.js: Added.

(test_bad_imports):

  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/constructor/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/global/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/global/constructor.any.js: Added.

(assert_Global):
(test):
(test.get assert_array_equals):
(string_appeared_here.test):
(string_appeared_here.toString):
(string_appeared_here.valueOf):
(string_appeared_here.name.format_value):

  • web-platform-tests/wasm/jsapi/global/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/global/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/global/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/global/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/global/value-set.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/value-set.any.html: Added.
  • web-platform-tests/wasm/jsapi/global/value-set.any.js: Added.

(test):
(string_appeared_here.name.of.immutableOptions.test):
(string_appeared_here.name.of.mutableOptions.test):

  • web-platform-tests/wasm/jsapi/global/value-set.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/value-set.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/global/valueOf.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/valueOf.any.html: Added.
  • web-platform-tests/wasm/jsapi/global/valueOf.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/global/valueOf.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/global/valueOf.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/global/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.html: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.js: Added.

(test_bad_imports):

  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor.any.js: Added.

(assert_exported_function):

  • web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/instance/exports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/exports.any.html: Added.
  • web-platform-tests/wasm/jsapi/instance/exports.any.js: Added.

(setup):
(test):

  • web-platform-tests/wasm/jsapi/instance/exports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/exports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/instance/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/instance/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/instance/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/instance/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/instance/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/interface.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/interface.any.html: Added.
  • web-platform-tests/wasm/jsapi/interface.any.js: Added.

(test_operations):
(test):
(const.name.of.interfaces.test):

  • web-platform-tests/wasm/jsapi/interface.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/interface.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/buffer.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/buffer.any.html: Added.
  • web-platform-tests/wasm/jsapi/memory/buffer.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/memory/buffer.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/buffer.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/memory/constructor.any.js: Added.

(assert_Memory):
(test):
(const.value.of.outOfRangeValues.test):
(test.get new):
(test.get assert_array_equals):

  • web-platform-tests/wasm/jsapi/memory/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/grow.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/grow.any.html: Added.
  • web-platform-tests/wasm/jsapi/memory/grow.any.js: Added.

(assert_ArrayBuffer):
(test):
(valueOf):
(const.value.of.outOfRangeValues.test):

  • web-platform-tests/wasm/jsapi/memory/grow.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/grow.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/memory/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/memory/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/memory/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/memory/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/module/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/constructor.any.js: Added.

(setup):
(test):

  • web-platform-tests/wasm/jsapi/module/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/customSections.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/customSections.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/customSections.any.js: Added.

(assert_ArrayBuffer):
(assert_sections):
(setup):
(test):

  • web-platform-tests/wasm/jsapi/module/customSections.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/customSections.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/exports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/exports.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/exports.any.js: Added.

(setup):
(assert_ModuleExportDescriptor):
(assert_exports):
(test):

  • web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/exports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/imports.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/imports.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/imports.any.js: Added.

(assert_ModuleImportDescriptor):
(assert_imports):
(setup):
(test):

  • web-platform-tests/wasm/jsapi/module/imports.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/imports.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/module/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/module/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/module/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/module/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/table/assertions.js: Added.

(assert_equal_to_array):

  • web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/constructor.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/constructor.any.js: Added.

(assert_Table):
(test):
(const.value.of.outOfRangeValues.test):
(test.get const):

  • web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/constructor.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/get-set.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/get-set.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/get-set.any.js: Added.

(setup):
(test):
(test.set assert_equal_to_array):
(test.const.fn):
(valueOf):
(const.value.of.outOfRangeValues.test):

  • web-platform-tests/wasm/jsapi/table/get-set.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/get-set.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/grow.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/grow.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/grow.any.js: Added.

(nulls):
(test):
(valueOf):
(const.value.of.outOfRangeValues.test):

  • web-platform-tests/wasm/jsapi/table/grow.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/grow.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/length.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/length.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/length.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/table/length.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/length.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/toString.any-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/toString.any.html: Added.
  • web-platform-tests/wasm/jsapi/table/toString.any.js: Added.

(test):

  • web-platform-tests/wasm/jsapi/table/toString.any.worker-expected.txt: Added.
  • web-platform-tests/wasm/jsapi/table/toString.any.worker.html: Added.
  • web-platform-tests/wasm/jsapi/table/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/w3c-import.log: Added.
  • web-platform-tests/wasm/jsapi/wasm-constants.js: Added.

(bytes):
(bytesWithHeader):
(makeSig):
(makeSig_v_x):
(makeSig_v_xx):
(makeSig_r_v):
(makeSig_r_x):
(makeSig_r_xx):
(assertTraps):
(assertWasmThrows):

  • web-platform-tests/wasm/jsapi/wasm-module-builder.js: Added.

(Binary.prototype.emit_u8):
(Binary.prototype.emit_u16):
(Binary.prototype.emit_u32):
(Binary.prototype.emit_u32v):
(Binary.prototype.emit_bytes):
(Binary.prototype.emit_string):
(Binary.prototype.emit_header):
(Binary.prototype.emit_section):
(Binary):
(WasmFunctionBuilder):
(WasmFunctionBuilder.prototype.exportAs):
(WasmFunctionBuilder.prototype.exportFunc):
(WasmFunctionBuilder.prototype.addBody):
(WasmFunctionBuilder.prototype.addLocals):
(WasmFunctionBuilder.prototype.end):
(WasmGlobalBuilder):
(WasmGlobalBuilder.prototype.exportAs):
(WasmModuleBuilder):
(WasmModuleBuilder.prototype.addStart):
(WasmModuleBuilder.prototype.addMemory):
(WasmModuleBuilder.prototype.addExplicitSection):
(WasmModuleBuilder.prototype.addType):
(WasmModuleBuilder.prototype.addGlobal):
(WasmModuleBuilder.prototype.addFunction):
(WasmModuleBuilder.prototype.addImport):
(WasmModuleBuilder.prototype.addImportedGlobal):
(WasmModuleBuilder.prototype.addImportedMemory):
(WasmModuleBuilder.prototype.addImportedTable):
(WasmModuleBuilder.prototype.addExport):
(WasmModuleBuilder.prototype.addExportOfKind):
(WasmModuleBuilder.prototype.addDataSegment):
(WasmModuleBuilder.prototype.exportMemoryAs):
(WasmModuleBuilder.prototype.addFunctionTableInit):
(WasmModuleBuilder.prototype.appendToTable):
(WasmModuleBuilder.prototype.setFunctionTableLength):
(WasmModuleBuilder.prototype.toArray):
(WasmModuleBuilder.prototype.toBuffer):
(WasmModuleBuilder.prototype.instantiate):

Source/JavaScriptCore:

This patch fixes miscellaneous issues in our Wasm JS API implementation to improve WPT score.
I picked trivial ones in this patch to make this easily reviewable.

  1. Remove WebAssemblyPrototype. It does not exist in the spec. Merging WebAssemblyPrototype into JSWebAssembly.
  2. Fix various attributes. It does not match to the usual JSC builtin's convention. But this change is correct because they are changed to be matched against WebIDL definition, and WebAssembly implementation follows WebIDL. In the future, we could move WebCore WebIDL things into WTF layer and even use (or leverage some of utility functions) in our WebAssembly JS API implementation.
  3. Fix how we interpret "present" in WebAssembly spec. This does not mean HasProperty? result. It follows to WebIDL spec, and it means that Get? result is not undefined.
  4. Add argument count check to Module.customSections, which is required because the method is defined in WebIDL.
  5. Fix toNonWrappingUint32 to match it to WebIDL's conversion rule.
  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • builtins/WebAssembly.js: Renamed from Source/JavaScriptCore/builtins/WebAssemblyPrototype.js.
  • jit/Repatch.cpp:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSModuleLoader.cpp:

(JSC::moduleLoaderParseModule):

  • wasm/js/JSWebAssembly.cpp:

(JSC::JSWebAssembly::create):
(JSC::JSWebAssembly::finishCreation):
(JSC::reject):
(JSC::webAssemblyModuleValidateAsyncInternal):
(JSC::webAssemblyCompileFunc):
(JSC::resolve):
(JSC::JSWebAssembly::webAssemblyModuleValidateAsync):
(JSC::instantiate):
(JSC::compileAndInstantiate):
(JSC::JSWebAssembly::instantiate):
(JSC::webAssemblyModuleInstantinateAsyncInternal):
(JSC::JSWebAssembly::webAssemblyModuleInstantinateAsync):
(JSC::webAssemblyInstantiateFunc):
(JSC::webAssemblyValidateFunc):
(JSC::webAssemblyCompileStreamingInternal):
(JSC::webAssemblyInstantiateStreamingInternal):

  • wasm/js/JSWebAssembly.h:
  • wasm/js/JSWebAssemblyHelpers.h:

(JSC::toNonWrappingUint32):

  • wasm/js/WebAssemblyCompileErrorConstructor.cpp:

(JSC::WebAssemblyCompileErrorConstructor::finishCreation):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::WebAssemblyInstanceConstructor::finishCreation):

  • wasm/js/WebAssemblyInstancePrototype.cpp:
  • wasm/js/WebAssemblyLinkErrorConstructor.cpp:

(JSC::WebAssemblyLinkErrorConstructor::finishCreation):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::constructJSWebAssemblyMemory):
(JSC::WebAssemblyMemoryConstructor::finishCreation):

  • wasm/js/WebAssemblyMemoryPrototype.cpp:
  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::webAssemblyModuleCustomSections):
(JSC::WebAssemblyModuleConstructor::finishCreation):

  • wasm/js/WebAssemblyPrototype.cpp: Removed.
  • wasm/js/WebAssemblyPrototype.h: Removed.
  • wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:

(JSC::WebAssemblyRuntimeErrorConstructor::finishCreation):

  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::constructJSWebAssemblyTable):
(JSC::WebAssemblyTableConstructor::finishCreation):

  • wasm/js/WebAssemblyTablePrototype.cpp:

Source/WebCore:

Remove WebAssemblyPrototype.

Tests: imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.html

imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.html
imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/interface.any.html
imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker.html
imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.html
imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker.html

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::compileStreaming):
(WebCore::JSDOMWindowBase::instantiateStreaming):

LayoutTests:

  • platform/ios-simulator/TestExpectations:
  • platform/win/TestExpectations:
12:09 PM Changeset in webkit [247439] by Wenson Hsieh
  • 10 edits in trunk

[macOS 10.15] Cannot unbold selected text when the system font is used
https://bugs.webkit.org/show_bug.cgi?id=199788
<rdar://problem/52142570>

Reviewed by Tim Horton.

Source/WebKit:

In macOS 10.15, +[NSFont fontWithName:size:] no longer recognizes system fonts (of name
".SFNS-*") and returns nil instead. However, our existing implementation of
WebPageProxy::fontAtSelection works by grabbing the font name in the web process, and
sending it over to the UI process, where it is mapped to an NSFont. As a result, this always
results in a nil font in macOS 10.15, which causes us to never update NSFontManager's
selected font. In turn, this means that once selected text is bolded, it can't be unbolded
via NSFontManager, since NSFontManager thinks that the text is still not bold.

To fix this, we simply encode and send a platform FontInfo instead of sending the font name.
This allows the UI process to reconstruct NSFonts from font attribute dictionaries instead,
and update the font manager.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateFontManagerIfNeeded):

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

(WebKit::WebPageProxy::fontAtSelection):

Refactor this to send a FontInfo (containing a font attribute dictionary) instead of a font
name.

(WebKit::WebPageProxy::fontAtSelectionCallback): Deleted.

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

Change FontAtSelection to use sendWithAsyncReply instead of sending a callback ID. This also
allows us to remove FontAtSelectionCallback.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::fontAtSelection):

Tools:

Add a new API test to verify that bolding and unbolding updates the
shared font manager's selected font.

  • TestWebKitAPI/Tests/mac/FontManagerTests.mm:

(TestWebKitAPI::TEST):

11:59 AM Changeset in webkit [247438] by youenn@apple.com
  • 20 edits
    2 adds in trunk

Enable a debug WebRTC mode without any encryption
https://bugs.webkit.org/show_bug.cgi?id=199177
<rdar://problem/52074986>

Reviewed by Eric Carlson.

Source/JavaScriptCore:

  • inspector/protocol/Page.json:

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:

Source/WebCore:

For every RTCPeerConnection, first set whether to use encryption or not
based on page settings.
If encryption is disabled, log it.
Add internals API to toggle the switch from tests.
Test: webrtc/disable-encryption.html

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::RTCPeerConnection):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::createLibWebRTCPeerConnectionBackend):

  • inspector/agents/InspectorPageAgent.cpp:
  • page/Settings.yaml:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::LibWebRTCProvider::setEnableWebRTCEncryption):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setEnableWebRTCEncryption):

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

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:

LayoutTests:

  • webrtc/disable-encryption-expected.txt: Added.
  • webrtc/disable-encryption.html: Added.
11:56 AM Changeset in webkit [247437] by jiewen_tan@apple.com
  • 4 edits in trunk

[iOS] SOAuthorizationSession should tell AppSSO whether the UIClient is capable of showing the extension UI
https://bugs.webkit.org/show_bug.cgi?id=199790
<rdar://problem/52790112>

Reviewed by Brent Fulgham.

Source/WebKit:

On iOS, WebKit relies on a SPI -[WKUIDelegatePrivate _presentingViewControllerForWebView:] to present the
extension UI. However, third party clients often don't implement this SPI. Therefore, WebKit will not be
able to present the extension UI for them.

To be able to show the extension UI for third party WebKit clients, WebKit should unset SOAuthorization.enableEmbeddedAuthorizationViewController
whenever clients don't implement the above SPI such that AppSSO could show the UI in their UI process.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::start):

Tools:

Add tests to check SOAuthorization.enableEmbeddedAuthorizationViewController accordingly.

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(-[TestSOAuthorizationDelegate _presentingViewControllerForWebView:]):
(configureSOAuthorizationWebView):
(TestWebKitAPI::TEST):
(-[TestSOAuthorizationNavigationDelegate init]): Deleted.
(-[TestSOAuthorizationNavigationDelegate webView:didFinishNavigation:]): Deleted.
(-[TestSOAuthorizationNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
(-[TestSOAuthorizationNavigationDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]): Deleted.
(-[TestSOAuthorizationNavigationDelegate _webView:decidePolicyForSOAuthorizationLoadWithCurrentPolicy:forExtension:completionHandler:]): Deleted.

11:50 AM Changeset in webkit [247436] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

REGRESSION: Chase app crashes immediately after authentication
https://bugs.webkit.org/show_bug.cgi?id=199798
<rdar://problem/53106179>

Reviewed by Alex Christensen.

After r247411, we sometimes try to consult _page from WKWebView, before WKWebView's _page has been set. This
happens under a check for -[WKWebView _isEditable], from within -[WKContentView setupInteraction], which happens
if the host app is not linked on the iOS 12 SDK or earlier. To mitigate this, simply add a null check in
-_isEditable.

There's currently no great way to test this, since we don't have a mechanism for simulating linked-on checks.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _isEditable]):

11:03 AM Changeset in webkit [247435] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: AXI: Audit: Typos in Accessibility audits
https://bugs.webkit.org/show_bug.cgi?id=199716
<rdar://problem/52721711>

Patch by Greg Doolittle <gr3g@apple.com> on 2019-07-15
Reviewed by Devin Rousso.

  • UserInterface/Controllers/AuditManager.js:
10:17 AM Changeset in webkit [247434] by sihui_liu@apple.com
  • 6 edits in trunk

window.openDatabase is not writable
https://bugs.webkit.org/show_bug.cgi?id=199737
<rdar://problem/52551332>

Reviewed by Chris Dumez.

Source/WebCore:

In r246707 we made openDatabase an undetectable attribute of window, and it was set to be read-only. This broke
some sites which replace window.openDatabase with their own implementation when window.openDatabase does not
exists or WebSQL is not implemented.

This patch removes the readonly property and adds a setter for openDatabase.

  • Modules/webdatabase/DOMWindowWebDatabase.idl:
  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::setOpenDatabase):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebSQLBasics.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/opendatabase-always-exists.html:
9:54 AM Changeset in webkit [247433] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Parse and display layout test failures
https://bugs.webkit.org/show_bug.cgi?id=199709

Rubber-stamped by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(RunWebKitTests.start): Initialize log_observer.
(RunWebKitTests._strip_python_logging_prefix): Copied from similar code in build.webkit.org buildbot config.
(RunWebKitTests._parseRunWebKitTestsOutput): Ditto.
(RunWebKitTests.commandComplete): Gather and parse the stdout and stderr logs.
(RunWebKitTests.evaluateResult): Analyze the results and decide build status.
(RunWebKitTests.getResultSummary): Update build and step summary.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added and updated unit-tests.
9:18 AM Changeset in webkit [247432] by Ryan Haddad
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, attempt to fix production builds after r247403.

9:00 AM Changeset in webkit [247431] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Device Settings: update Safari user agent from 12.2 to 13.0
https://bugs.webkit.org/show_bug.cgi?id=199758

Reviewed by Maciej Stachowiak.

  • UserInterface/Base/Main.js:

(WI._handleDeviceSettingsToolbarButtonClicked):

7:32 AM Changeset in webkit [247430] by youenn@apple.com
  • 4 edits in trunk

Filter SDP c lines
https://bugs.webkit.org/show_bug.cgi?id=199791

Reviewed by Eric Carlson.

Source/WebCore:

As discussed in https://github.com/rtcweb-wg/mdns-ice-candidates/issues/91,
use 0.0.0.0 for c lines when filtering the SDP.
Covered by updated test.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::filterSDP const):

LayoutTests:

  • webrtc/datachannel/filter-ice-candidate.html:
6:39 AM Changeset in webkit [247429] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

naver.com: Video stops when tapping on the video to use buttons
https://bugs.webkit.org/show_bug.cgi?id=199784
<rdar://problem/48068610>

Reviewed by Maciej Stachowiak.

Opt out of simulated mouse event sending for tv.naver.com.
When tv.naver.com receives the simulated mouseUp at touchEnd, it pauses the video right away and calls preventDefault()
which prevents us from running the hover heuristics.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

5:37 AM WebKitGTK/2.24.x edited by Michael Catanzaro
(diff)
4:58 AM Changeset in webkit [247428] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

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

broke mips and arm EWS (Requested by guijemont on #webkit).

Reverted changeset:

"run-javascriptcore-tests won't report test results for
testmasm, testair, testb3, testdfg and test api"
https://bugs.webkit.org/show_bug.cgi?id=199489
https://trac.webkit.org/changeset/247393

1:58 AM Changeset in webkit [247427] by Michael Catanzaro
  • 3 edits in trunk/Source/WebCore

[GTK] GitHub breaks on FreeBSD because of "unsupported browser"
https://bugs.webkit.org/show_bug.cgi?id=199745

Reviewed by Carlos Garcia Campos.

It's been a while since I last updated the fake version numbers in our user agent, both for
the user agent quirks for naughty websites and also the Safari version in our standard user
agent. Update them. This should fix github.com on FreeBSD at least. I also noticed some
wonkiness on Google Docs recently that I thought required this update, but I didn't do
anything about it at the time because I wasn't able to reproduce the issue when I tried
again later.

This could absolutely break websites, because the web is awful, but that's calculated risk.

  • platform/UserAgentQuirks.cpp:

(WebCore::UserAgentQuirks::stringForQuirk):

  • platform/glib/UserAgentGLib.cpp:

(WebCore::buildUserAgentString):

1:47 AM Changeset in webkit [247426] by Tadeu Zagallo
  • 3 edits in trunk/Source/JavaScriptCore

Concurrent GC should not rely on current phase to determine if it's safe to steal conn
https://bugs.webkit.org/show_bug.cgi?id=199786
<rdar://problem/52505197>

Reviewed by Saam Barati.

In r246507, we fixed a race condition in the concurrent GC where the mutator might steal
the conn from the collector thread while it transitions from the End phase to NotRunning.
However, that fix was not sufficient. In the case that the mutator steals the conn, and the
execution interleaves long enough for the mutator to progress to a different collection phase,
the collector will resume in a phase other than NotRunning, and hence the check added to
NotRunning will not suffice. To fix that, we add a new variable to track whether the collector
thread is running (m_collectorThreadIsRunning) and use it to determine whether it's safe to
steal the conn, rather than relying on m_currentPhase.

  • heap/Heap.cpp:

(JSC::Heap::runNotRunningPhase):
(JSC::Heap::requestCollection):

  • heap/Heap.h:

Jul 14, 2019:

3:18 PM Changeset in webkit [247425] by Chris Dumez
  • 5 edits in trunk/Source

Add threading assertion to WeakPtrFactory::createWeakPtr()
https://bugs.webkit.org/show_bug.cgi?id=199639

Reviewed by Ryosuke Niwa.

Source/WebCore:

  • platform/ScrollableArea.cpp:
  • rendering/RenderObject.cpp:

Source/WTF:

Add threading assertion to WeakPtrFactory::createWeakPtr() to make sure it
is called on the same thread where the WeakPtrFactory wad constructed.

  • wtf/WeakPtr.h:

(WTF::WeakPtrFactory::WeakPtrFactory):
(WTF::WeakPtrFactory::createWeakPtr const):

1:47 PM Changeset in webkit [247424] by bshafiei@apple.com
  • 7 edits in tags/Safari-608.1.35.1/Source

Versioning.

1:35 PM Changeset in webkit [247423] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.35.1

New tag.

1:21 PM Changeset in webkit [247422] by dino@apple.com
  • 5 edits
    2 adds in trunk

WebGL not supported on WKWebView on UIKit for Mac
https://bugs.webkit.org/show_bug.cgi?id=199785
<rdar://problem/52911449>

Reviewed by Antoine Quint.

Source/WebCore:

UIKit for Mac was not creating a CGLPixelFormatObj because
it wasn't using the code hidden in PLATFORM(MAC). Instead
we should be guarding for USE(OPENGL).

There are still some inconsistencies: <rdar://53062794>

Test: webgl/smell-test.html

  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm:

(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::allowOfflineRenderers const): We have to return
true for this, since we don't have access to the Window Server.

Source/WTF:

MacCatalyst has Apple Graphics Control, although
this area is very messy, see <rdar://53062794>.

  • wtf/Platform.h:

LayoutTests:

Even though we don't yet run tests on UIKit for Mac, we
should have the most simple "is WebGL working?" ref test.

  • webgl/smell-test-expected.html: Added.
  • webgl/smell-test.html: Added.

Jul 13, 2019:

8:36 PM Changeset in webkit [247421] by Wenson Hsieh
  • 9 edits in trunk

[Text autosizing] [iPadOS] Further adjust our heuristics to determine text autosizing candidates
https://bugs.webkit.org/show_bug.cgi?id=199780
<rdar://problem/52289088>

Reviewed by Simon Fraser.

Source/WebCore:

Our current idempotent text autosizing candidate heuristic makes the right judgment call most of the time, but
there is still a large batch of text autosizing bugs left unfixed by the first iteration of the heuristic added
in r246781. This patch attempts to address most of these bugs by adjusting the decision-tree-based heuristic
once again, mostly with improvements to the model generation pipeline.

During the first iteration, I placed emphasis on tuning the max tree depth and min leaf size hyperparameters
when coming up with my decision tree, and didn't consider the inclusion or exclusion of each feature as a
hyperparameters. As such, the trees generated using the pipeline tended to use too many features, and as a
result, tended to have cross-validation overall accuracy scores hovering around 73%.

In this revised model generation pipeline, I now consider the inclusion of each feature (along with max depth
and min leaf size, as before) as a hyperparameter. Since this increases the number of hyperparameters by many
orders of magnitude, a naive grid search (as described in the prior ChangeLog entry) is no longer a tractible
procedure for tuning hyperparameters to the training algorithm.

Instead, I now use a stochastic greedy algorithm to search for good sets of hyperparameters; this process begins
with seeding some number (usually 20-24) of "searchers" with completely randomized sets of hyperparameters (i.e.
random max depth, random leaf size, and random subsets of features). I then evaluate the average performance of
each set of hyperparameters by using them to generate 2000 decision trees over 90% of the training data, and
then cross-validating these trees against the remaining 10%. These cross-validation scores are aggregated into a
single confusion matrix, which is then passed into a loss function that computes a single value indicating how
well training with the set of hyperparameters generalized to cross-validation data. After experimenting with
various loss functions, I settled on the following:

k(false positive rate)^2 + (false negative rate)^2

...where a constant k is chosen to penalize false positives (i.e. broken layout) more harshly than false
negatives (small text). Additionally, squaring the false negative and false positive rates seems to help avoid
converging on solutions that heavily favor reducing only false positives or false negatives, or vice versa.

The stochastic algorithm starts by computing a loss value for the randomly generated configuration. Then, for
an indefinite number of iterations, it randomly mutates the configuration (e.g. by adding or removing features,
or changing min leaf size or max tree depth) and computes a new loss value for the mutated configuration. If the
mutated configuration performs better (i.e. achieves lower loss) than the current configuration, I set the
current configuration to be the mutated configuration. Otherwise, I keep the current (non-mutated) configuration
as-is. The stochastic algorithm then proceeds, ad-infinitum, with this current configuration.

Of course, since each mutation is small, this strategy so far is prone to leaving each searcher stuck in local
optima. To mitigate this, for each searcher, I keep track of a side-table of configurations that have already
been tested; when random mutations would normally lead to testing a configuration that has already been tested,
each searcher instead increases the chance of applying additional mutations. This has the effect of searchers
initially exhausting similar configurations, and expanding to test more and more dissimilar configurations as
the local alternatives all turn out to be worse. This allows searchers to effectively jump out of local optima
after being stuck for a long time.

So, using these strategies, I simultaneously ran a handful of searchers until they all appeared to converge
(a process that takes 8-12 hours on my current dataset). Many of the searchers achieved configurations with
cross-validation scores of 81% and above, up from the 73% of the previous attempt. These additionally have the
added bonus of reducing the number of features, often making the final trees themselves shallower and simpler to
understand than before.

This patch introduces one such decision tree generated using a set of hyperparameters acquired via this
stochasic search algorithm; it appears to simultaneously use fewer features, and achieve better cross-validation
performance.

Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):

Adjust the early return to bail if either (1) the element is a candidate and the computed size is already equal
to the boosted size, or (2) the element is not a candidate and the computed size is already equal to the
specified size. Since the autosizing candidate heuristic depends on styles specified on the element itself (as
opposed to styles on any element in the ancestor chain), a parent may be an autosizing candidate, but a child of
it may not.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::isIdempotentTextAutosizingCandidate const):

Revamp the idempotent text autosizing candidate heuristic. See the explanation above for more details.

  • rendering/style/RenderStyle.h:

Remove some bits from RenderStyle's autosizeStatus, now that we care about fewer bits of information from the
inherited flags.

  • rendering/style/TextSizeAdjustment.cpp:

(WebCore::AutosizeStatus::updateStatus):

  • rendering/style/TextSizeAdjustment.h:

LayoutTests:

Rebaseline an existing idempotent text autosizing test, and add an additional test case.

  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates-expected.txt:
  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html:
3:29 PM Changeset in webkit [247420] by Simon Fraser
  • 3 edits
    3 adds in trunk

Don't do async overflow scrolling for visibility:hidden scrollers
https://bugs.webkit.org/show_bug.cgi?id=199779

Reviewed by Dean Jackson.
Source/WebCore:

An overflow:scroll with visibility:hidden is not scrollable on macOS, even if it has visible
content. So disable async overflow:scroll when the scroller has non-visible visibility (this also
takes visibility on ancestors into account).

visibility:hidden overflow:scroll can be common because some JS libraries use it
(https://github.com/wnr/element-resize-detector).

Test: compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::canUseCompositedScrolling const): Don't use hasVisibleContent() because
that's affected by visible children.

LayoutTests:

  • compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers-expected.txt: Added.
  • compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers.html: Added.
  • platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers-expected.txt: Added.
10:43 AM Changeset in webkit [247419] by rmorisset@apple.com
  • 5 edits in trunk/Source/WebCore

[WHLSL] Return statements don't need to keep track of the function they're in
https://bugs.webkit.org/show_bug.cgi?id=199763

Reviewed by Myles C. Maxfield.

Return::m_function is only used in the Checker, and it can easily enough keep track of the current function.
This means we no longer need to keep track of the current function in the NameResolver, and we can save 8 bytes per Return

Since I was touching the NameResolver I also removed a few pointless overrides of Visitor::visit().

No new tests as there is no intended functional change.

  • Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
  • Modules/webgpu/WHLSL/WHLSLChecker.cpp:

(WebCore::WHLSL::Checker::visit):

  • Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:

(WebCore::WHLSL::NameResolver::NameResolver):
(WebCore::WHLSL::resolveTypeNamesInFunctions):

  • Modules/webgpu/WHLSL/WHLSLNameResolver.h:
10:28 AM Changeset in webkit [247418] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Add accessibility support to WKDataListSuggestionsView.
https://bugs.webkit.org/show_bug.cgi?id=199772
<rdar://problem/47095851>

Patch by Andres Gonzalez <Andres Gonzalez> on 2019-07-13
Reviewed by Chris Fleizach.

Source/WebCore:

Localizable strings for accessibility announcements.

  • en.lproj/Localizable.strings:

Source/WebKit:

Added accessibility announcement notifications to show, dismiss and selection change for the datalist suggestions view.

  • UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:

(-[WKDataListSuggestionsView notifyAccessibilityClients:]):
(-[WKDataListSuggestionsView moveSelectionByDirection:]):
(-[WKDataListSuggestionsView invalidate]):
(-[WKDataListSuggestionsView showSuggestionsDropdown:]):

8:28 AM Changeset in webkit [247417] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Drop non thread-safe usage of WeakPtr in VideoFullscreenInterfaceAVKit
https://bugs.webkit.org/show_bug.cgi?id=199775

Reviewed by Eric Carlson.

The VideoFullscreenInterfaceAVKit constructor was making a weakPtr on the UI Thread
of an WebThread object. The WeakPtr would then be used as a data member throughout
the class on the UIThread. This is not thread-safe.

This patch switches to using a raw pointer instead of a WeakPtr. This is a partial
rollout of r243298, which turned the raw pointer into a WeakPtr for hardening
purposes. For extra safety, this patch updates the VideoFullscreenControllerContext
so that it notifies its clients (i.e. PlaybackSessionInterfaceAVKit) that it is
getting destroyed, so that they can null-out their m_videoFullscreenModel &
m_fullscreenChangeObserver data members. This gives the sames guarantees as WeakPtr
but in a thread-safe way.

This is very similar to the fix that was done for PlaybackSessionInterfaceAVKit in
r247380.

  • platform/cocoa/VideoFullscreenModel.h:

(WebCore::VideoFullscreenModelClient::modelDestroyed):

  • platform/ios/VideoFullscreenInterfaceAVKit.h:
  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(VideoFullscreenInterfaceAVKit::setVideoFullscreenModel):
(VideoFullscreenInterfaceAVKit::setVideoFullscreenChangeObserver):
(VideoFullscreenInterfaceAVKit::modelDestroyed):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::~VideoFullscreenControllerContext):

5:59 AM Changeset in webkit [247416] by Alan Bujtas
  • 28 edits
    4 adds in trunk

Cannot bring up custom media controls at all on v.youku.com
https://bugs.webkit.org/show_bug.cgi?id=199699
<rdar://problem/51835327>

Reviewed by Simon Fraser.

Source/WebCore:

The "find the node under the finger" heuristic should only find nodes that are visible to hit-testing.

When the user taps on the screen, we run a "find the best node under the finger" heuristic and use the node's location
to dispatch the associated event (e.g. mousePressed).
Ideally the "best node under the finger" and the final target node for the associated event are the same.
However these two methods configure the hit-testing process differently which could lead to node mismatch.
The "best node" heuristic calls hit-testing with AllowChildFrameContent. This flag allows hit-testing to descend into
subframes even if the subframe is not visible to hit-testing (visibility: hidden).
While event dispatching never descends into subfames through hit-testing, but instead it forwards the dispatching to subframes that are visible to hit-testing.

This patch addresses the mismatching node issue by calling the descending version of hit-testing with a flag that enforces visiblity check before descending into a subframe.

Tests: fast/events/touch/ios/visibility-hidden-iframe-click.html

fast/events/touch/ios/visibility-hidden-nested-iframe-click.html

  • page/ios/FrameIOS.mm:

(WebCore::Frame::hitTestResultAtViewportLocation):

  • rendering/HitTestRequest.h:

(WebCore::HitTestRequest::skipsChildFrameContentInvisibleToHitTest const):

  • rendering/RenderWidget.cpp:

(WebCore::RenderWidget::nodeAtPoint):

Source/WebKit:

  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:

(WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::performDictionaryLookupAtLocation):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::hitTest const):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::handleContextMenuEvent):
(WebKit::WebPage::characterIndexForPointAsync):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleStylusSingleTapAtPoint):
(WebKit::textInteractionPositionInformation):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::shouldDelayWindowOrderingEvent):
(WebKit::WebPage::acceptsFirstMouse):
(WebKit::WebPage::performImmediateActionHitTestAtLocation):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::actionDictionary const):

  • WebView/WebFrame.mm:

(-[WebFrame elementAtPoint:]):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView elementAtPoint:allowShadowContent:]):

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController performHitTestAtPoint:]):

Source/WebKitLegacy/win:

  • WebActionPropertyBag.cpp:

(WebActionPropertyBag::Read):

  • WebView.cpp:

(WebView::handleContextMenuEvent):
(WebView::elementAtPoint):

LayoutTests:

  • fast/events/touch/ios/visibility-hidden-iframe-click-expected.txt: Added.
  • fast/events/touch/ios/visibility-hidden-iframe-click.html: Added.
  • fast/events/touch/ios/visibility-hidden-nested-iframe-click-expected.txt: Added.
  • fast/events/touch/ios/visibility-hidden-nested-iframe-click.html: Added.
4:07 AM Changeset in webkit [247415] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Fix non thread-safe usage of makeWeakPtr() in MediaPlayerPrivateAVFoundation
https://bugs.webkit.org/show_bug.cgi?id=199777

Reviewed by Eric Carlson.

The code was calling makeWeakPtr() on a main-thread object, from a background thread.
This is not thread safe. To address the issue, this patches creates the WeakPtr ahead
of time, on the main thread.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation):
(WebCore::MediaPlayerPrivateAVFoundation::scheduleMainThreadNotification):
(WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:

Jul 12, 2019:

10:14 PM Changeset in webkit [247414] by aestes@apple.com
  • 5 edits in trunk

[Cocoa] -loadFileURL:allowingReadAccessToURL: should fully resolve file URLs
https://bugs.webkit.org/show_bug.cgi?id=199768
<rdar://problem/52002206>

Reviewed by Geoffrey Garen.

Source/WebKit:

-loadFileURL:allowingReadAccessToURL: used -_web_originalDataAsWTFString from WKNSURLExtras
to convert the file and read access NSURLs to strings, which under the hood calls
CFURLGetBytes(). CFURLGetBytes() gets the URL's string without considering the base URL, so
if the client creates a URL like this:

NSURL *url = [NSURL fileURLWithPath:@"tmpfile.txt" relativeToURL:[NSURL fileURLWithPath:@"/tmp"]]

... then -_web_originalDataAsWTFString will merely return the string "tmpfile.txt". When
that is later converted back to a URL in WebPageProxy::loadFile(), we lose track of the base
component and refuse to load something that no longer looks like a file: URL.

Fixed this by fully resolving the URLs passed to -loadFileURL:allowingReadAccessToURL: when
converting to strings by using -[NSURL absoluteString] instead of -_web_originalDataAsWTFString.

  • Shared/Cocoa/WKNSURLExtras.mm:

(-[NSURL _web_originalDataAsWTFString]):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView loadFileURL:allowingReadAccessToURL:]):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/LoadFileURL.mm:

(TEST):

8:22 PM Changeset in webkit [247413] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Remove wincairo queue from old EWS and dashboard
https://bugs.webkit.org/show_bug.cgi?id=199776

Reviewed by Don Olmstead.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:
  • QueueStatusServer/config/queues.py:
8:21 PM Changeset in webkit [247412] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews-build] Enable wincairo queue on new EWS
https://bugs.webkit.org/show_bug.cgi?id=199593

Reviewed by Don Olmstead.

  • BuildSlaveSupport/ews-build/config.json: Enabled the triggers for wincairo builder.
  • BuildSlaveSupport/ews-build/factories.py: Added required build steps for wincairo factory.
  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble): Enable wincairo status-bubble.

6:50 PM Changeset in webkit [247411] by Megan Gardner
  • 2 edits in trunk/Source/WebKit

Turn off two finger gestures for editable non-scaled content
https://bugs.webkit.org/show_bug.cgi?id=199739
<rdar://problem/52107190>

Reviewed by Tim Horton.

This gesture is blocking a selection gesture. Turn it off as it is not
even being used in editable content.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]):
(-[WKContentView _didChangeWebViewEditability]):

5:53 PM Changeset in webkit [247410] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

SOAuthorizationSession::presentViewController should check WebPageProxy::isClosed()
https://bugs.webkit.org/show_bug.cgi?id=199755
<rdar://problem/52323585>

Reviewed by Chris Dumez.

WebPageProxy::pageClient() is not guaranteed to be non null all the time. Therefore, we should check
WebPageProxy::isClosed() before using it.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::presentViewController):

5:22 PM Changeset in webkit [247409] by keith_miller@apple.com
  • 2 edits in trunk/Source/bmalloc

Increase JSValue cage size on iOS and reduce the max slide
https://bugs.webkit.org/show_bug.cgi?id=199765

Reviewed by Saam Barati.

Since the WebContent jetsam limit has changed we sometimes run out
of JSValue cage VA space causing us to run out of memory for
arrays. This change makes the JSValue cage a more reasonable upper
limit for what should be possible without jetsamming.

The worst case memory mapping with this configuration is has not
changed from before. Under both configurations we could map 36GB
with a temporary mapping of 38GB (to align the VA to 2GB).

  • bmalloc/Gigacage.h:
5:09 PM Changeset in webkit [247408] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Enable logging for clicking SubmitToEWS button
https://bugs.webkit.org/show_bug.cgi?id=199757

Unreviewed minor infrastructure fix.

  • BuildSlaveSupport/ews-app/ews/views/submittoews.py:

(SubmitToEWS.post): Change logging level from debug to info.

5:05 PM Changeset in webkit [247407] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[GStreamer] Mock GStreamer realtime sources should keep a Ref of their mock realtime media sources
https://bugs.webkit.org/show_bug.cgi?id=194326

WrappedMockRealtimeVideoSource is a subclass of RealtimeMediaSource which is refcounted, we can't
use a unique_ptr on those.

Also changed m_wrappedSource type to its actual type so it is cleaner even if needed
to upcast it to RealtimeMediaSource so some method that are made private in the mock
can still be called.

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-07-12
Reviewed by Youenn Fablet.

This fixes MediaStream tests

  • platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:

(WebCore::WrappedMockRealtimeAudioSource::create):
(WebCore::WrappedMockRealtimeAudioSource::asRealtimeMediaSource):
(WebCore::WrappedMockRealtimeAudioSource::WrappedMockRealtimeAudioSource):
(WebCore::m_wrappedSource):
(WebCore::MockGStreamerAudioCaptureSource::startProducingData):
(WebCore::MockGStreamerAudioCaptureSource::settings):
(WebCore::MockGStreamerAudioCaptureSource::capabilities):

  • platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h:
  • platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:

(WebCore::WrappedMockRealtimeVideoSource::create):
(WebCore::WrappedMockRealtimeVideoSource::asRealtimeMediaSource):
(WebCore::WrappedMockRealtimeVideoSource::WrappedMockRealtimeVideoSource):
(WebCore::m_wrappedSource):
(WebCore::MockGStreamerVideoCaptureSource::settings):
(WebCore::MockGStreamerVideoCaptureSource::capabilities):

  • platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h:
4:21 PM Changeset in webkit [247406] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Changes: dismissing a blank property makes style rule to show in Changes panel
https://bugs.webkit.org/show_bug.cgi?id=199760

Reviewed by Devin Rousso.

  • UserInterface/Models/CSSProperty.js:

(WI.CSSProperty.prototype._updateOwnerStyleText):
Call updatePropertiesModifiedState even when _updateOwnerStyleText returns early.

4:09 PM Changeset in webkit [247405] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: always show all navigation bar items, but disable those that wouldn't work
https://bugs.webkit.org/show_bug.cgi?id=199594

Reviewed by Ross Kirsling.

Reorder the navigation items of the Elements tab (left to right):

  • Show rulers
  • Force print media styles
  • Force Dark Appearance / Force Light Appearance
  • Show compositing borders
  • Enable paint flashing
  • Show shadow DOM nodes

This way, "related" (e.g. print styles and dark/light appearance both relate to CSS media)
toggles are grouped closer together.

  • UserInterface/Views/DOMTreeContentView.js:

(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype.get navigationItems):
(WI.DOMTreeContentView.prototype._defaultAppearanceDidChange):
(WI.DOMTreeContentView.prototype._toggleAppearance):

  • Localizations/en.lproj/localizedStrings.js:
3:51 PM Changeset in webkit [247404] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Enable client certificate authentication unit test
https://bugs.webkit.org/show_bug.cgi?id=199735

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-12
Reviewed by Chris Dumez.

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(TEST):
I originally wrote this in https://bugs.webkit.org/show_bug.cgi?id=197800 but it was disabled because it crashed.
I found what was crashing. I was reading out of bounds on my vector of 2 strings :(

3:15 PM Changeset in webkit [247403] by keith_miller@apple.com
  • 11 edits
    2 moves
    8 adds in trunk/Source/JavaScriptCore

Add API to get all the dependencies of a given JSScript
https://bugs.webkit.org/show_bug.cgi?id=199746

Reviewed by Saam Barati.

The method only returns the dependencies if the module was
actually evaluated. Technically, we know what the dependencies are
at the satisfy phase but for API simplicity we only provide that
information if the module graph was complete enough to at least
run.

This patch also fixes an issue where we would allow import
specifiers that didn't start "./" or "/". For reference, We have
this restriction to be consistent with the web/node. The
restriction exists in order to preserve namespace for
builtin-modules.

Lastly, this patch makes it so that we copy all scripts in the
API/tests/testapiScripts directory so they don't have to be
individually added to the xcode project.

  • API/JSAPIGlobalObject.mm:

(JSC::computeValidImportSpecifier):
(JSC::JSAPIGlobalObject::moduleLoaderResolve):
(JSC::JSAPIGlobalObject::moduleLoaderImportModule):

  • API/JSContext.mm:

(-[JSContext dependencyIdentifiersForModuleJSScript:]):

  • API/JSContextPrivate.h:
  • API/JSScript.h:
  • API/tests/testapi.mm:

(testFetchWithTwoCycle):
(testFetchWithThreeCycle):
(testModuleBytecodeCache):
(+[JSContextFileLoaderDelegate newContext]):
(-[JSContextFileLoaderDelegate fetchModuleScript:]):
(-[JSContextFileLoaderDelegate findScriptForKey:]):
(-[JSContextFileLoaderDelegate context:fetchModuleForIdentifier:withResolveHandler:andRejectHandler:]):
(testDependenciesArray):
(testDependenciesEvaluationError):
(testDependenciesSyntaxError):
(testDependenciesBadImportId):
(testDependenciesMissingImport):
(testObjectiveCAPI):

  • API/tests/testapiScripts/dependencyListTests/badModuleImportId.js: Added.
  • API/tests/testapiScripts/dependencyListTests/bar.js: Added.
  • API/tests/testapiScripts/dependencyListTests/dependenciesEntry.js: Added.
  • API/tests/testapiScripts/dependencyListTests/foo.js: Added.
  • API/tests/testapiScripts/dependencyListTests/missingImport.js: Added.
  • API/tests/testapiScripts/dependencyListTests/referenceError.js: Added.
  • API/tests/testapiScripts/dependencyListTests/syntaxError.js: Added.
  • API/tests/testapiScripts/testapi-function-overrides.js: Renamed from Source/JavaScriptCore/API/tests/testapi-function-overrides.js.
  • API/tests/testapiScripts/testapi.js: Renamed from Source/JavaScriptCore/API/tests/testapi.js.
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/ModuleLoader.js:

(dependencyKeysIfEvaluated):

  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::dependencyKeysIfEvaluated):

  • runtime/JSModuleLoader.h:
  • shell/CMakeLists.txt:
3:12 PM Changeset in webkit [247402] by commit-queue@webkit.org
  • 3 edits
    4 adds in trunk/Tools

Begin unifying TestWebKitAPI build
https://bugs.webkit.org/show_bug.cgi?id=199728

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-12
Reviewed by Keith Miller.

  • TestWebKitAPI/Configurations/Base.xcconfig:
  • TestWebKitAPI/Scripts/generate-unified-sources.sh: Added.
  • TestWebKitAPI/Sources.txt: Added.
  • TestWebKitAPI/SourcesCocoa.txt: Added.
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
3:08 PM Changeset in webkit [247401] by commit-queue@webkit.org
  • 4 edits
    3 adds in trunk/Source/WebKitLegacy

Begin unifying WebKitLegacy sources
https://bugs.webkit.org/show_bug.cgi?id=199730

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-12
Reviewed by Keith Miller.

Source/WebKitLegacy:

  • Sources.txt: Added.
  • SourcesCocoa.txt: Added.
  • WebKitLegacy.xcodeproj/project.pbxproj:
  • scripts/generate-unified-sources.sh: Added.

Source/WebKitLegacy/mac:

  • Configurations/WebKitLegacy.xcconfig:
3:03 PM Changeset in webkit [247400] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Regression(macOS Catalina): Cannot quick look html documents in Mail
https://bugs.webkit.org/show_bug.cgi?id=199754
<rdar://problem/51304961>

Reviewed by Geoff Garen.

If the client asks us to load a file URL but does not provide a resource path, WebKit
would fallback to issuing a sandbox extension for /. This no longer works on mac OS
Catalina and it would thus fail to load the file.

To address the issue, if the attempt to create a sandbox extension for / fails, we now
fall back to issuing one for the file's baseURL (path of containing folder).

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):

2:50 PM Changeset in webkit [247399] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Change RELEASE_ASSERT in DocumentWriter::addData to ASSERT and early return
https://bugs.webkit.org/show_bug.cgi?id=199756
<rdar://problem/51554775>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-12
Reviewed by Brady Eidson.

Attempts to reach this assertion were unsuccessful, but sometimes this assertion crashes.
Let's change it to an early return to prevent crashes.

  • loader/DocumentWriter.cpp:

(WebCore::DocumentWriter::addData):

2:35 PM Changeset in webkit [247398] by Simon Fraser
  • 10 edits
    1 move
    6 adds in trunk

[iOS WK2] Can't place caret or select in content that overflows a contenteditable element
https://bugs.webkit.org/show_bug.cgi?id=199741
rdar://problem/50545233

Reviewed by Wenson Hsieh.
Source/WebCore:

Various code paths for editing used renderer->absoluteBoundingBoxRect(), which is the border
box of the element (or a set of line boxes for inline elements) converted to absolute
coordinates. This excludes overflow content, but contenteditable needs to be able to
place the caret in overflow content, and allow selection rects to be in the overflow area
(if the element has visible overflow).

Try to clean this up by adding some static helpers on WebPage for accessing the relevant
rects, and use them in code call from visiblePositionInFocusedNodeForPoint(), and
code that is input to selectionClipRect.

This changes selectionClipRect to use the padding box (excluding borders), which is a progression.

Tests: editing/caret/ios/caret-in-overflow-area.html

editing/selection/ios/place-selection-in-overflow-area.html
editing/selection/ios/selection-extends-into-overflow-area.html

  • editing/FrameSelection.cpp:

(WebCore::DragCaretController::editableElementRectInRootViewCoordinates const):

Source/WebKit:

Various code paths for editing used renderer->absoluteBoundingBoxRect(), which is the border
box of the element (or a set of line boxes for inline elements) converted to absolute
coordinates. This excludes overflow content, but contenteditable needs to be able to
place the caret in overflow content, and allow selection rects to be in the overflow area
(if the element has visible overflow).

Try to clean this up by adding some static helpers on WebPage for accessing the relevant
rects, and use them in code call from visiblePositionInFocusedNodeForPoint(), and
code that is input to selectionClipRect.

This changes selectionClipRect to use the padding box (excluding borders), which is a progression.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformEditorState const):
(WebKit::elementBoundsInFrame):
(WebKit::constrainPoint):
(WebKit::WebPage::rootViewBoundsForElement):
(WebKit::WebPage::absoluteInteractionBoundsForElement):
(WebKit::WebPage::rootViewInteractionBoundsForElement):
(WebKit::WebPage::dispatchSyntheticMouseEventsForSelectionGesture):
(WebKit::WebPage::getFocusedElementInformation):
(WebKit::innerFrameQuad): Deleted.
(WebKit::elementRectInRootViewCoordinates): Deleted.

LayoutTests:

Re-enable editing/caret/ios, fixing the result of emoji.html which for some reason was
checked in as an html file (the test still fails).

  • editing/caret/ios/caret-in-overflow-area-expected.txt: Added.
  • editing/caret/ios/caret-in-overflow-area.html: Added.
  • editing/caret/ios/emoji-expected.txt: Renamed from LayoutTests/editing/caret/ios/emoji-expected.html.
  • editing/caret/ios/fixed-caret-position-after-scroll-expected.txt:
  • editing/caret/ios/fixed-caret-position-after-scroll.html:
  • editing/selection/ios/place-selection-in-overflow-area-expected.txt: Added.
  • editing/selection/ios/place-selection-in-overflow-area.html: Added.
  • editing/selection/ios/selection-extends-into-overflow-area-expected.txt: Added.
  • editing/selection/ios/selection-extends-into-overflow-area.html: Added.
  • platform/ios-wk2/TestExpectations:
2:07 PM Changeset in webkit [247397] by Justin Fan
  • 11 edits
    3 copies in trunk/Source/WebCore

[WebGPU] Move error scopes out of GPUDevice for more portable error generation
https://bugs.webkit.org/show_bug.cgi?id=199740

Reviewed by Myles C. Maxfield.

Move error generation into a separate RefCounted class to allow GPU objects to generate
errors independent of any GPUDevice.
Create GPUObjectBase to delegate error generation and refactor GPUBuffer to inherit from GPUObjectBase.

No behavior change or new tests. Error scopes covered by error-scopes-test.html.

  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::WebGPUDevice): Now creates a GPUErrorGenerator.
(WebCore::WebGPUDevice::createBuffer const): Pass the GPUErrorGenerator to any created GPUBuffer.
(WebCore::WebGPUDevice::createBufferMapped const): Ditto.
(WebCore::WebGPUDevice::popErrorScope): Shouldn't be const. Can just ask for the GPUError rather than passing a lambda.
(WebCore::WebGPUDevice::pushErrorScope const): Deleted.
(WebCore::WebGPUDevice::popErrorScope const): Deleted.

  • Modules/webgpu/WebGPUDevice.h:

(WebCore::WebGPUDevice::pushErrorScope):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/gpu/GPUBuffer.h: Now inherits from GPUObjectBase for error generation ease.
  • platform/graphics/gpu/GPUDevice.cpp:

(WebCore::GPUDevice::tryCreateBuffer): Ensure GPUBuffers reference the GPUErrorGenerator.
(WebCore::GPUDevice::pushErrorScope): Deleted. No longer needed here.
(WebCore::GPUDevice::popErrorScope): Deleted.
(WebCore::GPUDevice::registerError): Deleted.

  • platform/graphics/gpu/GPUDevice.h: Move error scope logic out.
  • platform/graphics/gpu/GPUErrorGenerator.cpp: Added.

(WebCore::GPUErrorGenerator::pushErrorScope):
(WebCore::GPUErrorGenerator::popErrorScope):
(WebCore::GPUErrorGenerator::generateError):

  • platform/graphics/gpu/GPUErrorGenerator.h: Added.

(WebCore::GPUErrorGenerator::create):

  • platform/graphics/gpu/GPUObjectBase.h: Added.

(WebCore::GPUObjectBase::generateError):
(WebCore::GPUObjectBase::GPUObjectBase):

  • platform/graphics/gpu/cocoa/GPUBufferMetal.mm: Use the GPUErrorGenerator directly during buffer creation.

(WebCore::GPUBuffer::validateBufferUsage):
(WebCore::GPUBuffer::tryCreate):
(WebCore::GPUBuffer::GPUBuffer):

  • platform/graphics/gpu/cocoa/GPUQueueMetal.mm:

(WebCore::GPUQueue::submit): Prevent possible null dereference.

1:58 PM Changeset in webkit [247396] by Michael Catanzaro
  • 3 edits in trunk/Source/WebKit

WebBackForwardListItem::setPageState should receive pageState by rvalue reference
https://bugs.webkit.org/show_bug.cgi?id=199535

Reviewed by Alex Christensen

Coverity is complaining here about copying PageState by value in the parameter list. It's
sort of a false positive, in that the PageState really does need to be copied here, so this
is the best we can do. But pass by value and then WTFMove() is a pretty strange way to write
it. Passing by rvalue reference would be better. This makes the copy more clear.

  • Shared/WebBackForwardListItem.h:

(WebKit::WebBackForwardListItem::setPageState):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::updateBackForwardItem):

1:14 PM Changeset in webkit [247395] by youenn@apple.com
  • 6 edits in trunk/Source

Add release logging for quota checks
https://bugs.webkit.org/show_bug.cgi?id=199697

Reviewed by Alex Christensen.

Source/WebCore:

Log whether a request to extend quota is made and the result of the request.
This logging should happen in the networking process.
No change of behavior.

  • platform/Logging.h:
  • storage/StorageQuotaManager.cpp:

(WebCore::StorageQuotaManager::askForMoreSpace):
(WebCore::StorageQuotaManager::processPendingRequests):

Source/WebKit:

Log requests made to the page and the result from the application.

  • Platform/Logging.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestStorageSpace):

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

Remove unneeded variable in LocalStorageNamespace::getOrCreateStorageArea
https://bugs.webkit.org/show_bug.cgi?id=199477

Reviewed by Alex Christensen.

  • NetworkProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea):

12:50 PM Changeset in webkit [247393] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

run-javascriptcore-tests won't report test results for testmasm, testair, testb3, testdfg and test api
https://bugs.webkit.org/show_bug.cgi?id=199489
<rdar://problem/47891081>

Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-07-12
Reviewed by Aakash Jain.

  • BuildSlaveSupport/build.webkit.org-config/steps.py:

(RunJavaScriptCoreTests.countFailures):

  • BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:
  • Scripts/run-javascriptcore-tests:

(runTest):
(reportTestFailures):
(runJSCStressTests):

11:01 AM Changeset in webkit [247392] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Connection::waitForSyncReply() uses wall time clock for timeout
https://bugs.webkit.org/show_bug.cgi?id=198712
Due to a nature of the system time (it might not be set, jump, be off
by a lot) it is better to use monotonically increasing time which is
exactly what's used in a similar place i.e. Connection::waitForMessage()

Patch by Pawel Stanek <p.stanek@metrological.com> on 2019-07-12
Reviewed by Alex Christensen.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::waitForSyncReply):

10:27 AM Changeset in webkit [247391] by youenn@apple.com
  • 8 edits in trunk

Stopping a cloned MediaStream video track should not stop any other video track
https://bugs.webkit.org/show_bug.cgi?id=199635

Reviewed by Eric Carlson.

Source/WebCore:

In case a track is requesting its source to end, the
RealtimeVideoSource should request its own source to end and not stop it directly.

Also, if a track is removing itself as an observer to a RealtimeVideoSource, we should
stop the underlying source only if this one does not have any other observer.
Covered by updated test.

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::removeObserver):

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::requestToEnd):
(WebCore::RealtimeVideoSource::stopBeingObserved):

  • platform/mediastream/RealtimeVideoSource.h:

LayoutTests:

  • fast/mediastream/mediastreamtrack-video-clone-expected.txt:
  • fast/mediastream/mediastreamtrack-video-clone.html:
10:11 AM Changeset in webkit [247390] by Justin Michaud
  • 4 edits
    1 add in trunk

B3 should reduce (integer) Sub(Neg(x), y) to Neg(Add(x, y))
https://bugs.webkit.org/show_bug.cgi?id=196371

Reviewed by Keith Miller.

JSTests:

  • microbenchmarks/mul-immediate-sub.js: Added.

(doTest):

Source/JavaScriptCore:

Adding these strength reductions gives 2x a (x86) and 3x (arm64) performance improvement
on the microbenchmark.

  • b3/B3ReduceStrength.cpp:
  • b3/testb3.cpp:

(JSC::B3::testSubSub):
(JSC::B3::testSubSub2):
(JSC::B3::testSubAdd):
(JSC::B3::testSubFirstNeg):
(JSC::B3::run):

9:59 AM Changeset in webkit [247389] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Make layout-tests' full_results.json accessible in Buildbot
https://bugs.webkit.org/show_bug.cgi?id=199743

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:
  • BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests.
8:19 AM Changeset in webkit [247388] by timothy@apple.com
  • 23 edits in trunk

Drop DarkModeCSSEnabled as an experimental feature and always enable it.
https://bugs.webkit.org/show_bug.cgi?id=199725
rdar://problem/52970972

Reviewed by Megan Gardner.

Source/WebCore:

Tests: css-dark-mode

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/MediaQueryEvaluator.cpp:

(WebCore::prefersColorSchemeEvaluate):

  • css/MediaQueryExpression.cpp:

(WebCore::featureWithValidIdent):
(WebCore::isFeatureValidWithoutValue):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue):

  • html/HTMLMetaElement.cpp:

(WebCore::HTMLMetaElement::process):

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setDarkModeCSSEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::darkModeCSSEnabled const): Deleted.

Source/WebKit:

  • Shared/WebPreferences.yaml: Removed DarkModeCSSEnabled.

LayoutTests:

Removed <!-- webkit-test-runner [ experimental:DarkModeCSSEnabled=true ] -->
from all dark mode tests.

  • css-dark-mode/color-scheme-css-parse.html:
  • css-dark-mode/color-scheme-css.html:
  • css-dark-mode/color-scheme-meta.html:
  • css-dark-mode/color-scheme-priority.html:
  • css-dark-mode/color-scheme-scrollbar.html:
  • css-dark-mode/default-colors.html:
  • css-dark-mode/older-syntax/supported-color-schemes-css.html:
  • css-dark-mode/older-syntax/supported-color-schemes-meta.html:
  • css-dark-mode/older-systems/color-scheme-css.html:
  • css-dark-mode/older-systems/color-scheme-meta.html:
  • css-dark-mode/older-systems/prefers-color-scheme.html:
  • css-dark-mode/prefers-color-scheme-picture-element.html:
  • css-dark-mode/prefers-color-scheme.html:
7:47 AM Changeset in webkit [247387] by Caio Lima
  • 30 edits
    6 adds in trunk

[BigInt] Add ValueBitLShift into DFG
https://bugs.webkit.org/show_bug.cgi?id=192664

Reviewed by Saam Barati.

JSTests:

We are adding tests to cover ValueBitwise operations AI changes.

  • stress/big-int-left-shift-untyped.js: Added.
  • stress/bit-op-with-object-returning-int32.js:
  • stress/value-bit-and-ai-rule.js: Added.
  • stress/value-bit-lshift-ai-rule.js: Added.
  • stress/value-bit-or-ai-rule.js: Added.
  • stress/value-bit-xor-ai-rule.js: Added.

PerformanceTests:

  • BigIntBench/big-int-simple-lshift.js: Added.

Source/JavaScriptCore:

This patch is splitting the BitLShift into ArithBitLShift and
ValueBitLShift to handle BigInt speculation more efficiently during
DFG and FTL layers. Following the same approach of other ValueBitOps,
ValueBitLShift handles Untyped and BigInt speculations, while
ArithBitLShift handles number and boolean operands and always results into
Int32.

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

(JSC::CodeBlock::finishCreation):

  • bytecode/Opcode.h:
  • dfg/DFGAbstractInterpreter.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

We moved BitLShift constant fold rules to a new method
handleConstantBinaryBitwiseOp to be reused by ArithBitLShift and
ValueBitLShift. This also enables support of constant folding on other
bitwise operations like ValueBitAnd, ValueBitOr and ValueBitXor, when
their binary use kind is UntypedUse. Such cases can happen on those
nodes because fixup phase is conservative.

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::BackwardsPropagationPhase::isWithinPowerOfTwo):
(JSC::DFG::BackwardsPropagationPhase::propagate):

  • dfg/DFGByteCodeParser.cpp:

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

We parse op_lshift as ArithBitLShift when its operands are numbers.
Otherwise, we fallback to ValueBitLShift and rely on fixup phase to
convert ValueBitLShift into ArithBitLShift when possible.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

ArithBitLShift has the same clobberize rules as former BitLShift.
ValueBitLShift only clobberize world when it is UntypedUse.

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

ValueBitLShift can GC when BigIntUse because it allocates new
JSBigInts to perform this operation. It also can GC on UntypedUse
because of observable user code.

  • dfg/DFGFixupPhase.cpp:

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

ValueBitLShift and ArithBitLShift has the same fixup rules of
other binary bitwise operations. In the case of ValueBitLShift
We check if we should speculate on BigInt or Untyped and fallback to
ArithBitLShift when both cheks fail.

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasHeapPrediction):

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

We updated operationValueBitLShift to handle BigInt cases. Also, we
added operationBitLShiftBigInt that is used when we compile
ValueBitLValueBitLShift(BigIntUse).

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

ValueBitLShift's prediction propagation rules differs from other
bitwise operations, because using only heap prediction for this node causes
significant performance regression on Octane's zlib and mandreel.
The reason is because of cases where a function is compiled but the
instruction op_lshift was never executed before. If we use
getPrediction() we will emit a ForceOSRExit, resulting in more OSR
than desired. To solve such issue, we are then using
getPredictionWithoutOSR() and falling back to getHeapPrediction()
only on cases where we can't rely on node's input types.

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueLShiftOp):
(JSC::DFG::SpeculativeJIT::compileShiftOp):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::shiftOp):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStrengthReductionPhase.cpp:

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

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileArithBitLShift):
(JSC::FTL::DFG::LowerDFGToB3::compileValueBitLShift):
(JSC::FTL::DFG::LowerDFGToB3::compileBitLShift): Deleted.

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

6:24 AM Changeset in webkit [247386] by keith_miller@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

getIndexQuickly should be const
https://bugs.webkit.org/show_bug.cgi?id=199747

Reviewed by Yusuke Suzuki.

  • runtime/Butterfly.h:

(JSC::Butterfly::indexingPayload const):
(JSC::Butterfly::arrayStorage const):
(JSC::Butterfly::contiguousInt32 const):
(JSC::Butterfly::contiguousDouble const):
(JSC::Butterfly::contiguous const):

  • runtime/JSObject.h:

(JSC::JSObject::canGetIndexQuickly const):
(JSC::JSObject::getIndexQuickly const):
(JSC::JSObject::tryGetIndexQuickly const):
(JSC::JSObject::canGetIndexQuickly): Deleted.
(JSC::JSObject::getIndexQuickly): Deleted.

5:31 AM Changeset in webkit [247385] by clopez@igalia.com
  • 3 edits in trunk/Source/WebCore

Refactor ShadowBlur: remove some class variables and use function parameters instead.
https://bugs.webkit.org/show_bug.cgi?id=199511

Reviewed by Said Abou-Hallawa.

On the ShadowBlur class it is confusing to know if the status of the m_layerImage buffer or the
values calculated by calculateLayerBoundingRect() are valid between the different function calls.

To avoid this problem, pass this values as function parameters instead of storing them in the class.

No new tests, no intended behaviour change.

  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::ShadowBlur):
(WebCore::ShadowBlur::calculateLayerBoundingRect):
(WebCore::ShadowBlur::drawShadowBuffer):
(WebCore::ShadowBlur::drawRectShadow): Pass the parameters from the callback.
(WebCore::ShadowBlur::drawInsetShadow): Ditto.
(WebCore::ShadowBlur::drawRectShadowWithoutTiling):
(WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
(WebCore::ShadowBlur::drawRectShadowWithTiling):
(WebCore::ShadowBlur::drawInsetShadowWithTiling):
(WebCore::ShadowBlur::drawLayerPieces):
(WebCore::ShadowBlur::drawLayerPiecesAndFillCenter):
(WebCore::ShadowBlur::blurShadowBuffer):
(WebCore::ShadowBlur::blurAndColorShadowBuffer):
(WebCore::ShadowBlur::drawShadowLayer):

  • platform/graphics/ShadowBlur.h: Use a struct to pass the values calculated on calculateLayerBoundingRect().
3:08 AM Changeset in webkit [247384] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

[ATK] Avoid unneeded call to to core(selection) in listObjectForSelection()
https://bugs.webkit.org/show_bug.cgi?id=199748
<rdar://problem/52995908>

Reviewed by Konstantin Tokarev.

No new tests needed.

  • accessibility/atk/WebKitAccessibleInterfaceSelection.cpp:

(listObjectForCoreSelection): Renamed from listObjectForSelection() and remove the
unneeded call to core() now that coreSelection is passed directly to the function.
(optionFromList): Change to pass coreSelection directly to listObjectForCoreSelection().

Jul 11, 2019:

9:36 PM Changeset in webkit [247383] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Fix non-thread safe use of makeWeakPtr() under MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::processInputNotify()
https://bugs.webkit.org/show_bug.cgi?id=199727

Reviewed by Eric Carlson.

Stop calling makeWeakPtr() on a main thread object from a background thread.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::processInputNotify):

9:24 PM Changeset in webkit [247382] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Register a MediaStreamTrack as media producer only if it is a capture track
https://bugs.webkit.org/show_bug.cgi?id=199566
<rdar://problem/52761361>

Addressing post-landing comment to simplify setMuted call.
Unreviewed.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::MediaStreamTrack):

9:22 PM Changeset in webkit [247381] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Protect CoreAudioSharedUnit::m_clients for accessing in different threads simultaneously
https://bugs.webkit.org/show_bug.cgi?id=199717

Reviewed by Eric Carlson.

Add a lock whenever accessing to m_clients.
Manual tests show that audio capture still works.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::addClient):
(WebCore::CoreAudioSharedUnit::removeClient):
(WebCore::CoreAudioSharedUnit::forEachClient const):
(WebCore::CoreAudioSharedUnit::processMicrophoneSamples):
(WebCore::CoreAudioSharedUnit::captureFailed):

7:35 PM Changeset in webkit [247380] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Drop non thread-safe usage of WeakPtr in PlaybackSessionInterfaceAVKit
https://bugs.webkit.org/show_bug.cgi?id=199698

Reviewed by Eric Carlson.

The PlaybackSessionInterfaceAVKit constructor was making a weakPtr on the UI Thread
of an WebThread object. The WeakPtr would then be used as a data member throughout
the class on the UIThread. This is not thread-safe.

This patch switches to using a raw pointer instead of a WeakPtr. This is a partial
rollout of r243337, which turned the raw pointer into a WeakPtr for hardening
purposes. For extra safety, this patch updates the VideoFullscreenControllerContext
so that it notifies its clients (i.e. PlaybackSessionInterfaceAVKit) that it is
getting destroyed, so that they can null-out their m_playbackSessionModel data
member. This gives the sames guarantees than WeakPtr but in a thread-safe way.

  • platform/cocoa/PlaybackSessionModel.h:

(WebCore::PlaybackSessionModelClient::modelDestroyed):

  • platform/ios/PlaybackSessionInterfaceAVKit.h:
  • platform/ios/PlaybackSessionInterfaceAVKit.mm:

(WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
(WebCore::PlaybackSessionInterfaceAVKit::~PlaybackSessionInterfaceAVKit):
(WebCore::PlaybackSessionInterfaceAVKit::playbackSessionModel const):
(WebCore::PlaybackSessionInterfaceAVKit::modelDestroyed):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::~VideoFullscreenControllerContext):
(VideoFullscreenControllerContext::addClient):
(VideoFullscreenControllerContext::removeClient):

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

Fix builds where HAVE_DESIGN_SYSTEM_UI_FONTS is not defined.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontWithFamilySpecialCase):

6:13 PM Changeset in webkit [247378] by Justin Fan
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix.

  • Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp: Missing include.
6:08 PM Changeset in webkit [247377] by mmaxfield@apple.com
  • 30 edits
    32 adds in trunk

New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653
<rdar://problem/51692592>

Reviewed by Simon Fraser.

Source/WebCore:

This patch adds support for -apple-system-ui-serif, -apple-system-ui-monospaced,
and -apple-system-ui-rounded, behind an SPI that is off-by-default. We don't want
to expose these fonts to the web because we don't a standardization story for them
yet, but we do want some apps to be able to use them.

WebKit clients who want to use these fonts can set
-[WKPreferences _shouldAllowDesignSystemUIFonts] = YES.

The patch generalizes our existing system-ui infrastructure to handle these three
additional fonts. It also explicitly disables the unsupported dot-prefixed names
so they don't leak out into Web content.

Tests: fast/text/design-system-ui-10.html

fast/text/design-system-ui-11.html
fast/text/design-system-ui-12.html
fast/text/design-system-ui-13.html
fast/text/design-system-ui-14.html
fast/text/design-system-ui-15.html
fast/text/design-system-ui-16.html
fast/text/design-system-ui-2.html
fast/text/design-system-ui-3.html
fast/text/design-system-ui-4.html
fast/text/design-system-ui-5.html
fast/text/design-system-ui-6.html
fast/text/design-system-ui-7.html
fast/text/design-system-ui-8.html
fast/text/design-system-ui-9.html
fast/text/design-system-ui.html

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::shouldAllowDesignSystemUIFonts const):

  • css/CSSFontFace.h:
  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::load):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::initializeFontStyle):

  • page/Settings.yaml:
  • platform/graphics/FontDescription.cpp:

(WebCore::m_shouldAllowDesignSystemUIFonts):
(WebCore::m_shouldAllowUserInstalledFonts): Deleted.

  • platform/graphics/FontDescription.h:

(WebCore::FontDescription::shouldAllowDesignSystemUIFonts const):
(WebCore::FontDescription::setShouldAllowDesignSystemUIFonts):
(WebCore::FontDescription::operator== const):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::platformFontLookupWithFamily):
(WebCore::fontWithFamily):

  • platform/graphics/cocoa/FontCacheCoreText.h:
  • platform/graphics/cocoa/FontDescriptionCocoa.cpp:

(WebCore::systemFontUse):
(WebCore::systemFontCascadeList):
(WebCore::FontCascadeDescription::effectiveFamilyCount const):
(WebCore::FontCascadeDescription::effectiveFamilyAt const):
(WebCore::isSystemFontString): Deleted.
(WebCore::isUIFontTextStyle): Deleted.

  • platform/graphics/cocoa/FontPlatformDataCocoa.mm:

(WebCore::FontPlatformData::ctFont const):

  • platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:

(WebCore::SystemFontDatabaseCoreText::createSystemUI):
(WebCore::SystemFontDatabaseCoreText::createDesignSystemUI):
(WebCore::SystemFontDatabaseCoreText::createTextStyle):
(WebCore::SystemFontDatabaseCoreText::cascadeList):
(WebCore::SystemFontDatabaseCoreText::applyWeightItalicsAndFallbackBehavior):
(WebCore::SystemFontDatabaseCoreText::systemFontParameters):

  • platform/graphics/cocoa/SystemFontDatabaseCoreText.h:
  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::platformFontWithFamilySpecialCase):

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::platformFontWithFamilySpecialCase):

  • style/StyleResolveForDocument.cpp:

(WebCore::Style::resolveForDocument):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::dataChanged):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setShouldAllowDesignSystemUIFonts):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WebCore/PAL:

  • pal/spi/cocoa/CoreTextSPI.h:

Source/WebKit:

Add the SPI to enable the new fonts.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetShouldAllowDesignSystemUIFonts):
(WKPreferencesGetShouldAllowDesignSystemUIFonts):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _shouldAllowDesignSystemUIFonts]):
(-[WKPreferences _setShouldAllowDesignSystemUIFonts:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Source/WTF:

  • wtf/Platform.h:

LayoutTests:

  • TestExpectations:
  • fast/text/design-system-ui-10-expected-mismatch.html: Added.
  • fast/text/design-system-ui-10.html: Added.
  • fast/text/design-system-ui-11-expected-mismatch.html: Added.
  • fast/text/design-system-ui-11.html: Added.
  • fast/text/design-system-ui-12-expected-mismatch.html: Added.
  • fast/text/design-system-ui-12.html: Added.
  • fast/text/design-system-ui-13-expected-mismatch.html: Added.
  • fast/text/design-system-ui-13.html: Added.
  • fast/text/design-system-ui-14-expected-mismatch.html: Added.
  • fast/text/design-system-ui-14.html: Added.
  • fast/text/design-system-ui-15-expected-mismatch.html: Added.
  • fast/text/design-system-ui-15.html: Added.
  • fast/text/design-system-ui-16-expected-mismatch.html: Added.
  • fast/text/design-system-ui-16.html: Added.
  • fast/text/design-system-ui-2-expected.html: Added.
  • fast/text/design-system-ui-2.html: Added.
  • fast/text/design-system-ui-3-expected-mismatch.html: Added.
  • fast/text/design-system-ui-3.html: Added.
  • fast/text/design-system-ui-4-expected-mismatch.html: Added.
  • fast/text/design-system-ui-4.html: Added.
  • fast/text/design-system-ui-5-expected-mismatch.html: Added.
  • fast/text/design-system-ui-5.html: Added.
  • fast/text/design-system-ui-6-expected.html: Added.
  • fast/text/design-system-ui-6.html: Added.
  • fast/text/design-system-ui-7-expected.html: Added.
  • fast/text/design-system-ui-7.html: Added.
  • fast/text/design-system-ui-8-expected-mismatch.html: Added.
  • fast/text/design-system-ui-8.html: Added.
  • fast/text/design-system-ui-9-expected-mismatch.html: Added.
  • fast/text/design-system-ui-9.html: Added.
  • fast/text/design-system-ui-expected.html: Added.
  • fast/text/design-system-ui.html: Added.
  • platform/mac/TestExpectations:
5:49 PM Changeset in webkit [247376] by clopez@igalia.com
  • 23 edits in trunk/LayoutTests

[GTK][WPE] Rebaseline css3/blending tests with an empty homedir.

It seems this tests are sensible to some configuration of some
library as they produce different output (the layers with more left
margin) depending on that. The test pass on both cases, but the
check with the expected result fails, so it is flagged as failing.

This rebaselines the results to those that happen when running with
an empty/temporal homedir on Debian 10 to match what happens on the
bots. For more info see bugs 169916 and 199738.

Unreviewed gardening commit.

  • platform/gtk/css3/blending/svg-blend-layer-blend-expected.png:
  • platform/gtk/css3/blending/svg-blend-layer-blend-expected.txt:
  • platform/gtk/css3/blending/svg-blend-layer-clip-path-expected.png:
  • platform/gtk/css3/blending/svg-blend-layer-clip-path-expected.txt:
  • platform/gtk/css3/blending/svg-blend-layer-filter-expected.png:
  • platform/gtk/css3/blending/svg-blend-layer-filter-expected.txt:
  • platform/gtk/css3/blending/svg-blend-layer-mask-expected.png:
  • platform/gtk/css3/blending/svg-blend-layer-mask-expected.txt:
  • platform/gtk/css3/blending/svg-blend-layer-opacity-expected.png:
  • platform/gtk/css3/blending/svg-blend-layer-opacity-expected.txt:
  • platform/wpe/TestExpectations: css3/blending/svg-isolation-isolated-group.html passes with an empty homedir.
  • platform/wpe/css3/blending/svg-blend-layer-blend-expected.png:
  • platform/wpe/css3/blending/svg-blend-layer-blend-expected.txt:
  • platform/wpe/css3/blending/svg-blend-layer-clip-path-expected.png:
  • platform/wpe/css3/blending/svg-blend-layer-clip-path-expected.txt:
  • platform/wpe/css3/blending/svg-blend-layer-filter-expected.png:
  • platform/wpe/css3/blending/svg-blend-layer-filter-expected.txt:
  • platform/wpe/css3/blending/svg-blend-layer-mask-expected.png:
  • platform/wpe/css3/blending/svg-blend-layer-mask-expected.txt:
  • platform/wpe/css3/blending/svg-blend-layer-opacity-expected.png:
  • platform/wpe/css3/blending/svg-blend-layer-opacity-expected.txt:
4:58 PM Changeset in webkit [247375] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

ASSERTION FAILED: RunLoop::isMain() under IPC::Connection::sendWithAsyncReply()
https://bugs.webkit.org/show_bug.cgi?id=199734
<rdar://problem/52977439>

Reviewed by Geoffrey Garen.

It appears WKProcessTaskStateObserverDelegate's taskStateDidChange handler can get called
on a background thread so we need to make sure we go back to the main thread before we
go into WebKit and do IPC.

  • Shared/Cocoa/ProcessTaskStateObserver.mm:

(-[WKProcessTaskStateObserverDelegate process:taskStateDidChange:]):

4:47 PM Changeset in webkit [247374] by Chris Dumez
  • 3 edits in trunk/LayoutTests

[iOS] fast/events/ios/rotation/orientationchange-event-listener-on.body.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=199732
<rdar://problem/52693087>

Reviewed by Alex Christensen.

Stop logging in each event listener to not be reliant on the order in which listener are called.
Instead, simply make sure all event listeners that should be called were actually called.

  • fast/events/ios/rotation/orientationchange-event-listener-on.body-expected.txt:
  • fast/events/ios/rotation/orientationchange-event-listener-on.body.html:
4:30 PM Changeset in webkit [247373] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Make the test added in r247327 more reliable.

  • editing/selection/ios/autoscroll-with-top-content-inset-2.html:
4:18 PM Changeset in webkit [247372] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Unreviewed follow-up fix to r247364.
[ews-build] Add build step to clean up .git/index.lock file
https://bugs.webkit.org/show_bug.cgi?id=199722

  • BuildSlaveSupport/ews-build/steps.py:

(CheckOutSource): CheckOutSource should not haltOnFailure since CleanUpGitIndexLock step needs
to be run after this step.

3:53 PM Changeset in webkit [247371] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Layout Test fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html is Failing Consistently on iOS-WK2.
https://bugs.webkit.org/show_bug.cgi?id=199731

Unreviewed Test Gardening

Patch by Russell Epstein <russell_e@apple.com> on 2019-07-11

  • platform/ios-wk2/TestExpectations:
3:26 PM Changeset in webkit [247370] by sihui_liu@apple.com
  • 4 edits in trunk/Source/WebKit

StorageArea should not be destructed on the main thread
https://bugs.webkit.org/show_bug.cgi?id=199713
<rdar://problem/52911900>

Reviewed by Alex Christensen.

After r246079, LocalStorageNameSpace could be destructed on the main thread and it may hold the last reference
to StorageArea. Then we saw the crashes that StorageArea was wrongly destructed on the main thread.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::~NetworkSession):

  • NetworkProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::waitUntilTasksFinished):
(WebKit::StorageManager::waitUntilWritesFinished): Deleted.

  • NetworkProcess/WebStorage/StorageManager.h:
3:22 PM Changeset in webkit [247369] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Null deref of Range under WebPage::startAutoscrollAtPosition
https://bugs.webkit.org/show_bug.cgi?id=199724
<rdar://problem/41127089>

Reviewed by Dean Jackson.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::startAutoscrollAtPosition):
Refactor this function to be early-return-y, and add one more
early return if the Range is null.

2:56 PM Changeset in webkit [247368] by ysuzuki@apple.com
  • 2 edits in trunk/Tools

Flaky API Test TestWTF.bmalloc.ScavengedMemoryShouldBeReused
https://bugs.webkit.org/show_bug.cgi?id=199524
<rdar://problem/52783816>

Reviewed by Saam Barati.

This test is white-box one and it has strong assumption how IsoHeap allocates pages.
But this test has several problems.

  1. IsoPage::numObjects is not the exact number of how many we allocate objects. This number is calculated by pageSize / sizeof(T), and this does not account the header size of IsoPage. So, # of objects per IsoPage is less than numObjects. Since sizeof(double) is very small, we can have many objects in one IsoPage. As a result, we need a large bitmap in IsoPage. This reduces # of objects in IsoPage largely. So, ptrs.size() becomes less than numObjects.
  1. We now have lower tier of allocation in IsoHeap. It means that we allocate 8 objects in shared page (page is shared, but memory is pinned for a specific type) before using IsoHeap's page. This also makes the intention of this test wrong.

Due to (1), we access OoB of ptrs vector, passing a garbage to IsoHeap::deallocate, and crashing.

We make this test robust while we still keep this test white-box one to test the critical feature
of IsoHeap. We first exhaust lower tier of IsoHeap, and after that, start testing the memory. We
allocate many pointers, deallocate them, allocate one pointer while keeping pointers in the lower
tier live, and check whether the deallocated memory is reused.

  • TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:

(TEST):

2:51 PM Changeset in webkit [247367] by Pablo Saavedra
  • 87 edits in trunk

[WPE][GTK] Build failure with ENABLE_ACCESSIBILITY=OFF
https://bugs.webkit.org/show_bug.cgi?id=199625

Added ENABLE(ACCESSIBILITY) and replaced HAVE(ACCESSIBILITY)
with ENABLE(ACCESSIBILITY) in the code.

Additionally, the TestRunner code generator now honors the
Conditional IDL format.

.:

Reviewed by Konstantin Tokarev.

  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/WebCore:

No new tests as there is no intended functional change

Reviewed by Konstantin Tokarev.

  • accessibility/AXObjectCache.cpp:
  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::detach):
(WebCore::AccessibilityObject::isDetached const):

  • accessibility/AccessibilityObject.h:
  • accessibility/atk/AXObjectCacheAtk.cpp:
  • accessibility/atk/AccessibilityObjectAtk.cpp:
  • accessibility/atk/WebKitAccessible.cpp:
  • accessibility/atk/WebKitAccessible.h:
  • accessibility/atk/WebKitAccessibleHyperlink.cpp:
  • accessibility/atk/WebKitAccessibleHyperlink.h:
  • accessibility/atk/WebKitAccessibleInterfaceAction.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceAction.h:
  • accessibility/atk/WebKitAccessibleInterfaceComponent.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceComponent.h:
  • accessibility/atk/WebKitAccessibleInterfaceDocument.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceDocument.h:
  • accessibility/atk/WebKitAccessibleInterfaceEditableText.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceEditableText.h:
  • accessibility/atk/WebKitAccessibleInterfaceHyperlinkImpl.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceHyperlinkImpl.h:
  • accessibility/atk/WebKitAccessibleInterfaceHypertext.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceHypertext.h:
  • accessibility/atk/WebKitAccessibleInterfaceImage.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceImage.h:
  • accessibility/atk/WebKitAccessibleInterfaceSelection.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceSelection.h:
  • accessibility/atk/WebKitAccessibleInterfaceTable.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceTable.h:
  • accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceTableCell.h:
  • accessibility/atk/WebKitAccessibleInterfaceText.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceText.h:
  • accessibility/atk/WebKitAccessibleInterfaceValue.cpp:
  • accessibility/atk/WebKitAccessibleInterfaceValue.h:
  • accessibility/atk/WebKitAccessibleUtil.cpp:
  • accessibility/atk/WebKitAccessibleUtil.h:
  • accessibility/ios/AXObjectCacheIOS.mm:
  • accessibility/ios/AccessibilityObjectIOS.mm:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
  • accessibility/mac/AXObjectCacheMac.mm:
  • accessibility/mac/AccessibilityObjectBase.mm:
  • accessibility/mac/AccessibilityObjectMac.mm:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
  • accessibility/win/AccessibilityObjectWin.cpp:
  • accessibility/win/AccessibilityObjectWrapperWin.cpp:
  • dom/Document.cpp:

(WebCore::Document::prepareForDestruction):

  • editing/FrameSelection.h:
  • editing/atk/FrameSelectionAtk.cpp:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setInnerTextValue):

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):

Source/WebKit:

Reviewed by Konstantin Tokarev.

  • UIProcess/API/glib/WebKitWebViewAccessible.cpp:
  • UIProcess/API/glib/WebKitWebViewAccessible.h:
  • UIProcess/API/wpe/PageClientImpl.cpp:
  • UIProcess/API/wpe/PageClientImpl.h:
  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::m_backend):
(WKWPE::View::~View):

  • UIProcess/API/wpe/WPEView.h:
  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKAccessibilityRootObject):
(WKAccessibilityFocusedObject):
(WKAccessibilityEnableEnhancedAccessibility):
(WKAccessibilityEnhancedAccessibilityEnabled):

  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp:
  • WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.h:
  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::platformInitialize):

  • WebProcess/WebPage/wpe/WebPageWPE.cpp:

(WebKit::WebPage::platformInitialize):

  • WebProcess/wpe/WebProcessMainWPE.cpp:

Source/WebKitLegacy/mac:

Reviewed by Konstantin Tokarev.

  • WebView/WebFrame.mm:

(-[WebFrame setAccessibleName:]):
(-[WebFrame enhancedAccessibilityEnabled]):
(-[WebFrame setEnhancedAccessibility:]):
(-[WebFrame accessibilityRoot]):

Source/WTF:

Reviewed by Konstantin Tokarev.

  • wtf/FeatureDefines.h:
  • wtf/Platform.h:

Tools:

Reviewed by Konstantin Tokarev.

  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
  • WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp:
  • WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp:
  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityTextMarker.idl:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityTextMarkerRange.idl:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:

(_generateImplementationFile):

2:32 PM Changeset in webkit [247366] by Justin Fan
  • 16 edits
    14 adds in trunk

[WebGPU] Implement GPUError and error scopes
https://bugs.webkit.org/show_bug.cgi?id=199655

Reviewed by Myles C. Maxfield.

Source/WebCore:

Add GPUErrorFilter, GPUError, and the ability to push and pop error scopes on a GPUDevice.
This will allow us to check for WebGPU errors from JavaScript.
Currently, only some GPUBuffer creation errors are reported for testing; more errors will follow in later patches.

Test: webgpu/error-scopes-test.html

  • Modules/webgpu/GPUErrorFilter.idl: Added.
  • Modules/webgpu/GPUOutOfMemoryError.idl: Added.
  • Modules/webgpu/GPUValidationError.idl: Added.
  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::pushErrorScope):
(WebCore::WebGPUDevice::popErrorScope): Resolve the Promise here, since GPUDevice shouldn't worry about DOM layer.

  • Modules/webgpu/WebGPUDevice.h:
  • Modules/webgpu/WebGPUDeviceErrorScopes.cpp: Added.

(WebCore::WebGPUDeviceErrorScopes::pushErrorScope): Delegates to WebGPUDevice.
(WebCore::WebGPUDeviceErrorScopes::popErrorScope): Ditto.

  • Modules/webgpu/WebGPUDeviceErrorScopes.h: Added.
  • Modules/webgpu/WebGPUDeviceErrorScopes.idl: Added.
  • platform/graphics/gpu/GPUBuffer.h:
  • platform/graphics/gpu/GPUDevice.cpp: The actual error stack lives here.

(WebCore::GPUDevice::pushErrorScope):
(WebCore::GPUDevice::popErrorScope): Calls a callback with a GPUError, if any.
(WebCore::GPUDevice::registerError): Actually creates GPUErrors.

  • platform/graphics/gpu/GPUDevice.h:
  • platform/graphics/gpu/GPUError.cpp: Added.

(WebCore::createError): Factory function for various error types.

  • platform/graphics/gpu/GPUError.h: Added.
  • platform/graphics/gpu/GPUErrorFilter.h: Added.
  • platform/graphics/gpu/GPUOutOfMemoryError.h: Added.

(WebCore::GPUOutOfMemoryError::create):

  • platform/graphics/gpu/GPUValidationError.cpp: Added.

(WebCore::GPUValidationError::create):
(WebCore::GPUValidationError::GPUValidationError):

  • platform/graphics/gpu/GPUValidationError.h: Added.

(WebCore::GPUValidationError::message const):

  • platform/graphics/gpu/cocoa/GPUBufferMetal.mm:

(WebCore::GPUBuffer::validateBufferUsage): Create an actual GPUValidationError :)
(WebCore::GPUBuffer::tryCreate): Create GPUOutOfMemoryErrors where appropriate.

Add file/name references:

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:

Missing includes:

  • Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp:

LayoutTests:

Add a test to cover the cases outlined in the WebGPU error handling design doc.

  • webgpu/error-scopes-test-expected.txt: Added.
  • webgpu/error-scopes-test.html: Added.
2:15 PM Changeset in webkit [247365] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Null deref of RenderView under FrameView::setNeedsCompositingConfigurationUpdate
https://bugs.webkit.org/show_bug.cgi?id=199723
<rdar://problem/51554747>

Reviewed by Simon Fraser.

  • page/FrameView.cpp:

(WebCore::FrameView::setNeedsCompositingConfigurationUpdate):
Add a null-check; it looks like it is possible to get here by dismissing
the find overlay (or other page overlay) at an inopportune time.

2:12 PM Changeset in webkit [247364] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Add build step to clean up .git/index.lock file
https://bugs.webkit.org/show_bug.cgi?id=199722

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(CheckOutSource.getResultSummary): Run CleanUpGitIndexLock step when CheckOutSource fails.
(CleanUpGitIndexLock.init): Configure timeout and logEnviron.
(CleanUpGitIndexLock.evaluateCommand): Always RETRY the build after this step is run.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.
2:08 PM Changeset in webkit [247363] by Justin Michaud
  • 9 edits
    3 adds in trunk

Add b3 macro lowering for CheckMul on arm64
https://bugs.webkit.org/show_bug.cgi?id=199251

Reviewed by Robin Morisset.

JSTests:

  • microbenchmarks/check-mul-constant.js: Added.

(doTest):

  • microbenchmarks/check-mul-no-constant.js: Added.

(doTest):

  • microbenchmarks/check-mul-power-of-two.js: Added.

(doTest):

Source/JavaScriptCore:

  • Lower CheckMul for 32-bit arguments on arm64 into a mul and then an overflow check.
  • Add a new opcode to air on arm64 for smull (multiplySignExtend32).
  • Fuse sign extend 32 + mul into smull (taking two 32-bit arguments and producing 64 bits).
  • 1.25x speedup on power of two microbenchmark, 1.15x speedup on normal constant microbenchmark, and no change on the no-constant benchmark.

Also, skip some of the b3 tests that were failing before this patch so that the new tests can run
to completion.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::multiplySignExtend32):

  • assembler/testmasm.cpp:

(JSC::testMul32SignExtend):
(JSC::run):

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

(JSC::B3::testMulArgs32SignExtend):
(JSC::B3::testMulImm32SignExtend):
(JSC::B3::testMemoryFence):
(JSC::B3::testStoreFence):
(JSC::B3::testLoadFence):
(JSC::B3::testPinRegisters):
(JSC::B3::run):

2:04 PM Changeset in webkit [247362] by commit-queue@webkit.org
  • 3 edits
    5 deletes in trunk

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

Caused performance regression. (Requested by deanj on
#webkit).

Reverted changeset:

"Disable speculative loading if cache is not to be used for
the load"
https://bugs.webkit.org/show_bug.cgi?id=199644
https://trac.webkit.org/changeset/247314

1:52 PM Changeset in webkit [247361] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Pages using Google Tag Manager Google's anti-flicker optimization may take ~5 seconds to do initial paint
https://bugs.webkit.org/show_bug.cgi?id=199704
<rdar://problem/52966461>

Reviewed by Geoffrey Garen.

Apply the same fix as r246764 for when "https://www.googletagmanager.com/gtm.js" load is blocked by a content
extension to avoid delaying initial paint by ~5 seconds. This was tested on https://www.formula1.com/en.html.

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad):

1:11 PM Changeset in webkit [247360] by dino@apple.com
  • 2 edits in trunk/Source/WebKit

CrashTracer: Regression : MobileSafari at UIKit: -[CALayerAccessibilityUIKitQuartzCore setBounds:]
https://bugs.webkit.org/show_bug.cgi?id=199720
<rdar://problem/51470469>

Reviewed by Tim Horton.

Speculative fix after confirming that this crash can occur when
a zero width/height view is used for a UITargetedPreview. We
already guarded against this in the default flow, but not in
the fallback path where we take a view snapshot.

  • UIProcess/ios/WKContentViewInteraction.mm:

(createFallbackTargetedPreview): Return early if rectangles are empty.

12:39 PM Changeset in webkit [247359] by Alan Coon
  • 7 edits in trunk/Source

Versioning.

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

Disable RGB10 IOSurface pixel format for Mac Catalyst
https://bugs.webkit.org/show_bug.cgi?id=199712
<rdar://problem/52793584>

Reviewed by Beth Dakin.

Disable RGB10 IOSurface pixel format for Mac Catalyst. This format is not supported
on Mac Catalyst and causes us not to render anything.

  • platform/graphics/cocoa/IOSurface.h:
11:39 AM Changeset in webkit [247357] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Use mobile UA on jsfiddle.net
https://bugs.webkit.org/show_bug.cgi?id=199687
<rdar://problem/50839844>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-11
Reviewed by Maciej Stachowiak.

Text selection does not work on iPads using desktop UA.
This isn't the best solution, but it's certainly *a* solution.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::desktopClassBrowsingRecommendedForRequest):

11:36 AM Changeset in webkit [247356] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Layers: Uncaught Exception: Request with id = 2 failed. {"code":-32601,"message":"'Page' domain was not found","data":[{"code":-32601,"message":"'Page' domain was not found"}]}
https://bugs.webkit.org/show_bug.cgi?id=199555

Reviewed by Joseph Pecoraro.

Use modern inspected target support checking, and defer agent commands until a target is
available.

  • UserInterface/Views/Layers3DContentView.js:

(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype._showPaintRectsSettingChanged):
(WI.Layers3DContentView.prototype._updateCompositingBordersButtonState):
(WI.Layers3DContentView.prototype._toggleCompositingBorders):

  • UserInterface/Views/DOMTreeContentView.js:

(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype._toggleCompositingBorders):
(WI.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings):
(WI.DOMTreeContentView.prototype._showPaintRectsSettingChanged):
(WI.DOMTreeContentView.prototype._showPrintStylesChanged):
(WI.DOMTreeContentView.prototype._showRulersChanged):
Drive-by: apply the same changes to the Elements tab for when the Layers tab isn't enabled.

10:17 AM Changeset in webkit [247355] by Jonathan Bedard
  • 15 edits
    17 adds in trunk

[iOS 13] Enable WebKit build
https://bugs.webkit.org/show_bug.cgi?id=199481
<rdar://problem/52619048>

Reviewed by Tim Horton.

Source/WebCore:

No new tests, iOS 13 test expectations will be migrated in the near future.

  • platform/ios/LocalCurrentTraitCollection.mm:

(WebCore::LocalCurrentTraitCollection::LocalCurrentTraitCollection): Remove underscore from currentTraitCollection.
(WebCore::LocalCurrentTraitCollection::~LocalCurrentTraitCollection): Remove underscore from setCurrentTraitCollection.

Source/WebCore/PAL:

  • pal/spi/cocoa/NSProgressSPI.h: We need the NSProgress SPI in public builds because NSProgress API

is marked unavailable on iOS, watchOS and tvOS.

  • pal/spi/ios/CoreUISPI.h: Add CUIStyleEffectConfiguration.appearanceName SPI.
  • pal/spi/ios/DataDetectorsUISPI.h: Add UIContextMenuConfiguration.contextMenuConfigurationForURL SPI.
  • pal/spi/ios/SystemPreviewSPI.h: Add ARQuickLookWebKitItem.initWithPreviewItemProvider SPI.
  • pal/spi/ios/UIKitSPI.h: Add systemBrownColor, UIColor.tableCellDefaultSelectionTintColor should be marked nullable.
  • pal/spi/mac/AVFoundationSPI.h: Add AVOutputDevice.name SPI.

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h: Add UITextEffectsWindow.sharedTextEffectsWindowForWindowScene SPI.
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView showGlobalMenuControllerInRect:]): setTargetRect, setMenuVisible marked depreciated in iOS 13.
(-[WKContentView hideGlobalMenuController]): Ditto.

Tools:

  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig: Add iOS framework stubs.

WebKitLibraries:

Added iOS 13 framework stubs, used tbd version 3 in all new stubs.

  • WebKitPrivateFrameworkStubs/iOS/13: Added.
  • WebKitPrivateFrameworkStubs/iOS/13/AppSupport.framework: Added.
  • WebKitPrivateFrameworkStubs/iOS/13/AssertionServices.framework: Added.
  • WebKitPrivateFrameworkStubs/iOS/13/AuthKit.framework: Added.
  • WebKitPrivateFrameworkStubs/iOS/13/CorePDF.framework: Added.
  • WebKitPrivateFrameworkStubs/iOS/13/CorePrediction.framework: Added.
  • WebKitPrivateFrameworkStubs/iOS/13/GraphicsServices.framework: Added.
  • WebKitPrivateFrameworkStubs/iOS/13/SafariSafeBrowsing.framework: Added.
  • WebKitPrivateFrameworkStubs/iOS/13/URLFormatting.framework: Added.
10:10 AM Changeset in webkit [247354] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Fix non thread-safe usage of makeWeakPtr() in MediaPlayerPrivateMediaFoundation
https://bugs.webkit.org/show_bug.cgi?id=199700

Reviewed by Eric Carlson.

The code was calling makeWeakPtr() on a main-thread object, from a background thread.
This is not thread safe. To address the issue, this patches creates the WeakPtr ahead
of time, on the main thread.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerPrivateMediaFoundation):
(WebCore::MediaPlayerPrivateMediaFoundation::endCreatedMediaSource):
(WebCore::MediaPlayerPrivateMediaFoundation::endGetEvent):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::processInputNotify):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:

(WebCore::MediaPlayerPrivateMediaFoundation::ThreadSafeWrapper::create):
(WebCore::MediaPlayerPrivateMediaFoundation::ThreadSafeWrapper::wrapped):
(WebCore::MediaPlayerPrivateMediaFoundation::ThreadSafeWrapper::ThreadSafeWrapper):

10:08 AM Changeset in webkit [247353] by Ryan Haddad
  • 34 edits
    26 copies
    6 moves
    105 adds in trunk

Add test expectations and baselines for iOS 13
https://bugs.webkit.org/show_bug.cgi?id=199329

Reviewed by Jonathan Bedard.

Tools:

  • Scripts/webkitpy/port/ios.py:

(IOSPort): Increment current version to 13.

  • Scripts/webkitpy/port/ios_device_unittest.py: Update unit tests.

(IOSDeviceTest.test_layout_test_searchpath_with_apple_additions):
(IOSDeviceTest.test_layout_test_searchpath_without_apple_additions):
(IOSDeviceTest.test_layout_searchpath_wih_device_type):

  • Scripts/webkitpy/port/ios_simulator_unittest.py: Ditto.

(IOSSimulatorTest.make_port):
(IOSSimulatorTest.test_layout_test_searchpath_with_apple_additions):
(IOSSimulatorTest.test_layout_test_searchpath_without_apple_additions):
(IOSSimulatorTest.test_layout_searchpath_wih_device_type):

  • Scripts/webkitpy/port/ios_testcase.py: Ditto.

(IOSTest.make_port):

LayoutTests:

  • platform/ios-12/*: Move iOS 12 specific baselines to their own directory.
  • platform/ios/*: Add iOS 13 baselines and test expectations.
8:46 AM Changeset in webkit [247352] by magomez@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Update expectations after r247346.

  • platform/gtk/TestExpectations:
8:33 AM Changeset in webkit [247351] by Kocsen Chung
  • 7 edits in tags/Safari-608.1.35

Cherry-pick r247307. rdar://problem/52859522

Unreviewed, rolling out r247286.

Caused TestWTF.WTF.StringOperators to fail on debug bots

Reverted changeset:

"Add StringBuilder member function which allows makeString()
style variadic argument construction"
https://bugs.webkit.org/show_bug.cgi?id=198997
https://trac.webkit.org/changeset/247286

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

7:09 AM Changeset in webkit [247350] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Cleanup InlineFormattingContext::LineLayout class.
https://bugs.webkit.org/show_bug.cgi?id=199702
<rdar://problem/52931733>

Reviewed by Sam Weinig.

Move some structs to .cpp. They don't need to pollute the class declaration.

  • layout/inlineformatting/InlineFormattingContext.h:

(WebCore::Layout::InlineFormattingContext::LineLayout::layoutState const):
(): Deleted.

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::LineInput::HorizontalConstraint::HorizontalConstraint):
(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::HorizontalConstraint::HorizontalConstraint): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::LineInput): Deleted.

6:36 AM Changeset in webkit [247349] by jdiggs@igalia.com
  • 26 edits in trunk

AX: Implement support for ARIA roles insertion, deletion, subscript, superscript, and time
https://bugs.webkit.org/show_bug.cgi?id=199692

Reviewed by Chris Fleizach.

Source/WebCore:

Create new AccessibilityRole types which correspond to the new ARIA roles and
update AccessibilityRenderObject::determineAccessibilityRole() to assign these
internal roles to the related HTML elements.

Update both ATK and Mac to recognize these new internal roles. In addition, update
the ATK mappings for the ins and del elements to ATK_ROLE_CONTENT_INSERTION and
ATK_ROLE_CONTENT_DELETION respectively. Also expose "insertion" and "deletion" via
the AtkObject xml-roles attribute so that this information is not completely absent
for GTK or WPE built against earlier versions of ATK.

Remove AccessibilityObject's isSubscriptStyleGroup() and isSuperscriptStyleGroup().
These two methods were only being used by ATK and are no longer needed for platform
role mapping.

No new tests. Instead add the roles to the existing role-exposure tests.

  • accessibility/AccessibilityObject.cpp:

(WebCore::initializeRoleMap):
(WebCore::AccessibilityObject::isSubscriptStyleGroup const): Deleted.
(WebCore::AccessibilityObject::isSuperscriptStyleGroup const): Deleted.

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::determineAccessibilityRole):

  • accessibility/atk/WebKitAccessible.cpp:

(webkitAccessibleGetAttributes):
(atkRole):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper subrole]):

Tools:

Add support for output of AXDeletion and AXInsertion roles for tests.
Update GTK and WPE jhbuild modules to use version of ATK and AT-SPI2
which include ROLE_CONTENT_DELETION and ROLE_CONTENT_INSERTION.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
  • gtk/jhbuild.modules:
  • wpe/jhbuild.modules:

LayoutTests:

Add the new roles to the existing role-exposure tests and update expectations accordingly.

  • accessibility/gtk/object-attributes-expected.txt:
  • accessibility/gtk/object-attributes.html:
  • accessibility/gtk/xml-roles-exposed-expected.txt:
  • accessibility/gtk/xml-roles-exposed.html:
  • accessibility/roles-computedRoleString.html:
  • accessibility/roles-exposed.html:
  • platform/gtk/accessibility/roles-computedRoleString-expected.txt:
  • platform/gtk/accessibility/roles-exposed-expected.txt:
  • platform/mac-wk2/accessibility/roles-exposed-expected.txt:
  • platform/mac/accessibility/roles-computedRoleString-expected.txt:
  • platform/mac/accessibility/roles-exposed-expected.txt:
  • platform/wpe/accessibility/roles-computedRoleString-expected.txt:
  • platform/wpe/accessibility/roles-exposed-expected.txt:
5:45 AM Changeset in webkit [247348] by Adrian Perez de Castro
  • 2 edits in trunk/Tools

[ews-build] Remove workers {ltilve,tanty}-gtk-wk2-ews from configuration
https://bugs.webkit.org/show_bug.cgi?id=199707

Reviewed by Aakash Jain.

  • BuildSlaveSupport/ews-build/config.json: Remove old unused workers.
3:57 AM Changeset in webkit [247347] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[GStreamer][MediaStream] Use the new dispatchMediaSampleToObservers to dispatch new buffers
https://bugs.webkit.org/show_bug.cgi?id=199689

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

We already have tests for this.

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:

(WebCore::GStreamerVideoCaptureSource::processNewFrame):
(WebCore::GStreamerVideoCaptureSource::newSampleCallback):

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
2:42 AM Changeset in webkit [247346] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Unreviewed, revert r243617.
https://bugs.webkit.org/show_bug.cgi?id=196341

Mark pointed out that JSVirtualMachine can be gone in the other thread while we are executing GC constraint-solving.
This patch does not account that JavaScriptCore.framework is multi-thread safe: JSVirtualMachine wrapper can be destroyed,
and [JSVirtualMachine dealloc] can be executed in any threads while the VM is retained and used in the other thread (e.g.
destroyed from AutoReleasePool in some thread).

  • API/JSContext.mm:

(-[JSContext initWithVirtualMachine:]):
(-[JSContext dealloc]):
(-[JSContext initWithGlobalContextRef:]):
(-[JSContext wrapperMap]):
(+[JSContext contextWithJSGlobalContextRef:]):

  • API/JSVirtualMachine.mm:

(initWrapperCache):
(wrapperCache):
(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]):
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]):
(-[JSVirtualMachine initWithContextGroupRef:]):
(-[JSVirtualMachine dealloc]):
(+[JSVirtualMachine virtualMachineWithContextGroupRef:]):
(-[JSVirtualMachine contextForGlobalContextRef:]):
(-[JSVirtualMachine addContext:forGlobalContextRef:]):
(scanExternalObjectGraph):
(scanExternalRememberedSet):

  • API/JSVirtualMachineInternal.h:
  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::setWrapperMap):
(JSC::JSGlobalObject::setAPIWrapper): Deleted.
(JSC::JSGlobalObject::apiWrapper const): Deleted.

  • runtime/VM.h:
12:34 AM Changeset in webkit [247345] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

MobileSafari may crash under -[UIKeyboardTaskExecutionContext transferExecutionToMainThreadWithTask:]
https://bugs.webkit.org/show_bug.cgi?id=199701
<rdar://problem/52590170>

Reviewed by Tim Horton.

Mitigates a crash wherein we end up calling the completion handler of
-requestAutocorrectionContextWithCompletionHandler: within a nested call
to -requestAutocorrectionContextWithCompletionHandler:. In this particular
case, a sync window.open from the web process to the UI process happens
while the UI process is already handling a sync autocorrection context
request. This causes the UI process to try and immediately dispatch the
incoming sync message to avoid deadlock. However, Safari's logic to create
and set up a new web view when opening a new window makes the new view the
first responder, which then prompts UIKit logic to request an autocorrection
context for the new web view.

To avoid the issue for now, simply use -resignFirstResponder as a cue to invoke
pending autocorrection context handlers in the original web view before UIKit
tries to request autocorrection context in the newly created view.

I attempted to write a test for this, but realized that we only end up hitting
the debug assertion pointed out in <https://webkit.org/b/199680>; we should be
able to write a test for this in the future, if we teach Connection to handle
multiple outgoing sync messages.

For the time being, I've attached a manual test case to the bug.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView resignFirstResponderForWebView]):
(-[WKContentView _cancelPendingAutocorrectionContextHandler]):

Add a new helper to signify that a pending autocorrection context handler should be cancelled (invoked
immediately with empty data). Use this in a few places where we currently explicitly pass
-[WKAutocorrectionContext emptyAutocorrectionContext].

(-[WKContentView requestAutocorrectionContextWithCompletionHandler:]):

Note: See TracTimeline for information about the timeline view.