Timeline
May 26, 2018:
- 1:59 PM Changeset in webkit [232227] by
-
- 3 edits in trunk/Source/WTF
testair sometimes crashes due to races in initialization of ARC4RandomNumberGenerator
https://bugs.webkit.org/show_bug.cgi?id=186014
Reviewed by Yusuke Suzuki.
testair launches a bunch of threads and the threads do B3 things that use random numbers.
Sometimes two threads will initialize the random number generator at the same time, because
that's what happens when you use static NeverDestroyed<>.
This changes that code to use std::call_once to initialize the shared
ARC4RandomNumberGenerator.
Also, this adds a diagnostic message to the lock's assertion. This assertion was the symptom
of the race, and knowing the state of the lock when the assertion fired gave a darn good clue
about what was going on: the lock's value was 0 at time of unlock, implying that another
thread reinitialized the lock to zero by rerunning the constructor.
- wtf/CryptographicallyRandomNumber.cpp:
- wtf/LockAlgorithmInlines.h:
(WTF::Hooks>::unlockSlow):
- 11:17 AM Changeset in webkit [232226] by
-
- 10 edits in trunk
[JSC] Rename Array#flatten to flat
https://bugs.webkit.org/show_bug.cgi?id=186012
Reviewed by Saam Barati.
JSTests:
- stress/array-flatten.js:
(shouldThrow):
- test262/expectations.yaml:
Source/JavaScriptCore:
Rename Array#flatten to Array#flat. This rename is done in TC39 since flatten
conflicts with the mootools' function name.
- builtins/ArrayPrototype.js:
(globalPrivate.flatIntoArray):
(flat):
(globalPrivate.flatIntoArrayWithCallback):
(flatMap):
(globalPrivate.flattenIntoArray): Deleted.
(flatten): Deleted.
(globalPrivate.flattenIntoArrayWithCallback): Deleted.
- runtime/ArrayPrototype.cpp:
(JSC::ArrayPrototype::finishCreation):
LayoutTests:
- inspector/model/remote-object-get-properties-expected.txt:
- js/Object-getOwnPropertyNames-expected.txt:
- js/script-tests/Object-getOwnPropertyNames.js:
- 8:26 AM Changeset in webkit [232225] by
-
- 8 edits1 delete in trunk/Source/WebCore
[LFC] Implement margin computation
https://bugs.webkit.org/show_bug.cgi?id=186008
Reviewed by Antti Koivisto.
- WebCore.xcodeproj/project.pbxproj:
- layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeMargin const):
(WebCore::Layout::FormattingContext::marginTop const): Deleted.
(WebCore::Layout::FormattingContext::marginLeft const): Deleted.
(WebCore::Layout::FormattingContext::marginBottom const): Deleted.
(WebCore::Layout::FormattingContext::marginRight const): Deleted.
- layout/FormattingContext.h:
- layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout const):
(WebCore::Layout::BlockFormattingContext::computeMargin const):
(WebCore::Layout::BlockFormattingContext::marginTop const): Deleted.
(WebCore::Layout::BlockFormattingContext::marginBottom const): Deleted.
- layout/blockformatting/BlockFormattingContext.h:
- layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeight):
(WebCore::Layout::BlockFormattingContext::Geometry::computedMargin):
- layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::_isMarginBottomCollapsedWithParent):
(WebCore::Layout::collapsedMarginBottomFromLastChild):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginTop):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBottom):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginBottomCollapsedWithParent):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginTopCollapsedWithParentMarginBottom):
(WebCore::Layout::BlockMarginCollapse::marginTop): Deleted.
(WebCore::Layout::BlockMarginCollapse::marginBottom): Deleted.
(WebCore::Layout::BlockMarginCollapse::isMarginBottomCollapsedWithParent): Deleted.
(WebCore::Layout::BlockMarginCollapse::isMarginTopCollapsedWithParentMarginBottom): Deleted.
- layout/blockformatting/BlockMarginCollapse.h: Removed.
- 3:55 AM Changeset in webkit [232224] by
-
- 185 edits24 copies5 moves80 adds2 deletes in trunk/JSTests
Upgrade test262 to May 24 version
https://bugs.webkit.org/show_bug.cgi?id=185937
Reviewed by Darin Adler.
- test262/expectations.yaml:
- test262/harness/doneprintHandle.js:
(DONE):
- test262/latest-changes-summary.txt:
- test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added.
- test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added.
- test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added.
- test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added.
- test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js.
- test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added.
- test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-global-init.js:
- test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added.
- test262/test/annexB/language/global-code/block-decl-global-existing-global-init.js: Added.
(262.evalScript.f):
- test262/test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.f):
- test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-global-init.js: Added.
(262.evalScript.true.f):
(else._f):
- test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.true.f):
(else._f):
- test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-global-init.js: Added.
(262.evalScript.false._f):
(else.f):
- test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.false._f):
(else.f):
- test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-global-init.js: Added.
(262.evalScript.true.f):
- test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.true.f):
- test262/test/annexB/language/global-code/if-decl-no-else-global-existing-global-init.js: Added.
(262.evalScript.true.f):
- test262/test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.true.f):
- test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-global-init.js: Added.
(else.f):
- test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js: Added.
(else.f):
- test262/test/annexB/language/global-code/switch-case-global-existing-global-init.js: Added.
(262.evalScript.switch.case.1):
(262.evalScript.switch):
- test262/test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.switch.case.1):
(262.evalScript.switch):
- test262/test/annexB/language/global-code/switch-dflt-global-existing-global-init.js: Added.
(262.evalScript.switch.default):
(262.evalScript.switch):
- test262/test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.switch.default):
(262.evalScript.switch):
- test262/test/built-ins/Array/prototype/flat/array-like-objects.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/array-like-objects.js.
- test262/test/built-ins/Array/prototype/flat/bound-function-call.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/bound-function-call.js.
- test262/test/built-ins/Array/prototype/flat/empty-array-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-array-elements.js.
- test262/test/built-ins/Array/prototype/flat/empty-object-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-object-elements.js.
- test262/test/built-ins/Array/prototype/flat/length.js: Added.
- test262/test/built-ins/Array/prototype/flat/name.js: Added.
- test262/test/built-ins/Array/prototype/flat/non-numeric-depth-should-not-throw.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js.
- test262/test/built-ins/Array/prototype/flat/non-object-ctor-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js.
- test262/test/built-ins/Array/prototype/flat/null-undefined-elements.js: Added.
- test262/test/built-ins/Array/prototype/flat/null-undefined-input-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js.
- test262/test/built-ins/Array/prototype/flat/positive-infinity.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/positive-infinity.js.
- test262/test/built-ins/Array/prototype/flat/prop-desc.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/prop-desc.js.
- test262/test/built-ins/Array/prototype/flat/symbol-object-create-null-depth-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js.
- test262/test/built-ins/Array/prototype/flatten/length.js: Removed.
- test262/test/built-ins/Array/prototype/flatten/name.js: Removed.
- test262/test/built-ins/Array/prototype/flatten/null-undefined-elements.js: Removed.
- test262/test/built-ins/AsyncGeneratorPrototype/next/name.js:
- test262/test/built-ins/AsyncGeneratorPrototype/return/name.js:
- test262/test/built-ins/AsyncGeneratorPrototype/throw/name.js:
- test262/test/built-ins/Math/acosh/nan-returns.js:
- test262/test/built-ins/Math/asinh/asinh-specialVals.js:
- test262/test/built-ins/Math/atanh/atanh-specialVals.js:
- test262/test/built-ins/Math/cbrt/cbrt-specialValues.js:
- test262/test/built-ins/Math/cbrt/prop-desc.js:
- test262/test/built-ins/Math/cosh/cosh-specialVals.js:
- test262/test/built-ins/Math/expm1/expm1-specialVals.js:
- test262/test/built-ins/Math/log10/Log10-specialVals.js:
- test262/test/built-ins/Math/log2/log2-basicTests.js:
- test262/test/built-ins/Math/sign/sign-specialVals.js:
- test262/test/built-ins/Math/sinh/sinh-specialVals.js:
- test262/test/built-ins/Math/tanh/tanh-specialVals.js:
- test262/test/built-ins/Math/trunc/trunc-sampleTests.js:
- test262/test/built-ins/Math/trunc/trunc-specialVals.js:
- test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js: Added.
- test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js: Added.
- test262/test/intl402/Intl/getCanonicalLocales/descriptor.js:
- test262/test/intl402/Intl/getCanonicalLocales/duplicates.js:
- test262/test/intl402/Locale/constructor-getter-order.js: Added.
(new.Intl.Locale.toString):
(get language):
(get script):
(get region):
(get calendar):
(get collation):
(get hourCycle):
(get caseFirst):
(get numeric):
(get numberingSystem):
- test262/test/intl402/Locale/constructor-locale-object.js: Added.
- test262/test/intl402/Locale/constructor-non-iana-canon.js: Added.
- test262/test/intl402/Locale/constructor-options-casefirst-invalid.js: Added.
(valueOf):
(const.invalidCaseFirstOption.of.invalidCaseFirstOptions.new.Intl.Locale):
- test262/test/intl402/Locale/constructor-options-casefirst-valid.js: Added.
(toString):
- test262/test/intl402/Locale/constructor-options-collation-invalid.js: Added.
(const.invalidCollationOption.of.invalidCollationOptions.new.Intl.Locale):
- test262/test/intl402/Locale/constructor-options-collation-valid.js: Added.
- test262/test/intl402/Locale/constructor-options-hourcycle-invalid.js: Added.
(const.invalidHourCycleOption.of.invalidHourCycleOptions.new.Intl.Locale):
- test262/test/intl402/Locale/constructor-options-hourcycle-valid.js: Added.
(toString):
- test262/test/intl402/Locale/constructor-options-language-grandfathered.js: Added.
- test262/test/intl402/Locale/constructor-options-language-valid.js:
(toString):
- test262/test/intl402/Locale/constructor-options-numberingsystem-invalid.js: Added.
(const.invalidNumberingSystemOption.of.invalidNumberingSystemOptions.new.Intl.Locale):
- test262/test/intl402/Locale/constructor-options-numberingsystem-valid.js: Added.
- test262/test/intl402/Locale/constructor-options-numeric-valid.js: Added.
(valueOf):
- test262/test/intl402/Locale/constructor-options-region-valid.js:
- test262/test/intl402/Locale/constructor-options-script-valid.js:
(toString):
- test262/test/intl402/Locale/constructor-parse-twice.js: Added.
- test262/test/intl402/Locale/constructor-tag-tostring.js: Added.
(CustomError):
(WrongCustomError):
(const.errors.get Symbol):
(throw.new.CustomError):
(throw.new.CustomError.get toString):
(throw.new.CustomError.get valueOf):
(throw.new.WrongCustomError.get valueOf):
(throw.new.WrongCustomError):
- test262/test/intl402/Locale/constructor-unicode-ext-invalid.js: Added.
- test262/test/intl402/Locale/constructor-unicode-ext-valid.js: Added.
(canonical.of.Object.entries):
- test262/test/intl402/Locale/extensions-grandfathered.js: Added.
(of.testData.value.of.Object.entries):
- test262/test/intl402/Locale/extensions-private.js: Added.
- test262/test/intl402/Locale/getters-grandfathered.js: Added.
- test262/test/intl402/Locale/getters-missing.js: Added.
- test262/test/intl402/Locale/getters-privateuse.js: Added.
- test262/test/intl402/Locale/getters.js: Added.
- test262/test/intl402/Locale/invalid-tag-throws-symbol.js:
- test262/test/intl402/Locale/likely-subtags-grandfathered.js: Added.
- test262/test/intl402/Locale/prop-desc.js:
- test262/test/intl402/Locale/prototype/baseName/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/calendar/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/caseFirst/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/collation/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/constructor/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
- test262/test/intl402/Locale/prototype/hourCycle/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/language/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/maximize/length.js:
- test262/test/intl402/Locale/prototype/maximize/prop-desc.js:
- test262/test/intl402/Locale/prototype/minimize/length.js: Copied from JSTests/test262/test/intl402/Locale/prototype/maximize/length.js.
- test262/test/intl402/Locale/prototype/minimize/name.js: Added.
- test262/test/intl402/Locale/prototype/minimize/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
- test262/test/intl402/Locale/prototype/numberingSystem/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/numeric/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/region/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/script/prop-desc.js: Added.
- test262/test/intl402/Locale/prototype/toString/prop-desc.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
- test262/test/intl402/Locale/prototype/toStringTag/toStringTag.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/toStringTag.js.
- test262/test/intl402/Number/prototype/toLocaleString/length.js:
- test262/test/intl402/NumberFormat/length.js:
- test262/test/intl402/NumberFormat/name.js:
- test262/test/intl402/NumberFormat/prop-desc.js:
- test262/test/intl402/PluralRules/length.js:
- test262/test/intl402/PluralRules/name.js:
- test262/test/intl402/PluralRules/prop-desc.js: Copied from JSTests/test262/test/intl402/NumberFormat/prop-desc.js.
- test262/test/language/expressions/addition/bigint-and-number.js:
- test262/test/language/expressions/addition/bigint-arithmetic.js:
(testAdd): Deleted.
- test262/test/language/expressions/addition/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/addition/bigint-toprimitive.js:
- test262/test/language/expressions/addition/bigint-wrapped-values.js:
- test262/test/language/expressions/bitwise-and/bigint-and-number.js:
- test262/test/language/expressions/bitwise-and/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/bitwise-and/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.0b011n.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.0b011n.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b011n.toString):
- test262/test/language/expressions/bitwise-and/bigint-toprimitive.js:
- test262/test/language/expressions/bitwise-and/bigint-wrapped-values.js:
- test262/test/language/expressions/bitwise-not/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
- test262/test/language/expressions/bitwise-or/bigint-and-number.js:
- test262/test/language/expressions/bitwise-or/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/bitwise-or/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.0b011n.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.0b011n.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b011n.toString):
- test262/test/language/expressions/bitwise-or/bigint-toprimitive.js:
- test262/test/language/expressions/bitwise-or/bigint-wrapped-values.js:
- test262/test/language/expressions/bitwise-xor/bigint-and-number.js:
- test262/test/language/expressions/bitwise-xor/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/bitwise-xor/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.0b011n.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.0b011n.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b011n.toString):
- test262/test/language/expressions/bitwise-xor/bigint-toprimitive.js:
- test262/test/language/expressions/bitwise-xor/bigint-wrapped-values.js:
- test262/test/language/expressions/division/bigint-and-number.js:
- test262/test/language/expressions/division/bigint-arithmetic.js:
(testDiv): Deleted.
- test262/test/language/expressions/division/bigint-complex-infinity.js:
- test262/test/language/expressions/division/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/division/bigint-toprimitive.js:
- test262/test/language/expressions/division/bigint-wrapped-values.js:
- test262/test/language/expressions/does-not-equals/bigint-and-bigint.js:
- test262/test/language/expressions/does-not-equals/bigint-and-boolean.js:
- test262/test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js:
- test262/test/language/expressions/does-not-equals/bigint-and-non-finite.js:
- test262/test/language/expressions/does-not-equals/bigint-and-number-extremes.js:
- test262/test/language/expressions/does-not-equals/bigint-and-number.js:
- test262/test/language/expressions/does-not-equals/bigint-and-object.js:
(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):
- test262/test/language/expressions/does-not-equals/bigint-and-string.js:
- test262/test/language/expressions/equals/bigint-and-bigint.js:
- test262/test/language/expressions/equals/bigint-and-boolean.js:
- test262/test/language/expressions/equals/bigint-and-incomparable-primitive.js:
- test262/test/language/expressions/equals/bigint-and-non-finite.js:
- test262/test/language/expressions/equals/bigint-and-number-extremes.js:
- test262/test/language/expressions/equals/bigint-and-number.js:
- test262/test/language/expressions/equals/bigint-and-object.js:
(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):
- test262/test/language/expressions/equals/bigint-and-string.js:
- test262/test/language/expressions/exponentiation/bigint-and-number.js:
- test262/test/language/expressions/exponentiation/bigint-arithmetic.js:
(testExpt): Deleted.
- test262/test/language/expressions/exponentiation/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/exponentiation/bigint-negative-exponent-throws.js: Renamed from JSTests/test262/test/language/expressions/exponentiation/bigint-exp-operator-negative-throws.js.
- test262/test/language/expressions/exponentiation/bigint-toprimitive.js:
- test262/test/language/expressions/exponentiation/bigint-wrapped-values.js:
- test262/test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js:
- test262/test/language/expressions/greater-than-or-equal/bigint-and-bigint.js:
- test262/test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js:
- test262/test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js:
- test262/test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js:
- test262/test/language/expressions/greater-than-or-equal/bigint-and-number.js:
- test262/test/language/expressions/greater-than-or-equal/bigint-and-string.js:
- test262/test/language/expressions/greater-than/11.8.2-1.js:
(obj1.valueOf):
(obj2.valueOf):
- test262/test/language/expressions/greater-than/11.8.2-2.js:
(obj1.valueOf):
(obj2.toString):
- test262/test/language/expressions/greater-than/11.8.2-3.js:
(obj1.toString):
(obj2.valueOf):
- test262/test/language/expressions/greater-than/11.8.2-4.js:
(obj1.toString):
(obj2.toString):
- test262/test/language/expressions/greater-than/bigint-and-bigint.js:
- test262/test/language/expressions/greater-than/bigint-and-boolean.js:
- test262/test/language/expressions/greater-than/bigint-and-incomparable-string.js:
- test262/test/language/expressions/greater-than/bigint-and-non-finite.js:
- test262/test/language/expressions/greater-than/bigint-and-number-extremes.js:
- test262/test/language/expressions/greater-than/bigint-and-number.js:
- test262/test/language/expressions/greater-than/bigint-and-string.js:
- test262/test/language/expressions/greater-than/bigint-and-symbol.js: Added.
- test262/test/language/expressions/left-shift/bigint-and-number.js:
- test262/test/language/expressions/left-shift/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/left-shift/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b101n.Symbol.toPrimitive):
(assert.sameValue.0b101n.valueOf):
(assert.sameValue.0b101n.toString):
(valueOf):
- test262/test/language/expressions/left-shift/bigint-toprimitive.js:
- test262/test/language/expressions/left-shift/bigint-wrapped-values.js:
- test262/test/language/expressions/less-than-or-equal/11.8.3-1.js:
(obj1.valueOf):
(obj2.valueOf):
- test262/test/language/expressions/less-than-or-equal/11.8.3-2.js:
(obj1.valueOf):
(obj2.toString):
- test262/test/language/expressions/less-than-or-equal/11.8.3-3.js:
(obj1.toString):
(obj2.valueOf):
- test262/test/language/expressions/less-than-or-equal/11.8.3-4.js:
(obj1.toString):
(obj2.toString):
- test262/test/language/expressions/less-than-or-equal/11.8.3-5.js: Removed.
- test262/test/language/expressions/less-than-or-equal/bigint-and-bigint.js:
- test262/test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js:
- test262/test/language/expressions/less-than-or-equal/bigint-and-non-finite.js:
- test262/test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js:
- test262/test/language/expressions/less-than-or-equal/bigint-and-number.js:
- test262/test/language/expressions/less-than-or-equal/bigint-and-string.js:
- test262/test/language/expressions/less-than/bigint-and-bigint.js:
- test262/test/language/expressions/less-than/bigint-and-boolean.js:
- test262/test/language/expressions/less-than/bigint-and-incomparable-string.js:
- test262/test/language/expressions/less-than/bigint-and-non-finite.js:
- test262/test/language/expressions/less-than/bigint-and-number-extremes.js:
- test262/test/language/expressions/less-than/bigint-and-number.js:
- test262/test/language/expressions/less-than/bigint-and-string.js:
- test262/test/language/expressions/less-than/bigint-and-symbol.js: Added.
- test262/test/language/expressions/modulus/bigint-and-number.js:
- test262/test/language/expressions/modulus/bigint-arithmetic.js:
(testMod): Deleted.
- test262/test/language/expressions/modulus/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/modulus/bigint-modulo-zero.js:
- test262/test/language/expressions/modulus/bigint-toprimitive.js:
- test262/test/language/expressions/modulus/bigint-wrapped-values.js:
- test262/test/language/expressions/multiplication/bigint-and-number.js:
- test262/test/language/expressions/multiplication/bigint-arithmetic.js:
(testMul): Deleted.
- test262/test/language/expressions/multiplication/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/multiplication/bigint-toprimitive.js:
- test262/test/language/expressions/multiplication/bigint-wrapped-values.js:
- test262/test/language/expressions/right-shift/bigint-and-number.js:
- test262/test/language/expressions/right-shift/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/right-shift/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b101n.Symbol.toPrimitive):
(assert.sameValue.0b101n.valueOf):
(assert.sameValue.0b101n.toString):
(valueOf):
- test262/test/language/expressions/right-shift/bigint-toprimitive.js:
- test262/test/language/expressions/right-shift/bigint-wrapped-values.js:
- test262/test/language/expressions/strict-does-not-equals/bigint-and-bigint.js:
- test262/test/language/expressions/strict-does-not-equals/bigint-and-boolean.js:
- test262/test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js:
- test262/test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js:
- test262/test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js:
- test262/test/language/expressions/strict-does-not-equals/bigint-and-number.js:
- test262/test/language/expressions/strict-does-not-equals/bigint-and-object.js:
(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):
- test262/test/language/expressions/strict-does-not-equals/bigint-and-string.js:
- test262/test/language/expressions/strict-equals/bigint-and-bigint.js:
- test262/test/language/expressions/strict-equals/bigint-and-boolean.js:
- test262/test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js:
- test262/test/language/expressions/strict-equals/bigint-and-non-finite.js:
- test262/test/language/expressions/strict-equals/bigint-and-number-extremes.js:
- test262/test/language/expressions/strict-equals/bigint-and-number.js:
- test262/test/language/expressions/strict-equals/bigint-and-object.js:
(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):
- test262/test/language/expressions/strict-equals/bigint-and-string.js:
- test262/test/language/expressions/subtraction/bigint-and-number.js:
- test262/test/language/expressions/subtraction/bigint-arithmetic.js:
(testSub): Deleted.
- test262/test/language/expressions/subtraction/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/subtraction/bigint-toprimitive.js:
- test262/test/language/expressions/subtraction/bigint-wrapped-values.js:
- test262/test/language/expressions/unary-minus/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
- test262/test/language/expressions/unary-plus/bigint-throws.js:
- test262/test/language/expressions/unsigned-right-shift/bigint-and-number.js:
- test262/test/language/expressions/unsigned-right-shift/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
- test262/test/language/expressions/unsigned-right-shift/bigint-non-primitive.js:
(Symbol.toPrimitive):
(valueOf):
(toString):
(0b101n.Symbol.toPrimitive):
(0b101n.valueOf):
(0b101n.toString):
(valueOf.valueOf):
- test262/test/language/expressions/unsigned-right-shift/bigint-toprimitive.js:
- test262/test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js:
- test262/test/language/literals/numeric/numeric-followed-by-ident.js: Added.
- test262/test/language/literals/string/line-continuation-double.js: Added.
- test262/test/language/literals/string/line-continuation-single.js: Added.
- test262/test262-Revision.txt:
May 25, 2018:
- 10:29 PM Changeset in webkit [232223] by
-
- 2 edits in trunk/Source/WebCore
[Cocoa] Delete unnecessary WebCascadeList in ComplexTextController
https://bugs.webkit.org/show_bug.cgi?id=186007
Reviewed by Zalan Bujtas.
Inside ComplexTextController::collectComplexTextRuns(), we chop up text based on which fonts should be
used to render which grapheme clusters. For each grapheme cluster, we run through the font-family list
in FontCascade::fontForCombiningCharacterSequence() and find the first font that can render the cluster.
If no items can render the cluster, we construct a WebCascadeList and let CoreText try to figure out
which fonts can render which clusters.
Except there's no point, because we just determined that no font in the list can be used to render the
cluster. CoreText isn't magic; it isn't going to somehow disagree with us. WebCascadeList is just
useless code.
No new tests because there is no behavior change.
- platform/graphics/mac/ComplexTextControllerCoreText.mm:
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
(-[WebCascadeList initWithFont:character:]): Deleted.
(-[WebCascadeList count]): Deleted.
(-[WebCascadeList objectAtIndex:]): Deleted.
- 8:56 PM Changeset in webkit [232222] by
-
- 7 edits in trunk/Tools
Display detailed error logs when a script fails in EWS
https://bugs.webkit.org/show_bug.cgi?id=175696
<rdar://problem/34841885>
Reviewed by Darin Adler.
- Scripts/webkitpy/tool/bot/queueengine.py: Set output_limit to 5000 characters instead of default 500 characters.
- Scripts/webkitpy/tool/commands/abstractsequencedcommand.py: Ditto.
- Scripts/webkitpy/tool/commands/download.py: Ditto.
- Scripts/webkitpy/tool/commands/earlywarningsystem.py: Ditto.
- Scripts/webkitpy/tool/commands/queues.py: Ditto.
- Scripts/webkitpy/tool/commands/stepsequence.py: Ditto.
- 8:44 PM Changeset in webkit [232221] by
-
- 6 edits1 add in trunk
Improve the performance of Font::canRenderCombiningCharacterSequence()
https://bugs.webkit.org/show_bug.cgi?id=185933
Reviewed by Ryosuke Niwa.
PerformanceTests:
- Layout/ComplexLongUnique.html: Added.
Source/WebCore:
We don't need to create a whole CTLine just to determine whether or not a font supports rendering a grapheme cluster.
Instead, the right way to do it is just see if the font's cmap table supports every code point in the cluster.
This patch reports a 2% progression on the attached PerformanceTest.
Test: Layout/ComplexLongUnique.html
- platform/graphics/Font.cpp:
(WebCore::Font::canRenderCombiningCharacterSequence const):
- platform/graphics/Font.h:
- platform/graphics/cocoa/FontCocoa.mm:
(WebCore::provideStringAndAttributes): Deleted.
(WebCore::Font::canRenderCombiningCharacterSequence const): Deleted.
- platform/graphics/freetype/SimpleFontDataFreeType.cpp:
(WebCore::Font::canRenderCombiningCharacterSequence const): Deleted.
- 6:02 PM Changeset in webkit [232220] by
-
- 3 edits in trunk/Source/WebCore
Captions are sized incorrectly in PiP mode
https://bugs.webkit.org/show_bug.cgi?id=186005
<rdar://problem/39729718>
Reviewed by Dean Jackson.
- html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateSizes): Only sync text track bounds
when the size actually changes.
- platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm:
(WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenFrame): Call syncTextTrackBounds.
(WebCore::VideoFullscreenLayerManagerObjC::syncTextTrackBounds): Set the text track layer size
to m_videoFullscreenFrame, it is always set the size of the PiP/Fullscreen layer.
- 5:23 PM Changeset in webkit [232219] by
-
- 5 edits1 add in trunk
for-in loops should preserve and restore the TDZ stack for each of its internal loops.
https://bugs.webkit.org/show_bug.cgi?id=185995
<rdar://problem/40173142>
Reviewed by Saam Barati.
JSTests:
- stress/regress-185995.js: Added.
Source/JavaScriptCore:
This is because there's no guarantee that any of the loop bodies will be
executed. Hence, there's no guarantee that the TDZ variables will have been
initialized after each loop body.
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::preserveTDZStack):
(JSC::BytecodeGenerator::restoreTDZStack):
- bytecompiler/BytecodeGenerator.h:
- bytecompiler/NodesCodegen.cpp:
(JSC::ForInNode::emitBytecode):
- 5:13 PM Changeset in webkit [232218] by
-
- 10 edits in trunk/Source
Setting drawsBackground to YES on a WKView doesn't take effect immediately
https://bugs.webkit.org/show_bug.cgi?id=185885
rdar://problem/39706506
Reviewed by Simon Fraser.
Source/WebCore:
- page/Frame.cpp:
(WebCore::Frame::createView): Always call updateBackgroundRecursively, it handles
invalid colors correctly already.
- page/FrameView.cpp:
(WebCore::FrameView::setTransparent): Call setNeedsLayout() since base background color
and transparent is used to update layers.
(WebCore::FrameView::setBaseBackgroundColor): Ditto.
(WebCore::FrameView::updateBackgroundRecursively): Schedule layout if needed.
- page/FrameView.h:
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::viewHasTransparentBackground const): Use baseBackgroundColor
instead of hardcoding white.
(WebCore::RenderLayerCompositor::rootBackgroundTransparencyChanged): Fixed incorrect changed logging.
Source/WebKit:
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]): Removed setBackgroundExtendsBeyondPage(true)
since it is now the default.
- UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setDrawsBackground): Make sure updateLayer gets called on the web view
by calling setNeedsDisplay:YES.
(WebKit::WebViewImpl::setBackgroundColor): Ditto.
(WebKit::WebViewImpl::updateLayer): Removed dead code.
- UIProcess/WebPageProxy.h: Make m_backgroundExtendsBeyondPage default to true. WebKit was
always turning this on during WKWebView initializtion, which would cause the scroll
shadow layer to be created, flash black because of no background, then destroyed soon
after once WebKit's message to turn it on got delivered.
- WebProcess/WebPage/WebPage.cpp:
(WebPage::WebPage): Call setBackgroundExtendsBeyondPage earlier to avoid creating the scroll
shadow layer, since backgroundShouldExtendBeyondPage defautls to false in WebCore for WK1.
(WebKit::WebPage::setDrawsBackground): Use updateBackgroundRecursively to propagate the
correct base background color.
- 5:06 PM Changeset in webkit [232217] by
-
- 13 edits19 adds1 delete in trunk
Migrate From-Origin to Cross-Origin-Resource-Policy
https://bugs.webkit.org/show_bug.cgi?id=185840
Reviewed by Chris Dumez.
Source/WebCore:
Tests: http/wpt/cross-origin-resource-policy/fetch-in-iframe.html
http/wpt/cross-origin-resource-policy/fetch.html
http/wpt/cross-origin-resource-policy/iframe-loads.html
http/wpt/cross-origin-resource-policy/image-loads.html
http/wpt/cross-origin-resource-policy/script-loads.html
- platform/network/HTTPHeaderNames.in:
- platform/network/HTTPParsers.cpp:
(WebCore::parseCrossOriginResourcePolicyHeader):
- platform/network/HTTPParsers.h:
Source/WebKit:
Do Cross-Origin-Resource-Policy (CORP) checks in NetworkLoadChecker instead of NetworkResourceLoader directly.
Make sure CORP only applies to no-cors loads.
Remove ancestor checks and only consider the document origin making the load.
This means that in case of cross-origin redirection to same-origin, the redirection will be CORP-checked,
the final response will not be CORP-checked but will be opaque.
- NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::validateCrossOriginResourcePolicyPolicy):
(WebKit::NetworkLoadChecker::validateResponse):
- NetworkProcess/NetworkLoadChecker.h:
- NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
(WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry):
- NetworkProcess/NetworkResourceLoader.h:
- WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
Send ancestor information for navigation loads only.
LayoutTests:
Migrating From-Origin tests to Cross-Origin-Resource-Policy tests.
Given the scope of the header is reduced to no-cors and no ancestor checks,
We cover the new header with fetch/image/script loads.
- TestExpectations:
- http/tests/from-origin: Removed.
- http/wpt/cross-origin-resource-policy/fetch-expected.txt: Added.
- http/wpt/cross-origin-resource-policy/fetch-in-iframe-expected.txt: Added.
- http/wpt/cross-origin-resource-policy/fetch-in-iframe.html: Added.
- http/wpt/cross-origin-resource-policy/fetch.html: Added.
- http/wpt/cross-origin-resource-policy/iframe-loads-expected.txt: Added.
- http/wpt/cross-origin-resource-policy/iframe-loads.html: Added.
- http/wpt/cross-origin-resource-policy/image-loads-expected.txt: Added.
- http/wpt/cross-origin-resource-policy/image-loads.html: Added.
- http/wpt/cross-origin-resource-policy/resources/green.png: Added.
- http/wpt/cross-origin-resource-policy/resources/hello.py: Added.
- http/wpt/cross-origin-resource-policy/resources/iframe.py: Added.
- http/wpt/cross-origin-resource-policy/resources/iframeFetch.html: Added.
- http/wpt/cross-origin-resource-policy/resources/image.py: Added.
- http/wpt/cross-origin-resource-policy/resources/redirect.py: Added.
- http/wpt/cross-origin-resource-policy/resources/script.py: Added.
- http/wpt/cross-origin-resource-policy/script-loads-expected.txt: Added.
- http/wpt/cross-origin-resource-policy/script-loads.html: Added.
- platform/wk2/TestExpectations:
- 4:48 PM Changeset in webkit [232216] by
-
- 5 edits in trunk/Source
NavigationAction should not hold a strong reference to a Document
https://bugs.webkit.org/show_bug.cgi?id=185712
<rdar://problem/40320916>
Reviewed by Brent Fulgham.
Source/WebCore:
Have NavigationAction store all the relevant details callers need to know about the document
that initiated the navigation in an independent data structure, called NavigationAction::Requester,
as opposed to holding a RefPtr to the document itself. The benefit of this approach is that it
is a step towards ensuring that NavigationAction does not keep the document alive after navigating
to a new document given that DocumentLoader stores the NavigationAction for the last navigation.
- loader/NavigationAction.cpp:
(WebCore::NavigationAction::Requester::Requester): Track all relevant details of the document that
requested this navigation that are needed to support WebKit API/SPI. We hold the SecurityOrigin in
a RefPtr to avoid the need to explicitly define a copy constructor and copy-assignment constructor
because Requester needs to be copyable as NavigationAction, which owns a Requester, is copyable.
(WebCore::shouldTreatAsSameOriginNavigation): Fix some style nits.
(WebCore::NavigationAction::NavigationAction): Instantiate a Requester from the specified document.
- loader/NavigationAction.h:
(WebCore::NavigationAction::Requester::url const): Added.
(WebCore::NavigationAction::Requester::securityOrigin const): Added.
(WebCore::NavigationAction::Requester::pageID const): Added.
(WebCore::NavigationAction::Requester::frameID const): Added.
(WebCore::NavigationAction::requester const): Returns details about the document that requested
this navigation, if applicable.
(WebCore::NavigationAction::isEmpty const): Update criterion for being empty to consider the
requester.
(WebCore::NavigationAction::setOpener): Extracted out the datatype of the parameter into a
type alias to avoid duplication and updated this code to use the alias.
(WebCore::NavigationAction::opener const): Ditto.
(WebCore::NavigationAction::sourceDocument const): Deleted.
Source/WebKit:
Update code to make use of NavigationAction::requester().
- WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
- 4:45 PM Changeset in webkit [232215] by
-
- 2 edits in trunk/Source/JavaScriptCore
MachineContext's instructionPointer() should handle null PCs correctly.
https://bugs.webkit.org/show_bug.cgi?id=186004
<rdar://problem/40570067>
Reviewed by Saam Barati.
instructionPointer() returns a MacroAssemblerCodePtr<CFunctionPtrTag>. However,
MacroAssemblerCodePtr's constructor does not accept a null pointer value and will
assert accordingly with a debug ASSERT. This is inconsequential for release
builds, but to avoid this assertion failure, we should check for a null PC and
return MacroAssemblerCodePtr<CFunctionPtrTag>(nullptr) instead (which uses the
MacroAssemblerCodePtr(std::nullptr_t) version of the constructor instead).
Alternatively, we can change all of MacroAssemblerCodePtr's constructors to check
for null pointers, but I rather not do that yet. In general,
MacroAssemblerCodePtrs are constructed with non-null pointers, and I prefer to
leave it that way for now.
Note: this assertion failure only manifests when we have signal traps enabled,
and encounter a null pointer deref.
- runtime/MachineContext.h:
(JSC::MachineContext::instructionPointer):
- 4:41 PM Changeset in webkit [232214] by
-
- 2 edits in trunk/Tools
test-webkitpy messages logged using main logger are not displayed
https://bugs.webkit.org/show_bug.cgi?id=185823
Rubber-stamped by Aakash Jain.
Configure the logger for main so that messages that are logged before it parses its
command line arguments are printed to standard error.
Currently test-webkitpy creates a named logger (main) for its logging. However it does
not configure a stream to use for printing until after it parses its command line arguments
via webkitpy.test.printer.Printer.configure(). Messages logged until then are never written
to the console. We explicitly configure the main logger instead of calling webkitpy.test.printer.Printer.configure()
earlier because the latter both configures a stream and filters logged messages based on
the specified verbosity. Logged messaged from code in main should not be subject to
such filtering. So, we explicitly configure the main logger.
- Scripts/webkitpy/test/main.py:
(main):
- 4:27 PM Changeset in webkit [232213] by
-
- 2 edits in trunk/LayoutTests
fast/text/user-installed-fonts/shadow-family.html and fast/text/user-installed-fonts/shadow-postscript-family.html are flaky
https://bugs.webkit.org/show_bug.cgi?id=185994
Unreviewed test gardening.
Patch by David Fenton <david_fenton@apple.com> on 2018-05-25
- platform/mac-wk2/TestExpectations:
- 4:26 PM Changeset in webkit [232212] by
-
- 2 edits in trunk/Source/WTF
JavaScriptCore: Disable 32-bit JIT on Windows
https://bugs.webkit.org/show_bug.cgi?id=185989
Reviewed by Saam Barati.
- wtf/Platform.h:
- 4:18 PM Changeset in webkit [232211] by
-
- 10 edits in trunk/Source/JavaScriptCore
Enforce invariant that GetterSetter objects are invariant.
https://bugs.webkit.org/show_bug.cgi?id=185968
<rdar://problem/40541416>
Reviewed by Saam Barati.
The code already assumes the invariant that GetterSetter objects are immutable.
For example, the use of @tryGetById in builtins expect this invariant to be true.
The existing code mostly enforces this except for one case: JSObject's
validateAndApplyPropertyDescriptor, where it will re-use the same GetterSetter
object.
This patch enforces this invariant by removing the setGetter and setSetter methods
of GetterSetter, and requiring the getter/setter callback functions to be
specified at construction time.
- jit/JITOperations.cpp:
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- runtime/GetterSetter.cpp:
(JSC::GetterSetter::withGetter): Deleted.
(JSC::GetterSetter::withSetter): Deleted.
- runtime/GetterSetter.h:
- runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
- runtime/JSObject.cpp:
(JSC::JSObject::putIndexedDescriptor):
(JSC::JSObject::putDirectNativeIntrinsicGetter):
(JSC::putDescriptor):
(JSC::validateAndApplyPropertyDescriptor):
- runtime/JSTypedArrayViewPrototype.cpp:
(JSC::JSTypedArrayViewPrototype::finishCreation):
- runtime/Lookup.cpp:
(JSC::reifyStaticAccessor):
- runtime/PropertyDescriptor.cpp:
(JSC::PropertyDescriptor::slowGetterSetter):
- 3:47 PM Changeset in webkit [232210] by
-
- 8 edits in trunk
Make JSC have a mini mode that kicks in when the JIT is disabled
https://bugs.webkit.org/show_bug.cgi?id=185931
Reviewed by Mark Lam.
Source/JavaScriptCore:
This patch makes JSC have a mini VM mode. This currently only kicks in
when the process can't JIT. Mini VM now means a few things:
- We always use a 1.27x heap growth factor. This number was the best tradeoff between memory use progression and time regression in run-testmem. We may want to tune this more in the future as we make other mini VM changes.
- We always sweep synchronously.
- We disable generational GC.
I'm going to continue to extend what mini VM mode means in future changes.
This patch is a 50% memory progression and an ~8-9% time regression
on run-testmem when running in mini VM mode with the JIT disabled.
- heap/Heap.cpp:
(JSC::Heap::collectNow):
(JSC::Heap::finalize):
(JSC::Heap::useGenerationalGC):
(JSC::Heap::shouldSweepSynchronously):
(JSC::Heap::shouldDoFullCollection):
- heap/Heap.h:
- runtime/Options.h:
- runtime/VM.cpp:
(JSC::VM::isInMiniMode):
- runtime/VM.h:
Tools:
This renames a variable for clarity.
- Scripts/run-testmem:
- 2:53 PM Changeset in webkit [232209] by
-
- 2 edits in trunk/Source/WebKit
Ensure that the Web Content process doesn't sleep during initialization
https://bugs.webkit.org/show_bug.cgi?id=185975
<rdar://problem/40548159>
Reviewed by Geoffrey Garen.
WebProcessPool::warmInitialProcess isn't worth much (or at least, as much
as it could be) if the Web Content process goes to sleep in the middle
of initializeWebProcess.
Keep the Web Content process alive until it has handled all messages
sent from WebProcessPool::initializeNewWebProcess.
This is a significant speedup on some benchmarks I've been running
that involve prewarming a process long before any content is loaded.
- UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess):
- 2:53 PM Changeset in webkit [232208] by
-
- 2 edits in trunk/Source/WebCore
Fullscreen element can be clipped by ancestor.
https://bugs.webkit.org/show_bug.cgi?id=185980
rdar://problem/40320006
Patch by Jeremy Jones <jeremyj@apple.com> on 2018-05-25
Reviewed by Jer Noble.
Adds style to fullscreen css to prevent the fullscreen element from being clipped by an ancestor element.
- css/fullscreen.css:
(:-webkit-full-screen-ancestor:not(iframe)):
- 2:49 PM Changeset in webkit [232207] by
-
- 2 edits in trunk/Source/WebCore
Use correct AVKit delegate for picture in picture failure.
https://bugs.webkit.org/show_bug.cgi?id=185981
rdar://problem/40549652
Patch by Jeremy Jones <jeremyj@apple.com> on 2018-05-25
Reviewed by Eric Carlson.
No new tests since we don't have a way to simulate picture-in-picture failure.
Use the new name for this delegate callback.
- platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerViewControllerDelegate playerViewController:failedToStartPictureInPictureWithError:]):
(-[WebAVPlayerViewControllerDelegate playerViewControllerFailedToStartPictureInPicture:withError:]): Deleted.
- 2:42 PM Changeset in webkit [232206] by
-
- 4 edits in trunk/Source/WebCore
iBooks: text can disappear/flash during finger drag highlight
https://bugs.webkit.org/show_bug.cgi?id=185993
<rdar://problem/34026943>
Reviewed by Simon Fraser.
Reuse existing tiles when override rect is fully covered by the active grid.
Also, recover dropped tiles if override rect forces us to create new ones.
Unable to create a reproducible test case.
- platform/ios/LegacyTileCache.h:
- platform/ios/LegacyTileCache.mm:
(WebCore::LegacyTileCache::setOverrideVisibleRect):
- platform/ios/LegacyTileLayer.mm:
(-[LegacyTileHostLayer renderInContext:]):
- 2:42 PM Changeset in webkit [232205] by
-
- 7 edits in branches/safari-606.1.17.30-branch/Source
Versioning.
- 2:41 PM Changeset in webkit [232204] by
-
- 1 copy in tags/Safari-606.1.17.30.3
Tag Safari-606.1.17.30.3.
- 2:35 PM Changeset in webkit [232203] by
-
- 4 edits in trunk/Source/WebKit
WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback() unexpectedly constructs a process pool
https://bugs.webkit.org/show_bug.cgi?id=185992
Reviewed by Geoffrey Garen.
Update enableResourceLoadStatisticsAndSetTestingCallback() to pass the right parameter to processPools()
to avoid constructing a process pool when none exist. Also drop the 'resourceLoadStatisticsEnabled'
flag on the WebProcessPool and have it query its data store instead to know if the feature is enabled.
- UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::setResourceLoadStatisticsEnabled):
- UIProcess/WebProcessPool.h:
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
- 2:35 PM Changeset in webkit [232202] by
-
- 2 edits in trunk/Source/WebCore
Encode ISOWebVTTCue "strings" when logging
https://bugs.webkit.org/show_bug.cgi?id=185991
<rdar://problem/40563902>
Reviewed by Jer Noble.
- platform/graphics/iso/ISOVTTCue.cpp:
(WebCore::ISOWebVTTCue::toJSONString const): Use encodeWithURLEscapeSequences for all Strings
taken from ISO boxes.
- 2:27 PM Changeset in webkit [232201] by
-
- 23 edits in trunk/Source
Drop support for NSURLCache in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=185990
Reviewed by Geoffrey Garen.
Drop support for NSURLCache in WebKit2 now that the WebKit network cache is stable.
Source/WebCore/PAL:
- pal/spi/cf/CFNetworkSPI.h:
Source/WebKit:
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::setCacheModel):
- NetworkProcess/NetworkProcess.h:
- NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
- NetworkProcess/NetworkProcessCreationParameters.h:
- NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
(WebKit::NetworkProcess::clearDiskCache):
(WebKit::NetworkProcess::platformSetURLCacheSize): Deleted.
(WebKit::clearNSURLCache): Deleted.
- NetworkProcess/cocoa/NetworkSessionCocoa.h:
- NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
(): Deleted.
(WebKit::NetworkSessionCocoa::setUsesNetworkCache): Deleted.
- NetworkProcess/curl/NetworkProcessCurl.cpp:
(WebKit::NetworkProcess::platformSetURLCacheSize): Deleted.
- NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::platformSetURLCacheSize): Deleted.
- UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
(WebKit::WebProcessPool::isNetworkCacheEnabled): Deleted.
- UIProcess/WebProcessPool.h:
- WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::suggestedFilenameForResourceWithURL const):
(WebKit::WebFrame::mimeTypeForResourceWithURL const):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::getResourceDataFromFrame):
(WebKit::WebPage::hasLocalDataForURL):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/gtk/WebPageGtk.cpp:
(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.
- WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::accessibilityRemoteObject):
(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::cachedResponseForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.
- WebProcess/WebPage/win/WebPageWin.cpp:
(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.
- WebProcess/WebPage/wpe/WebPageWPE.cpp:
(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
- 2:18 PM Changeset in webkit [232200] by
-
- 2 edits in trunk/Source/WebKit
Fix internal iOS builds after r232198
https://bugs.webkit.org/show_bug.cgi?id=185986
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::sendTapHighlightForNodeIfNecessary):
- 2:02 PM Changeset in webkit [232199] by
-
- 3 edits in trunk/LayoutTests
Unreviewed, rebaseline two fast/forms/ios/ipad tests.
- fast/forms/ios/ipad/select-form-run-twice-expected.txt:
- fast/forms/ios/ipad/unfocus-inside-fixed-hittest-expected.txt:
- 1:39 PM Changeset in webkit [232198] by
-
- 52 edits in trunk
URL::host should return a StringView to reduce allocations
https://bugs.webkit.org/show_bug.cgi?id=185986
Reviewed by Geoff Garen.
Source/WebCore:
No change in behaviour. Just fewer allocations.
- Modules/plugins/YouTubePluginReplacement.cpp:
(WebCore::isYouTubeURL):
(WebCore::processAndCreateYouTubeURL):
- Modules/websockets/WebSocketHandshake.cpp:
(WebCore::hostName):
(WebCore::WebSocketHandshake::host const):
- contentextensions/ContentExtension.cpp:
(WebCore::ContentExtensions::ContentExtension::populateConditionCacheIfNeeded):
- html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::parseAttribute):
- html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaSessionTitle const):
(WebCore::needsSeekingSupportQuirk):
- html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::restartSimilarPlugIns):
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot):
(WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn):
- html/ImageDocument.cpp:
(WebCore::ImageDocument::finishedParsing):
- html/URLUtils.h:
(WebCore::URLUtils<T>::hostname const):
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::setFirstPartyForCookies):
- loader/LinkLoader.cpp:
(WebCore::LinkLoader::loadLink):
- loader/ResourceLoadStatistics.cpp:
(WebCore::ResourceLoadStatistics::primaryDomain):
- loader/mac/LoaderNSURLExtras.mm:
(suggestedFilenameWithMIMEType):
- page/Chrome.cpp:
(WebCore::Chrome::mouseDidMoveOverElement):
- page/Location.cpp:
(WebCore::Location::hostname const):
- page/Page.cpp:
(WebCore::Page::mainFrameLoadStarted):
- page/PerformanceMonitor.cpp:
(WebCore::reportPageOverPostLoadResourceThreshold):
- page/SecurityOrigin.cpp:
(WebCore::isLoopbackIPAddress):
(WebCore::shouldTreatAsPotentiallyTrustworthy):
(WebCore::SecurityOrigin::isLocalHostOrLoopbackIPAddress):
- page/SecurityOrigin.h:
- page/SecurityOriginData.h:
(WebCore::SecurityOriginData::fromURL):
- page/UserContentURLPattern.cpp:
(WebCore::UserContentURLPattern::matchesHost const):
- page/csp/ContentSecurityPolicySource.cpp:
(WebCore::ContentSecurityPolicySource::hostMatches const):
- platform/PublicSuffix.h:
- platform/URL.cpp:
(WebCore::URL::host const):
(WebCore::URL::hostAndPort const):
(WebCore::URL::isMatchingDomain const):
- platform/URL.h:
- platform/mac/SSLKeyGeneratorMac.mm:
(WebCore::signedPublicKeyAndChallengeString):
- platform/network/ResourceRequestBase.h:
(WebCore::registrableDomainsAreEqual):
- platform/network/cf/NetworkStorageSessionCFNet.cpp:
(WebCore::getPartitioningDomain):
- platform/network/cf/SocketStreamHandleImplCFNet.cpp:
(WebCore::SocketStreamHandleImpl::createStreams):
- workers/WorkerLocation.cpp:
(WebCore::WorkerLocation::hostname const):
- workers/service/server/SWServer.cpp:
(WebCore::SWServer::performGetOriginsWithRegistrationsCallbacks):
Source/WebKit:
- NetworkProcess/NetworkProcess.cpp:
(WebKit::fetchDiskCacheEntries):
- NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::areFrameAncestorsSameSite):
- NetworkProcess/mac/NetworkProcessMac.mm:
(WebKit::overrideSystemProxies):
- Shared/API/APIURL.h:
(API::URL::host const):
- UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):
- UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
- WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::pluginDidReceiveUserInteraction):
- WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::populatePluginCache):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::needsHiddenContentEditableQuirk):
(WebKit::needsPlainTextQuirk):
(WebKit::WebPage::determinePrimarySnapshottedPlugIn):
Source/WebKitLegacy:
- WebCoreSupport/WebResourceLoadScheduler.cpp:
(WebResourceLoadScheduler::hostForURL):
Tools:
- TestWebKitAPI/Tests/WebCore/URL.cpp:
(TestWebKitAPI::TEST_F):
- TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::eq):
- TestWebKitAPI/Tests/mac/SSLKeyGenerator.mm:
(TestWebKitAPI::SSLKeyGeneratorTest::TearDown):
- 12:16 PM Changeset in webkit [232197] by
-
- 1 copy in releases/WPE WebKit/webkit-2.21.2
WPE WebKit release 2.21.2
- 12:14 PM Changeset in webkit [232196] by
-
- 4 edits in trunk
Unreviewed. Update OptionsWPE.cmake and NEWS for 2.21.2 release.
- Source/cmake/OptionsWPE.cmake: Bump version numbers.
- wpe/NEWS: Add release notes for the 2.21.2 release.
- 12:12 PM Changeset in webkit [232195] by
-
- 2 edits in trunk/Tools
Minor improvements to wpt exporter.
https://bugs.webkit.org/show_bug.cgi?id=185978
Reviewed by Youenn Fablet.
- Scripts/webkitpy/w3c/test_exporter.py:
(TestExporter.push_to_wpt_fork): Update call to create_upload_remote().
(TestExporter.make_pull_request): Improve the description of the created PR.
(TestExporter.create_upload_remote): Always update the remote to override any obsolete state.
- 12:10 PM Changeset in webkit [232194] by
-
- 2 edits in trunk/Source/WebCore
Need to provide a way to feature detect support for system preview
https://bugs.webkit.org/show_bug.cgi?id=185970
<rdar://problem/40538321>
Reviewed by Sam Weinig.
Update the supports function in the DOMTokenList that HTMLAnchorElement
produces for relList to return true for the system preview token.
Tested internally.
- html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::relList const):
- 12:05 PM Changeset in webkit [232193] by
-
- 4 edits15 adds in trunk
Have a memory test where we can validate JSCs mini memory mode
https://bugs.webkit.org/show_bug.cgi?id=185932
Reviewed by Mark Lam.
PerformanceTests:
We add a directory here with the contents of the testmem benchmark.
To run it, useTools/Scripts/run-testmem. To add new tests in the future,
you just need to add JS files to this directory.
- testmem: Added.
- testmem/air.js: Added.
- testmem/base64.js: Added.
- testmem/basic.js: Added.
- testmem/box2d.js: Added.
- testmem/crypto-md5.js: Added.
- testmem/date-format-tofte.js: Added.
- testmem/earley-boyer.js: Added.
- testmem/hash-map.js: Added.
- testmem/regex-dna.js: Added.
- testmem/splay.js: Added.
- testmem/tagcloud.js: Added.
Source/JavaScriptCore:
This patch adds the testmem CLI. It takes as input a file to run
and the number of iterations to run it (by default it runs it
20 times). Each iteration runs in a new JSContext. Each JSContext
belongs to a VM that is created once. When finished, the CLI dumps
out the peak memory usage of the process, the memory usage at the end
of running all the iterations of the process, and the total time it
took to run all the iterations.
- JavaScriptCore.xcodeproj/project.pbxproj:
- testmem: Added.
- testmem/testmem.mm: Added.
(description):
(Footprint::now):
(main):
Tools:
This patch adds the run-testmem script. This runs the new testmem
CLI against the contents in the testmem benchmark. The contents of testmem
contain tests from ARES-6, Sunspider, Octane, and JetStream.
One iteration of the benchmark comprises of running each testmem test for
a certain number of iterations. We collect the peak memory usage, the memory
usage after running all the iterations, and the time it takes to run all the
iterations. We then run the entire benchmark 3 times over. For each test, we
compute the arithmetic mean over each iteration for time, peak memory, and
end memory. The benchmark then computes a time score and memory score.
peak memory score = geomean({peak memory of each individual test})
end memory score = geomean({end memory of each individual test})
memory score = geomean({peak memory score, end memory score})
time score = geomean({time score of each individual test})
We want the memory score to weigh improvements to peak memory usage and
memory usage at the end equally.
We plan to tune this benchmark in JSC's mini mode by improving the memory
score while ensuring the time score is not more than 10-15% regressed.
- Scripts/run-testmem: Added.
- 11:40 AM Changeset in webkit [232192] by
-
- 10 edits in trunk/Source
Minor ApplicationCacheStorage clean up
https://bugs.webkit.org/show_bug.cgi?id=185984
Reviewed by Youenn Fablet.
Source/WebCore:
- loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::ApplicationCacheStorage::getManifestURLs):
(WebCore::ApplicationCacheStorage::deleteCacheGroup):
(WebCore::ApplicationCacheStorage::originsWithCache):
(WebCore::ApplicationCacheStorage::deleteAllCaches):
(WebCore::ApplicationCacheStorage::deleteCacheForOrigin):
(WebCore::ApplicationCacheStorage::ApplicationCacheStorage):
(WebCore::ApplicationCacheStorage::cacheDirectory const): Deleted.
(WebCore::ApplicationCacheStorage::cacheGroupSize): Deleted.
(WebCore::ApplicationCacheStorage::getOriginsWithCache): Deleted.
(WebCore::ApplicationCacheStorage::create): Deleted.
- loader/appcache/ApplicationCacheStorage.h:
(WebCore::ApplicationCacheStorage::create):
Source/WebKit:
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataAndApply):
- WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageCopyOriginsWithApplicationCache):
Source/WebKitLegacy/mac:
- WebCoreSupport/WebApplicationCache.mm:
(+[WebApplicationCache originsWithCache]):
Source/WebKitLegacy/win:
- WebApplicationCache.cpp:
(WebApplicationCache::originsWithCache):
- 11:35 AM Changeset in webkit [232191] by
-
- 4 edits in trunk
[WKHTTPCookieStore getAllCookies] returns inconsistent creation time
https://bugs.webkit.org/show_bug.cgi?id=185041
<rdar://problem/34684214>
Reviewed by Geoffrey Garen.
Source/WebCore:
Set creationtime property when creating Cookie object to keep consistency after conversion.
New API test: WebKit.WKHTTPCookieStoreCreationTime.
- platform/network/cocoa/CookieCocoa.mm:
(WebCore::Cookie::operator NSHTTPCookie * const):
Tools:
Add API test coverage.
- TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:
(TEST):
- 10:23 AM Changeset in webkit [232190] by
-
- 2 edits in trunk/Source/WebKit
Avoid triggering network cache speculative revalidation for loads allowing expired content
https://bugs.webkit.org/show_bug.cgi?id=185985
Reviewed by Antti Koivisto.
Avoid triggering network cache speculative revalidation for loads allowing expired content
(e.g. history loads, restoring pages after crash or safari relaunch). This causes us to do
unnecessary revalidations, it is both wasteful and bad for performance.
- NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::retrieve):
- 9:25 AM Changeset in webkit [232189] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: Popover dismissed while attempting to move cursor inside
https://bugs.webkit.org/show_bug.cgi?id=185741
<rdar://problem/40340938>
Reviewed by Joseph Pecoraro.
Hovering a token within the bounds of the current popover should not
show a new popover. This prevents the popover from being dismissed when
the cursor passes over a token under the transparent portion of the
popover frame.
- UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._showPopover):
- 7:33 AM Changeset in webkit [232188] by
-
- 9 edits in trunk/Source/WebCore
[LFC] Implement border and padding computation
https://bugs.webkit.org/show_bug.cgi?id=185972
Reviewed by Antti Koivisto.
This patch also removes redundant Display::Box methods and adds a lightweight Edge struct.
(Since padding is optional, if during layout we mistakenly try to access paddingTop/Left/Bottom/Right, Display::Box will assert!)
- layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeBorderAndPadding const):
- layout/FormattingContext.h:
- layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedBorder):
(WebCore::Layout::FormattingContext::Geometry::computedPadding):
- layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::layout const):
- layout/displaytree/DisplayBox.cpp:
(WebCore::Display::Box::marginBox const):
(WebCore::Display::Box::paddingBox const):
(WebCore::Display::Box::contentBox const):
- layout/displaytree/DisplayBox.h:
(WebCore::Display::Box::Edges::Edges):
(WebCore::Display::Box::setHasValidPosition):
(WebCore::Display::Box::setWidth):
(WebCore::Display::Box::setHeight):
(WebCore::Display::Box::setMargin):
(WebCore::Display::Box::setBorder):
(WebCore::Display::Box::setPadding):
(WebCore::Display::Box::marginTop const):
(WebCore::Display::Box::marginLeft const):
(WebCore::Display::Box::marginBottom const):
(WebCore::Display::Box::marginRight const):
(WebCore::Display::Box::paddingTop const):
(WebCore::Display::Box::paddingLeft const):
(WebCore::Display::Box::paddingBottom const):
(WebCore::Display::Box::paddingRight const):
(WebCore::Display::Box::borderTop const):
(WebCore::Display::Box::borderLeft const):
(WebCore::Display::Box::borderBottom const):
(WebCore::Display::Box::borderRight const):
(WebCore::Display::Box::invalidateSize): Deleted.
(WebCore::Display::Box::setHasValidSize): Deleted.
(WebCore::Display::Box::setHasValidGeometry): Deleted.
(WebCore::Display::Box::setRect): Deleted.
(WebCore::Display::Box::setSize): Deleted.
- layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::isPaddingEnabled const):
- layout/layouttree/LayoutBox.h:
- 7:19 AM Changeset in webkit [232187] by
-
- 15 edits in trunk/Source
Fix issues with -dealloc methods found by clang static analyzer
<https://webkit.org/b/185887>
Reviewed by Joseph Pecoraro.
Source/JavaScriptCore:
- API/JSValue.mm:
(-[JSValue dealloc]):
(-[JSValue description]):
- Move method implementations from (Internal) category to the main category since these are public API. This fixes the false positive warning about a missing -dealloc method.
Source/WebCore:
- platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController dealloc]): Release
_minTimingand
_maxTimingto fix leaks.
- platform/ios/WebBackgroundTaskController.mm:
(-[WebBackgroundTaskController dealloc]): Release
_backgroundTaskStartBlockand_backgroundTaskEndBlockto fix
leaks.
- platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderRegistrationInfoList dealloc]): Release
_teamDatato fix leak.
Source/WebKit:
- UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Drive-by fix
to use
copyformimeTypeproperty.
(-[_WKPreviewControllerDataSource initWithMIMEType:]): Drive-by
fix to useinstancetypeinstead ofid. Use -copy for
mimeTypeargument to match property definition.
(-[_WKPreviewControllerDataSource dealloc]): Add. Release
_completionHandlerand_mimeTypeto fix leaks.
- UIProcess/ios/WKPasswordView.mm:
(-[WKPasswordView dealloc]): Add. Release
_userDidEnterPasswordto fix leak.
- UIProcess/ios/fullscreen/WKFullScreenViewController.h:
Drive-by clean-up to make
locationpropertycopyinstead of
retain.
- UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
(-[WKFullScreenViewController dealloc]): Release
_targetand
_locationto fix leaks.
- UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullscreenAnimationController dealloc]): Add. Release
_viewControllerto fix leak.
- UIProcess/ios/fullscreen/WKFullscreenStackView.mm:
(@property secondaryMaterialOverlayView): Mark explicitly as
assignsince this isn't a retained variable.
(@property secondaryMaterialOverlayViewConstraints): Mark
explicitly asretainsince there is nothing to keep this
object alive.
(+[WKFullscreenStackView secondaryMaterialOverlayView]): Fix
leak by autoreleasing the return value.
(-[WKFullscreenStackView dealloc]): Release retained instance
variables to fix leaks. Note that_stackViewand
_visualEffectVieware internally retained despite their
@property declarations.
(-[WKFullscreenStackView setTargetViewForSecondaryMaterialOverlay:]):
Retain @property targetViewForSecondaryMaterialOverlay to match
its declaration.
Source/WebKitLegacy/mac:
- WebView/WebView.mm:
(-[WebUITextIndicatorData dealloc]):
- Move method implementation from (WebUITextIndicatorInternal) category to the main category since this is public API. This fixes the false positive warning about a missing -dealloc method.
- 6:47 AM Changeset in webkit [232186] by
-
- 2 edits in trunk/Source/WebKit
[Web Animations] Use DEFAULT_EXPERIMENTAL_FEATURES_ENABLED for Web Animations experimental features
https://bugs.webkit.org/show_bug.cgi?id=185919
Reviewed by Dean Jackson.
- Shared/WebPreferences.yaml:
- 6:45 AM Changeset in webkit [232185] by
-
- 12 edits3 adds2 deletes in trunk
[Web Animations] WebAnimation objects never get destroyed
https://bugs.webkit.org/show_bug.cgi?id=185917
<rdar://problem/39539371>
Reviewed by Dean Jackson and Antti Koivisto.
Source/WebCore:
The AnimationTimeline class keeps references to WebAnimation objects organized in various ways. First, there
are three main maps across which all animations are stored, one for non-subclass WebAnimation objects
(m_elementToAnimationsMap), one for CSSSAnimation objects (m_elementToCSSAnimationsMap) and one for CSSTranstion
objects (m_elementToCSSTransitionsMap). On top of that, we also keep a map to access CSSAnimation objects for
a given element by CSS animation name (m_elementToCSSAnimationByName) and another map to access CSSTransition
objects for a given element by CSS property (m_elementToCSSTransitionByCSSPropertyID).
None of the RefPtr<WebAnimation> stored in these maps would get cleared when the document would get torn down,
which would also prevent the AnimationTimeline (and its DocumentTimeline subclass) from being destroyed.
We now ensure that element and document tear-down correctly removes animations and clears those maps, which
in turn allows the DocumentTimeline to be destroyed, fixing the significant memory leak introduced by Web Animations
so far.
Finally, we change the collection type for those maps to be ListHashRef instead of Vector to guarantee we only
add an animation once per collection due to changes in how setEffect() and setTimeline() operate.
Test: animations/leak-document-with-css-animation.html
- animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::~AnimationTimeline): There is no need to clear those tables as they'll need to be empty
for the AnimationTimeline to even be destroyed.
(WebCore::AnimationTimeline::relevantMapForAnimation): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::animationWasAddedToElement): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::animationWasRemovedFromElement): When an animation is removed from an element, ensure that
references to this animation stored in the m_elementToCSSAnimationByName and m_elementToCSSTransitionByCSSPropertyID maps
are cleared.
(WebCore::AnimationTimeline::animationsForElement const): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::removeAnimationsForElement): Instead of just calling cancel() on all known declarative animations
(this method used to be called cancelDeclarativeAnimationsForElement()), we now set the effect of known animations, declarative
or not, for the provided element which will in turn call animationWasRemovedFromElement() and remove the animation from all
maps that might keep a reference to it.
(WebCore::AnimationTimeline::updateCSSTransitionsForElement): Replace call to removeDeclarativeAnimation() with a simple call
to removeAnimation() which will remove references for this animation from the relevant maps.
(WebCore::AnimationTimeline::cancelOrRemoveDeclarativeAnimation): Ditto.
(WebCore::AnimationTimeline::cancelDeclarativeAnimationsForElement): Deleted.
(WebCore::AnimationTimeline::removeDeclarativeAnimation): Deleted.
- animation/AnimationTimeline.h:
(WebCore::AnimationTimeline::elementToAnimationsMap): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::elementToCSSAnimationsMap): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::elementToCSSTransitionsMap): Change to use ListHashRef instead of Vector.
- animation/WebAnimation.cpp:
(WebCore::WebAnimation::setEffect): In the case of a declarative animation, we don't want to remove the animation from the relevant
maps because while the effect was set via the API, the element still has a transition or animation set up and we must not break the
timeline-to-animation relationship.
(WebCore::WebAnimation::setEffectInternal): Factor parts of setEffect() out into a new method that can be called from
AnimationTimeline::removeAnimationsForElement() to reset the m_effect member and correctly call animationWasRemovedFromElement()
without all the Web Animations machinery of setEffect(), which is a public API that has unwanted side effects (such as rejecting
promises).
(WebCore::WebAnimation::setTimeline): In the case of a declarative animation, we don't want to remove the animation from the
relevant maps because, while the timeline was set via the API, the element still has a transition or animation set up and we must
not break the relationship.
- animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::~DocumentTimeline):
(WebCore::DocumentTimeline::detachFromDocument): Close the GenericTaskQueues when detaching from the document as it's too late to
perform this work in the destructor. We also cancel the schedule timer which we had forgotten to do before.
- animation/WebAnimation.h:
- dom/Document.cpp:
(WebCore::Document::prepareForDestruction):
- dom/Element.cpp:
(WebCore::Element::removedFromAncestor):
- dom/PseudoElement.cpp:
(WebCore::PseudoElement::clearHostElement):
- rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::tearDownRenderers):
LayoutTests:
Add a new test that would fail before this fix since the Document would leak. We also remove a homegrown test that was not correct
and is no longer relevant thanks to the tests under imported/mozilla.
- animations/leak-document-with-css-animation-expected.txt: Added.
- animations/leak-document-with-css-animation.html: Added.
- animations/resources/animation-leak-iframe.html: Added.
- platform/win/TestExpectations:
- webanimations/css-transitions-expected.txt: Removed.
- webanimations/css-transitions.html: Removed.