Timeline



Apr 26, 2020:

10:12 PM Changeset in webkit [260739] by Darin Adler
  • 42 edits
    1 move
    1 delete in trunk/Source

[Cocoa] stop using out arguments for document attributes when converting to attributed strings
https://bugs.webkit.org/show_bug.cgi?id=211048

Reviewed by Sam Weinig.

Source/WebCore:

  • DerivedSources-input.xcfilelist: Building modified this file automatically. Uploading

the new version.

  • WebCore.xcodeproj/project.pbxproj: Added AttributedString.h.
  • editing/cocoa/AttributedString.h: Added. Moved this from WebKit, but removed a lot of

inessentials.

  • editing/cocoa/DictionaryLookup.mm: Removed unneeded include.
  • editing/cocoa/EditorCocoa.mm:

(WebCore::selectionAsAttributedString): Updated for change to the return value of the
attributedString function, and use init instead of initWithString:@"".

  • editing/cocoa/HTMLConverter.h: Changed to an Objective-C-only header, omitting things

like #pramga once. Return the AttributedString struct from the functions instead of
using an out argument for document attributes.

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::convert): Return an AttributedString and drop the out argument.
(WebCore::attributedString): Ditto.
(WebCore::editingAttributedString): Ditto. Also refactor a little bit.

  • editing/ios/EditorIOS.mm: Removed unneeded include.
  • editing/mac/DictionaryLookupLegacy.mm: Removed unneeded include.
  • editing/mac/EditorMac.mm:

(WebCore::Editor::dataSelectionForPasteboard): Updated since attributedString
now returns a structure.

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

(WebCore::policyProperties): Use init instead of initWithString:@"".

  • platform/network/cocoa/ResourceRequestCocoa.mm:

(WebCore::siteForCookies): Use init instead of initWithString:@"".

Source/WebKit:

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::updateTaskWithFirstPartyForSameSiteCookies): Use init instead of initWithString:@"".

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<WebCore::AttributedString>::encode): Moved here from AttributedString.mm.
(IPC::ArgumentCoder<WebCore::AttributedString>::decode): Ditto.

  • Shared/DocumentEditingContext.h: Updated to use WebCore::AttributeString.
  • Shared/DocumentEditingContext.mm:

(IPC::ArgumentCoder<WebKit::DocumentEditingContext>::decode): Ditto.

  • Shared/WebCoreArgumentCoders.h: Added coder for WebCore::AttributedString.
  • Shared/mac/AttributedString.h: Removed.
  • Shared/mac/AttributedString.mm: Removed.
  • SourcesCocoa.txt: Removed AttributedString.mm.
  • UIProcess/API/Cocoa/WKWebView.mm: Updated to use WebCore::AttributedString.
  • UIProcess/Cocoa/TextCheckingController.mm: Ditto.
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::attributedSubstringForProposedRange): Ditto.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getContentsAsAttributedString): Ditto.

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

(WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync): Ditto.
(WebKit::WebPageProxy::attributedStringForCharacterRangeCallback): Ditto.

  • WebKit.xcodeproj/project.pbxproj: Removed AttributedString.h and AttributedString.mm.
  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h: Updated to use WebCore::AttributedString.
  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.messages.in: Ditto.
  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:

(WebKit::TextCheckingControllerProxy::replaceRelativeToSelection): Ditto.
(WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions): Ditto.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::dictionaryPopupInfoForRange): Updated since editingAttributedString
returns a struct.
(WebKit::WebPage::getContentsAsAttributedString): Updated to use SimpleRange and
since attributedString returns a struct.

  • WebProcess/WebPage/WebPage.h: Updated to use WebCore::AttributedString.
  • WebProcess/WebPage/WebPage.messages.in: Ditto.
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestDocumentEditingContext): Ditto.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::attributedSubstringForCharacterRangeAsync): Ditto.
(WebKit::WebPage::handleSelectionServiceClick): Ditto.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebSelectionServiceController.mm:

(WebSelectionServiceController::handleSelectionServiceClick): Updated since
attributedString returns a struct.

  • WebView/WebHTMLRepresentation.mm:

(-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]): Ditto.
Also use init instead of initWithString:@"".

  • WebView/WebHTMLView.mm:

(-[WebHTMLView textStorage]): DItto.
(-[WebHTMLView attributedSubstringFromRange:]): Ditto.
(-[WebHTMLView _attributedStringFromDOMRange:]): Ditto.
(-[WebHTMLView _legacyAttributedStringFrom:offset:to:offset:]): Ditto.
(-[WebHTMLView attributedString]): Ditto.
(-[WebHTMLView selectedAttributedString]): Ditto.

  • WebView/WebImmediateActionController.mm:

(+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
Updated.

Source/WTF:

  • wtf/cocoa/URLCocoa.mm:

(WTF::URL::createCFURL const): Use init instead of initWithString:@"". The two are
equivalent in more recent versions of Foundation.

10:07 PM Changeset in webkit [260738] by yoshiaki.jitsukawa@sony.com
  • 8 edits
    1 add in trunk

[PlayStation] Enable TestWTF and TestWebCore
https://bugs.webkit.org/show_bug.cgi?id=208849

Reviewed by Don Olmstead.

.:

  • Source/cmake/OptionsPlayStation.cmake:
  • Add PLAYSTATION_COPY_SHARED_LIBRARIES() to install dependencies.
  • Add -g option for "Release" configuration.
  • Drop "RelWithDebInfo" and "MinSizeRel" configuration.

Source/WebCore:

  • PlatformPlayStation.cmake:

Add WebCore_CopySharedLibs to install dependencies.

Source/WTF:

  • wtf/PlatformPlayStation.cmake:

Add WTF_CopySharedLibs() to install dependencies.

Tools:

  • TestWebKitAPI/PlatformPlayStation.cmake:
  • TestWebKitAPI/playstation/main.cpp: Added.

(main): Load runtime libraries.

9:05 PM Changeset in webkit [260737] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK] Gardening, skipping more inspector tests.

Some inspector tests (like from bug149916) had more specific
expectations than the gtk-global Skip from bug211035 and ended up
being executed. These expectations were not marked as timeout (only
Slow), and this caused the Debug bot to reach the test timeout limit.

As there is already at least three patches involved in this issue,
mark these expectations as Release only, allowing the Debug build to
use the generic expectation from bug2011035.

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
6:02 PM Changeset in webkit [260736] by commit-queue@webkit.org
  • 21 edits
    1 add in trunk/Source

Rendering update steps should use Seconds for the timestamps
https://bugs.webkit.org/show_bug.cgi?id=210990

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-04-26
Reviewed by Daniel Bates.

Source/WebCore:

Make DOMWindow::nowTimestamp() return ReducedResolutionSeconds and change
the callers accordingly. ReducedResolutionSeconds is a new type but it's
just an alias of the type Seconds. It indicates that the returned value
is a web-safe seconds.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::suspendAnimations):
(WebCore::DocumentTimeline::liveCurrentTime const):
(WebCore::DocumentTimeline::cacheCurrentTime):
(WebCore::DocumentTimeline::documentWillUpdateAnimationsAndSendEvents):

  • animation/DocumentTimeline.h:
  • animation/DocumentTimelinesController.cpp:

(WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents):

  • animation/DocumentTimelinesController.h:
  • dom/Document.cpp:

(WebCore::Document::serviceRequestAnimationFrameCallbacks):
(WebCore::Document::updateIntersectionObservations):

  • dom/Document.h:
  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):
(WebCore::ScriptedAnimationController::scheduleAnimation):

  • dom/ScriptedAnimationController.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::getVideoPlaybackQuality):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::nowTimestamp const):

  • page/DOMWindow.h:
  • page/IntersectionObserver.cpp:

(WebCore::IntersectionObserver::nowTimestamp const):
(WebCore::IntersectionObserver::createTimestamp const): Deleted.

  • page/IntersectionObserver.h:
  • page/Page.cpp:

(WebCore::Page::updateRendering):

  • page/Performance.cpp:

(WebCore::Performance::now const):
(WebCore::Performance::nowInReducedResolutionSeconds const):

  • page/Performance.h:
  • page/ReducedResolutionSeconds.h: Added.

Source/WebKit:

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::timestamp const):

5:37 PM Changeset in webkit [260735] by Ross Kirsling
  • 8 edits in trunk/Source/JavaScriptCore

[JSC] Clearly distinguish isConstructor from getConstructData
https://bugs.webkit.org/show_bug.cgi?id=211053

Reviewed by Sam Weinig.

Follow-up to r260722. Remove the isConstructor overload that duplicates getConstructData
and clearly distinguish the usage of these two functions.

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:
  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::isConstructor):
Remove isConstructor overload.

  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::create):
Don't use getConstructData if you don't need ConstructData.

  • runtime/ReflectObject.cpp:

(JSC::reflectObjectConstruct):
Use getConstructData if you need ConstructData.

  • API/JSObjectRef.cpp:

(JSObjectIsFunction):
Use isFunction (leftover spot from last patch).

4:04 PM Changeset in webkit [260734] by ysuzuki@apple.com
  • 3 edits in trunk/Tools

Warn when NeverDestroyed<Lock> is used
https://bugs.webkit.org/show_bug.cgi?id=211054

Reviewed by Darin Adler.

WTF::Lock and WTF::Condition are designed to be constant-initialize compliant. So NeverDestroyed<> for these types are not necessary,
or rather, introducing race condition issue while static Lock doesn't have that issue. This patch adds lint rules which prevent
us from using NeverDestroyed<Lock> and LazyNeverDestroyed<Lock>.

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_wtf_never_destroyed):
(check_style):
(CppChecker):

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(WebKitStyleTest.test_wtf_never_destroyed):

3:54 PM Changeset in webkit [260733] by Alexey Shvayka
  • 5 edits in trunk

Symbol should have Construct? internal method
https://bugs.webkit.org/show_bug.cgi?id=211050

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/is-constructor.js:
  • test262/expectations.yaml: Mark 2 test cases as passing.

Source/JavaScriptCore:

This change introduces constructSymbol() method, which unconditionally throws
a TypeError, since its presence is observable when, for example, Symbol is a
ProxyTarget? itself [1]. Aligns JSC with the spec [2], V8, and SpiderMonkey.

[1]: https://tc39.es/ecma262/#sec-proxycreate (step 7.b)
[2]: https://tc39.es/ecma262/#constructor

  • runtime/SymbolConstructor.cpp:

(JSC::SymbolConstructor::SymbolConstructor):
(JSC::constructSymbol):

2:30 PM Changeset in webkit [260732] by Alexey Shvayka
  • 53 edits
    1 add in trunk

InternalFunction::createSubclassStructure should use newTarget's globalObject
https://bugs.webkit.org/show_bug.cgi?id=202599

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/promise-proto-from-ctor-realm.js: Added.
  • test262/expectations.yaml: Mark 88 test cases as passing.

LayoutTests/imported/w3c:

  • web-platform-tests/WebIDL/ecmascript-binding/constructors-expected.txt:
  • web-platform-tests/custom-elements/htmlconstructor/newtarget-expected.txt:
  • web-platform-tests/wasm/jsapi/proto-from-ctor-realm-expected.txt:

Source/JavaScriptCore:

If "prototype" of NewTarget is not an object, built-in constructors [1] should acquire
default Prototype? from realm of NewTarget, utilizing GetFunctionRealm helper [2].
Before this change, realm of active constructor was used instead. This patch introduces
GetFunctionRealm and aligns all subclassable constructors with the spec, V8, and SpiderMonkey.

This change inlines fast paths checks of InternalFunction::createSubclassStructure() and
simplifies its signature; getFunctionRealm() is invoked in slow paths only.

While a dynamically created function uses NewTarget's realm for its default Prototype?
similar to other built-ins, its "prototype" object inherit from ObjectPrototype
of active constructor's realm [3] (just like their scope), making it retain references
to 2 different global objects. To accomodate this behavior, this change introduces
scopeGlobalObject in JSFunction.cpp methods.

Above-mentioned behavior also simplifies creation of JSGenerator and JSAsyncGenerator
instances since NewTarget's realm is irrelevant to them.

IntlCollatorConstructor::collatorStructure() and 6 similar methods are removed:
a) to impose good practice of using newTarget's globalObject;
b) with this change, each of them have 1 call site max;
c) other JSC constructors have no methods alike.

[1]: https://tc39.es/ecma262/#sec-map-constructor (step 2)
[2]: https://tc39.es/ecma262/#sec-getfunctionrealm
[3]: https://tc39.es/ecma262/#sec-createdynamicfunction (steps 23-25)

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

(JSC::callAggregateErrorConstructor):
(JSC::constructAggregateErrorConstructor):

  • runtime/AggregateErrorConstructor.h:
  • runtime/AsyncFunctionConstructor.cpp:

(JSC::constructAsyncFunctionConstructor):

  • runtime/AsyncGeneratorFunctionConstructor.cpp:

(JSC::constructAsyncGeneratorFunctionConstructor):

  • runtime/BooleanConstructor.cpp:

(JSC::constructWithBooleanConstructor):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):
(JSC::createInternalFieldObject):

  • runtime/DateConstructor.cpp:

(JSC::constructDate):

  • runtime/ErrorConstructor.cpp:

(JSC::constructErrorConstructor):

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunctionSkippingEvalEnabledCheck):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::createSubclassStructure):
(JSC::getFunctionRealm):
(JSC::InternalFunction::createSubclassStructureSlow): Deleted.

  • runtime/InternalFunction.h:

(JSC::InternalFunction::createSubclassStructure): Deleted.

  • runtime/IntlCollatorConstructor.cpp:

(JSC::constructIntlCollator):
(JSC::callIntlCollator):

  • runtime/IntlCollatorConstructor.h:
  • runtime/IntlDateTimeFormatConstructor.cpp:

(JSC::constructIntlDateTimeFormat):
(JSC::callIntlDateTimeFormat):

  • runtime/IntlDateTimeFormatConstructor.h:
  • runtime/IntlNumberFormatConstructor.cpp:

(JSC::constructIntlNumberFormat):
(JSC::callIntlNumberFormat):

  • runtime/IntlNumberFormatConstructor.h:
  • runtime/IntlPluralRulesConstructor.cpp:

(JSC::constructIntlPluralRules):

  • runtime/IntlPluralRulesConstructor.h:
  • runtime/IntlRelativeTimeFormatConstructor.cpp:

(JSC::constructIntlRelativeTimeFormat):

  • runtime/IntlRelativeTimeFormatConstructor.h:
  • runtime/JSArrayBufferConstructor.cpp:

(JSC::JSGenericArrayBufferConstructor<sharingMode>::constructArrayBuffer):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::prototypeForConstruction):
(JSC::JSFunction::getOwnPropertySlot):

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::constructGenericTypedArrayView):

  • runtime/JSGlobalObjectInlines.h:

(JSC::JSGlobalObject::arrayStructureForIndexingTypeDuringAllocation const):

  • runtime/MapConstructor.cpp:

(JSC::constructMap):

  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructor<errorType>::constructNativeErrorConstructor):
(JSC::NativeErrorConstructor<errorType>::callNativeErrorConstructor):

  • runtime/NativeErrorConstructor.h:
  • runtime/NumberConstructor.cpp:

(JSC::constructNumberConstructor):

  • runtime/ObjectConstructor.cpp:

(JSC::constructObjectWithNewTarget):

  • runtime/RegExpConstructor.cpp:

(JSC::getRegExpStructure):
(JSC::constructRegExp):
(JSC::esSpecRegExpCreate):

  • runtime/RegExpConstructor.h:
  • runtime/SetConstructor.cpp:

(JSC::constructSet):

  • runtime/StringConstructor.cpp:

(JSC::constructWithStringConstructor):

  • runtime/WeakMapConstructor.cpp:

(JSC::constructWeakMap):

  • runtime/WeakObjectRefConstructor.cpp:

(JSC::constructWeakRef):

  • runtime/WeakSetConstructor.cpp:

(JSC::constructWeakSet):

  • wasm/js/WebAssemblyCompileErrorConstructor.cpp:

(JSC::constructJSWebAssemblyCompileError):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyLinkErrorConstructor.cpp:

(JSC::constructJSWebAssemblyLinkError):

  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::WebAssemblyModuleConstructor::createModule):

  • wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:

(JSC::constructJSWebAssemblyRuntimeError):

Source/WebCore:

Accounts for InternalFunction::createSubclassStructure() signature change and
utilizes getFunctionRealm() helper to handle cross-realm JSBoundFunction and
ProxyObject instances as NewTarget value.

Tests: web-platform-tests/WebIDL/ecmascript-binding/constructors.html

web-platform-tests/custom-elements/htmlconstructor/newtarget.html

  • bindings/js/JSDOMWrapperCache.h:

(WebCore::setSubclassStructureIfNeeded):

  • bindings/js/JSHTMLElementCustom.cpp:

(WebCore::constructJSHTMLElement):

2:17 PM Changeset in webkit [260731] by ysuzuki@apple.com
  • 4 edits in trunk/Source

Use static Lock instead of static NeverDestroyed<Lock>
https://bugs.webkit.org/show_bug.cgi?id=211036

Reviewed by Darin Adler.

Source/WebCore:

  • platform/GenericTaskQueue.cpp:

(WebCore::TaskDispatcher<Timer>::sharedLock):

Source/WTF:

Lock can be static-initialized since it has constexpr constructor. No need to use NeverDestroyed<Lock>.

  • wtf/Logger.h:

(WTF::Logger::observerLock):

2:11 PM Changeset in webkit [260730] by ysuzuki@apple.com
  • 15 edits
    5 adds in trunk

[JSC] ValueAdd, VaueSub, ValueMul, Inc, Dec should say SpecBigInt32 prediction based on ArithProfile
https://bugs.webkit.org/show_bug.cgi?id=211038

Reviewed by Filip Pizlo.

JSTests:

  • stress/bigint32-add-overflow.js: Added.

(shouldBe):
(add):
(noInline):

  • stress/bigint32-dec-overflow.js: Added.

(shouldBe):
(dec):
(noInline):

  • stress/bigint32-inc-overflow.js: Added.

(shouldBe):
(inc):
(noInline):

  • stress/bigint32-mul-overflow.js: Added.

(shouldBe):
(mul):
(noInline):

  • stress/bigint32-sub-overflow.js: Added.

(shouldBe):
(sub):
(noInline):

Source/JavaScriptCore:

This patch adds profile feedback to ValueAdd, ValueSub, ValueMul, Inc, Dec to say SpecBigInt32 prediction.

Our HeapBigInt v.s. BigInt32 strategy is simpler than Double v.s. Int32 strategy: we always
prefer BigInt32 over HeapBigInt. This is because HeapBigInt calculation and conversion require
much higher cost than BigInt32. This tradeoff is largely different from Double v.s. Int32.
So keeping HeapBigInt is simply inefficient when we can use BigInt32.

This means that ArithProfile's feedback is also very simple. If we see HeapBigInt, this means
overflow happens. In DFG, we propagate this information to ValueAdd, ValueSub, and ValueMul nodes
and record it in DFGNodeFlags. And based on this information, we change the prediction and
speculation in prediction propagation and fixup phase.

We change exit reason from Overflow to BigInt32Overflow since Overflow is solely used for Int32 case,
and we have Int52Overflow for Int52 case. We should have BigInt32Overflow for BigInt32 to precisely
record and tell about what happens in DFG as a feedback for the next compilation.

We add BigInt32 speculation for ValueSub. Previously, we missed that in fixup phase and we always
speculate ValueSub with AnyBigIntUse or HeapBigIntUse. Now it can use BigInt32Use.

We also fix Inc / Dec's fixup phase to use BigInt path. Previously, it was always using UntypedUse since
node->child1()->shouldSpeculateUntypedForArithmetic() returns true for BigInt. We fix the ordering of
speculation attempts as it is done in the other places in fixup phase.

This patch offers 7.9% performance improvement in sunspider-sha1-big-int.

ToT Patched

sunspider-sha1-big-int 134.5668+-2.8695 124.6743+-0.7541 definitely 1.0793x faster

  • bytecode/ExitKind.cpp:

(JSC::exitKindToString):

  • bytecode/ExitKind.h:
  • bytecode/SpeculatedType.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::makeSafe):
(JSC::DFG::ByteCodeParser::makeDivSafe):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::binaryArithShouldSpeculateBigInt32):
(JSC::DFG::Graph::unaryArithShouldSpeculateBigInt32):

  • dfg/DFGNode.h:

(JSC::DFG::Node::mayHaveBigInt32Result):
(JSC::DFG::Node::mayHaveHeapBigIntResult):
(JSC::DFG::Node::mayHaveBigIntResult):
(JSC::DFG::Node::canSpeculateBigInt32):
(JSC::DFG::Node::canSpeculateInt52):

  • dfg/DFGNodeFlags.cpp:

(JSC::DFG::dumpNodeFlags):

  • dfg/DFGNodeFlags.h:

(JSC::DFG::nodeMayHaveHeapBigInt):
(JSC::DFG::nodeCanSpeculateBigInt32):

  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileValueSub):
(JSC::DFG::SpeculativeJIT::compileValueMul):
(JSC::DFG::SpeculativeJIT::compileValueDiv):
(JSC::DFG::SpeculativeJIT::speculateHeapBigInt):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
(JSC::FTL::DFG::LowerDFGToB3::compileValueSub):
(JSC::FTL::DFG::LowerDFGToB3::compileValueMul):
(JSC::FTL::DFG::LowerDFGToB3::compileValueDiv):

1:02 PM Changeset in webkit [260729] by Peng Liu
  • 7 edits
    1 delete in trunk/Source

Remove unused class PlaybackSessionInterface
https://bugs.webkit.org/show_bug.cgi?id=211031

Reviewed by Daniel Bates.

Source/WebCore:

No new tests, no functional changes.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/cocoa/PlaybackSessionInterface.h: Removed.
  • platform/cocoa/PlaybackSessionModelMediaElement.h:
  • platform/ios/PlaybackSessionInterfaceAVKit.h:
  • platform/mac/PlaybackSessionInterfaceMac.h:

Source/WebKit:

  • WebProcess/cocoa/PlaybackSessionManager.h:
12:51 PM Changeset in webkit [260728] by chris.reid@sony.com
  • 2 edits in trunk/Source/WebInspectorUI

[Win] Fix windows build with MSBuild after 260672
https://bugs.webkit.org/show_bug.cgi?id=211047

Unreviewed build fix.

  • CMakeLists.txt:
11:55 AM Changeset in webkit [260727] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WTF

[WTF] Workaround gcc bug for unsigned bitfield related usual arithmetic conversions
https://bugs.webkit.org/show_bug.cgi?id=211044

Reviewed by Darin Adler.

  • wtf/URL.cpp:

(WTF::URL::setHost):
(WTF::URL::setHostAndPort):
(WTF::URL::setUser):
(WTF::URL::setPassword):

9:34 AM Changeset in webkit [260726] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC] Compute and distribute extra vertical space for rows
https://bugs.webkit.org/show_bug.cgi?id=211046

Reviewed by Antti Koivisto.

When the table computed height is bigger than the sum of the row heigts, we need to distribute the extra vertical
space among the non-fixed height rows. The distribution is based on the preferred height of those non-fixed rows.

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace):

8:33 AM Changeset in webkit [260725] by Darin Adler
  • 63 edits in trunk/Source

Stop using live ranges in functions that return range of the selection
https://bugs.webkit.org/show_bug.cgi?id=210396

Reviewed by Sam Weinig.

Source/WebCore:

  • Added makeRangeSelectingNode, to create a range that selects a node and all its descendants.
  • Improved intersectingNodes so it can now easily be used in a while loop style as well as the range-for loop style. Also made it more robust against tree changes while iterating; it will now always stop at the end of the document.
  • Changed functions that work with selection to get a SimpleRange, and then either do all the work without a live range, or call createLiveRange right where it's needed, making it clearer when we can delete that call later as we cut down live ranges even more.
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::selectionRange const): Return a SimpleRange
instead of a live range.
(WebCore::AccessibilityObject::findTextRanges const): Use createLiveRange
on the result of selectionRange since this still mostly uses live ranges.

  • accessibility/AccessibilityObject.h: Updated for the above.
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::documentBasedSelectedTextRange const):
Updated to create a live range only in the one place we need to call a
Range class member function.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper textMarkerRangeForSelection]):
Use createLiveRange here.

  • dom/SimpleRange.cpp:

(WebCore::makeRangeSelectingNode): Added. For use when we need to make
a range that selects a node, not just the node's contents.
(WebCore::firstIntersectingNode): Renamed from IntersectingNodeRange::first
since this is now used in the iterator class, not the range class. Also
letting it be a non-member function so we can tweak it without touching
the haeder file.
(WebCore::nodePastLastIntersectingNode): Ditto.
(WebCore::IntersectingNodeIterator::IntersectingNodeIterator): Changed
this constructor to take a SimpleRange. To add the advanceSkippingChildren
feature, had to build the termination condition into the iterator rather
than basing it on the value of the sentinel.
(WebCore::IntersectingNodeIterator::advance): Added. Contains the logic
from the ++ operator, so it can be called in a more straightforward way
when this is being used with a while loop rather than a range-for loop.
(WebCore::IntersectingNodeIterator::advanceSkippingChildren): Added.

  • dom/SimpleRange.h: Updated for the changes to IntersectingNodeIterator

and IntersectingNodeRange.

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::timerFired): Use createLiveRange.

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::targetRanges const): Use WTFMove in
a place where the old code was copying instead.

  • editing/DeleteSelectionCommand.cpp:

(WebCore::DeleteSelectionCommand::makeStylingElementsDirectChildrenOfEditableRootToPreventStyleLoss):
Use intersectingNodes to make the function's logic easier to understand.

  • editing/Editing.cpp:

(WebCore::visibleImageElementsInRangeWithNonLoadedImages): Changed
the argument type to SimpleRange.

  • editing/Editing.h: Updated for the change above.
  • editing/EditingStyle.cpp:

(WebCore::EditingStyle::styleAtSelectionStart): Use createLiveRange.

  • editing/Editor.cpp:

(WebCore::Editor::selectedRange): Use createLiveRange.
(WebCore::Editor::applyStyleToSelection): Ditto.
(WebCore::Editor::applyParagraphStyleToSelection): Ditto.
(WebCore::Editor::insertTextWithoutSendingTextEvent): Ditto.
(WebCore::Editor::insertLineBreak): Ditto.
(WebCore::Editor::insertParagraphSeparator): Ditto.
(WebCore::Editor::ignoreSpelling): Remove use of live range.
(WebCore::Editor::learnSpelling): Ditto.
(WebCore::Editor::misspelledWordAtCaretOrRange const): Ditto.
(WebCore::Editor::isSelectionUngrammatical): Ditto.
(WebCore::Editor::guessesForMisspelledOrUngrammatical): Ditto.
(WebCore::Editor::markMisspellingsAfterTypingToWord): Use createLiveRange.
(WebCore::Editor::markMisspellingsOrBadGrammar): Ditto.
(WebCore::Editor::markMisspellingsAndBadGrammar): Ditto.
(WebCore::Editor::rangeForPoint): Ditto.
(WebCore::Editor::insertTextPlaceholder): Ditto.
(WebCore::Editor::shouldChangeSelection const): Ditto.
(WebCore::Editor::findString): Ditto.
(WebCore::Editor::rangeOfString): Ditto.
(WebCore::Editor::scanSelectionForTelephoneNumbers): Ditto.
(WebCore::Editor::editorUIUpdateTimerFired): Remove use of live range.
(WebCore::candidateRangeForSelection): Deleted.
(WebCore::Editor::stringForCandidateRequest const): Use createLiveRange
and merged in the logic from candidateRangeForSelection.
(WebCore::Editor::fontForSelection const): Remove use of live range.

  • editing/EditorCommand.cpp:

(WebCore::expandSelectionToGranularity): Use createLiveRange.
(WebCore::executeDeleteToMark): Ditto.
(WebCore::executeSelectToMark): Ditto.
(WebCore::valueFormatBlock): Ditto.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::respondToNodeModification): Use createLiveRange.
(WebCore::FrameSelection::shouldDeleteSelection const): Ditto.
(WebCore::FrameSelection::getClippedVisibleTextRectangles const): Do the work
without a live range.
(WebCore::FrameSelection::expandSelectionToElementContainingCaretSelection): Ditto.
(WebCore::FrameSelection::elementRangeContainingCaretSelection const): Changed
to return a SimpleRange rather than a live range. Also removed redundant checks
and renamed locals to streamline the function.
(WebCore::FrameSelection::wordRangeContainingCaretSelection): Return a
SimpleRange instead of a live range.
(WebCore::FrameSelection::rangeByMovingCurrentSelection const): Ditto.
(WebCore::FrameSelection::rangeByExtendingCurrentSelection const): Ditto.
(WebCore::FrameSelection::rangeByAlteringCurrentSelection const): Ditto.

  • editing/FrameSelection.h: Removed the toNormalizedRange function, since the

VisibleSelection class has a comment claiming most callers should not call it.
Updated forthe other changes above.

  • editing/InsertListCommand.cpp:

(WebCore::InsertListCommand::doApply): Use createLiveRange.

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplacementFragment::ReplacementFragment): Ditto.

  • editing/TextCheckingHelper.cpp:

(WebCore::TextCheckingHelper::TextCheckingHelper): Remove use of live range,
changing the type of m_range to SimpleRange.
(WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar): Reduce use
of live range.
(WebCore::TextCheckingHelper::findFirstGrammarDetail const): Use createLiveRange.
(WebCore::TextCheckingHelper::findFirstBadGrammar const): Ditto.
(WebCore::TextCheckingHelper::isUngrammatical const): Remove use of live range.
(WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange const):
Use createLiveRange.
(WebCore::TextCheckingHelper::unifiedTextCheckerEnabled const): Updated for
different interface to get the document for a SimpleRange.

  • editing/TextCheckingHelper.h: Change constructor to take a SimpleRange.
  • editing/TypingCommand.cpp:

(WebCore::TypingCommand::deleteKeyPressed): Use createLiveRange.
(WebCore::TypingCommand::forwardDeleteKeyPressed): Ditto.

  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::firstRange const): Return a SimpleRange.
(WebCore::VisibleSelection::toNormalizedRange const): Ditto.

  • editing/VisibleSelection.h: Updated for the above.
  • editing/cocoa/DictionaryLookup.mm: Removed an uneeded check of the

selection range against null. Code already guards against null endpoints.

  • editing/cocoa/EditorCocoa.mm:

(WebCore::selectionAsAttributedString): Added. Uses the attributedString
function with it's new argument and return value types. There's no longer
a special function for the selection in the HTMLConverter header, so we
put it here instead.
(WebCore::Editor::writeSelectionToPasteboard): Updated to use the function
above and to deal with RetainPtr.
(WebCore::Editor::writeSelection): Ditto.

  • editing/cocoa/HTMLConverter.h: Removed attributedStringFromSelection and

attributedStringBetweenStartAndEnd. Renamed attributedStringFromRange to
just attributedString and renamed editingAttributedStringFromRange to
just editingAttributedString. Also renamed IncludeImagesInAttributedString
to just IncludeImages.

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::HTMLConverter): Use a SimpleRange rther than two Position
arguments to the constructor.
(HTMLConverter::convert): Use RetainPtr for the return value and the
optional out argument.
(WebCore::attributedStringFromSelection): Deleted.
(WebCore::attributedStringBetweenStartAndEnd): Deleted.
(WebCore::attributedString): Renamed the version that takes a range and
made it take a SimpleRange, not a live range.
(WebCore::editingAttributedString): Ditto.

  • editing/mac/EditorMac.mm:

(WebCore::Editor::dataSelectionForPasteboard): Updated for changes to
attributedString.

  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::handleBeforeTextInsertedEvent const):
Changed to not use live ranges any more.

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::contextMenuItemSelected):
Use createLiveRange.

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::getRangeAt): Use createLiveRange.
(WebCore::DOMSelection::addRange): Use Ditto.
(WebCore::DOMSelection::deleteFromDocument): Ditto.

  • page/DragController.cpp:

(WebCore::setSelectionToDragCaret): Removed in/out argument that was
used to update a range that was never looked at afterward.
(WebCore::DragController::concludeEditDrag): Use createLiveRange.
(WebCore::DragController::draggableElement const): Ditto.
(WebCore::DragController::startDrag): Ditto.

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchMouseEvent): Use createLiveRange.
(WebCore::EventHandler::sendContextMenuEventForKey): Ditto.
(WebCore::EventHandler::didStartDrag): Remove use of live range.

  • page/Page.cpp:

(WebCore::Page::findStringMatchingRanges): Use createLiveRange.

  • page/TextIndicator.cpp:

(WebCore::TextIndicator::createWithRange): Ditto.
(WebCore::TextIndicator::createWithSelectionInFrame): Ditto.

  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::buildSelectionHighlight):
Use createLiveRange.
(WebCore::ServicesOverlayController::findTelephoneNumberHighlightContainingSelectionHighlight):
Use createLiveRange.

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::selectedText const): Remove use of
live range.

Source/WebKit:

  • WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:

(WebKit::WebEditorClient::updateGlobalSelection): Remove use of live range.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::dictionaryPopupInfoForRange): Updated for changes
to attributedString functions.
(WebKit::WebPage::getContentsAsAttributedString): Ditto.

  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::updateFindUIAfterPageScroll): Use createLiveRange.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getSelectedRangeAsync): Ditto.
(WebKit::WebPage::currentSelectionAsRange): Ditto.

  • WebProcess/WebPage/WebPage.h: Change m_rangeForDropSnapshot

to use a SimpleRange instead of a live range.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::plainTextForContext): Overloaded for SimpleRange and
Optional<SimpleRange> as needed by code below.
(WebKit::plainTextForDisplay): Ditto.
(WebKit::WebPage::getPlatformEditorState const): Use createLiveRange.
(WebKit::WebPage::getSelectionContext): Remove use of live range.
(WebKit::WebPage::didConcludeDrop): Ditto.
(WebKit::WebPage::didConcludeEditDrag): Use createLiveRange.
(WebKit::WebPage::computeAndSendEditDragSnapshot): Ditto.
(WebKit::WebPage::startAutoscrollAtPosition): Remove use of
live range.
(WebKit::WebPage::requestEvasionRectsAboveSelection): Use
createLiveRange.
(WebKit::WebPage::requestDictationContext): Remove use of live range.
(WebKit::WebPage::replaceSelectedText): Use createLiveRange.
(WebKit::WebPage::applyAutocorrectionInternal): Ditto.
(WebKit::WebPage::autocorrectionContext): Remove use of live range.
(WebKit::WebPage::requestDocumentEditingContext): Use createLiveRange.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::getPlatformEditorState const): Remove use of
live range.
(WebKit::WebPage::attributedSubstringForCharacterRangeAsync):
Updated for change to HTMLConverter functions.
(WebKit::WebPage::handleSelectionServiceClick): Ditto.
(WebKit::WebPage::performImmediateActionHitTestAtLocation):
Remove use of live range.

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebFrameIOS.mm:

(-[WebFrame selectionRectsForCoreRange:]): Changed argument type to
not require a live range. Internally, use createLiveRange and also
use a range-for loop.
(-[WebFrame selectionRectsForRange:]): Remove use of live range.
(-[WebFrame selectionRects]): Ditto.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::handleRequestedCandidates): Remove use of live range.

  • WebCoreSupport/WebSelectionServiceController.mm:

(WebSelectionServiceController::handleSelectionServiceClick): Ditto.

  • WebView/WebFrame.mm:

(-[WebFrame _rangeByAlteringCurrentSelection:direction:granularity:]):
Use createLiveRange.
(-[WebFrame _convertToNSRange:]): Changed to take SimpleRange.
(-[WebFrame _convertDOMRangeToNSRange:]): Updated for the above.
(-[WebFrame _markDOMRange]): Use createLiveRange.
(-[WebFrame _selectionRangeForFirstPoint:secondPoint:]): Ditto.
(-[WebFrame _selectionRangeForPoint:]): Ditto.
(-[WebFrame _selectedNSRange]): Remove use of live range.
(-[WebFrame selectedDOMRange]): Use crateLiveRange.
(-[WebFrame elementRangeContainingCaretSelection]): Ditto.
(-[WebFrame expandSelectionToWordContainingCaretSelection]): Tweaked
coding style a little.
(-[WebFrame expandSelectionToStartOfWordContainingCaretSelection]): Ditto.
(-[WebFrame wordRangeContainingCaretSelection]): Use createLiveRange.
(-[WebFrame rangeByMovingCurrentSelection:]): Ditto.
(-[WebFrame rangeByExtendingCurrentSelection:]): Ditto.
(-[WebFrame _replaceSelectionWithText:selectReplacement:smartReplace:matchStyle:]):
Use createLiveRange.
(-[WebFrame _replaceSelectionWithText:selectReplacement:smartReplace:]): Ditto.
(-[WebFrame _documentFragmentForText:]): Ditto.

  • WebView/WebFrameInternal.h: Updated for changes above.
  • WebView/WebHTMLRepresentation.mm:

(-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]):
Remove use of live range.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _selectedRange]): Use createLiveRange.
(-[WebHTMLView _lookUpInDictionaryFromMenu:]): Remove use of live range.
(-[WebHTMLView markedRange]): Updated for change to _convertToNSRange.
(-[WebHTMLView attributedSubstringFromRange:]): Ditto.
(-[WebHTMLView _attributedStringFromDOMRange:]): Updated for changes to
HTMLConverter.
(-[WebHTMLView _legacyAttributedStringFrom:offset:to:offset:]): Remove
use of live range.
(-[WebHTMLView attributedString]): Ditto.
(-[WebHTMLView selectedAttributedString]): Ditto.

  • WebView/WebImmediateActionController.h: Updated method to take a

SimpleRange instead of a live range.

  • WebView/WebImmediateActionController.mm:

(+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
Remove use of live range.

  • WebView/WebTextCompletionController.mm:

(-[WebTextCompletionController doCompletion]): Use createLiveRange.

  • WebView/WebView.mm:

(-[WebView _didConcludeEditDrag]): Ditto.

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::prepareCandidateWindow): Updated since toNormalizedRange
returns a SimpleRange.
(WebView::onIMERequestCharPosition): Ditto.
(WebView::onIMERequestReconvertString): Ditto.

7:53 AM Changeset in webkit [260724] by Darin Adler
  • 13 edits
    1 copy
    1 add
    1 delete in trunk/Source/WebCore

Remove unnecessary inlining and templates for URL decomposition DOM functions
https://bugs.webkit.org/show_bug.cgi?id=211025

Reviewed by Alex Christensen.

  • Headers.cmake: Renamed URLUtils.h to URLDecomposition.h.
  • Modules/cache/DOMCacheStorage.cpp: Updated include and using namespace.
  • Sources.txt: Added URLDecomposition.cpp.
  • WebCore.xcodeproj/project.pbxproj: Added URLDecomposition.cpp and

renamed URLUtils.h to URLDecomposition.h.

  • html/DOMURL.h: Removed the WEBCORE_EXPORT on this class. Added final.

Derive from URLDecomposition instead of URLUtils. Changed return type of
href to const&. Moved toJSON here from URLUtils. Added overrides of the
fullURL and setFullURL functions for URLDecomposition.

  • html/DOMURL.idl: Removed ImplementationLacksVTable.
  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::HTMLAnchorElement): Moved initialization of
boolean data members to the class definition.

  • html/HTMLAnchorElement.h: Derive from URLDecomposition instead of

URLUtils. Added overrides of the fullURL and setFullURL functions for
URLDecomposition. Initialize data members here in the class definition.

  • html/HTMLMediaElement.cpp: Removed unnecessary include of DOMURL.h.
  • html/URLDecomposition.cpp: Added. Contains most of the code from

the URLUtils class template, which no longer needs to be in a header.

  • html/URLDecomposition.h: Renamed URLUtils.h to this. It's now an

abstract base class rather than a class template using the curiously
recurring template pattern.

  • html/URLSearchParams.h: Forward-declare DOMURL rather than including

the DOMURL.h header.

  • html/URLUtils.h: Removed. Renamed to URLDecompostion.h.
  • page/DOMWindow.cpp: Removed unneeded include of DOMURL.h.
  • testing/Internals.cpp: Added include of DOMURL.h.
12:37 AM Changeset in webkit [260723] by cathiechen
  • 2 edits in trunk/Source/WebCore

fast/scrolling/scroll-behavior-invalidate-if-disabled.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=210917

Reviewed by Darin Adler.

The flaky failure is caused by reusing the CSSPropertyInfo value cached propertyInfoCache
after experimental flags changed. Add propertyInfoFromJavaScriptCSSPropertyName
to perform disabled checking after parsing. If the property is disabled, it will return
an invalid CSSPropertyInfo instead.

  • css/CSSStyleDeclaration.cpp:

(WebCore::CSSStyleDeclaration::getCSSPropertyIDFromJavaScriptPropertyName):
(WebCore::CSSStyleDeclaration::namedItem):
(WebCore::CSSStyleDeclaration::setNamedItem):

Apr 25, 2020:

10:07 PM Changeset in webkit [260722] by Ross Kirsling
  • 12 edits in trunk/Source

[JSC] isCallable is redundant with isFunction
https://bugs.webkit.org/show_bug.cgi?id=211037

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

isCallable is only being used in two places and has the same definition as isFunction (aside from out params).
Where CallData is needed, getCallData should be used; where CallData is not needed, isFunction should be used.

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::isCallable const): Deleted.

  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::isCallable): Deleted.
Remove isCallable.

  • runtime/JSONObject.cpp:

(JSC::Stringifier::Stringifier):
(JSC::Stringifier::toJSON):
Use getCallData if you need CallData.

  • runtime/ExceptionHelpers.cpp:

(JSC::errorDescriptionForValue):

  • runtime/ObjectConstructor.cpp:

(JSC::toPropertyDescriptor):

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncDefineGetter):
(JSC::objectProtoFuncDefineSetter):
Don't use getCallData if you don't need CallData.

Source/WebCore:

  • bindings/js/JSDOMConvertScheduledAction.h:

(WebCore::Converter<IDLScheduledAction>::convert):

  • worklets/PaintWorkletGlobalScope.cpp:

(WebCore::PaintWorkletGlobalScope::registerPaint):
Don't use getCallData if you don't need CallData.

9:57 PM Changeset in webkit [260721] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix internal iOS build.
https://bugs.webkit.org/show_bug.cgi?id=210521

  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformBeginApplePaySetup):

9:44 PM Changeset in webkit [260720] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] Handle BigInt32 INT32_MIN shift amount
https://bugs.webkit.org/show_bug.cgi?id=211030

Reviewed by Darin Adler.

JSTests:

  • stress/bigint-int32-min-shift.js: Added.

(shouldBe):
(shouldThrow):

Source/JavaScriptCore:

Our BigInt shift-operation does not correctly handle INT32_MIN shift amount, and producing a wrong result.
This patch fixes it.

  • runtime/Operations.h:

(JSC::shift):

9:09 PM Changeset in webkit [260719] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix.
https://bugs.webkit.org/show_bug.cgi?id=210521

  • Modules/applepay/ApplePaySetupFeature.mm:
8:32 PM Changeset in webkit [260718] by achristensen@apple.com
  • 15 edits
    17 adds
    7 deletes in trunk/Source

Move ApplePay code from WebKitAdditions to WebCore and WebKit
https://bugs.webkit.org/show_bug.cgi?id=210521
Source/WebCore:

I accidentally committed an older version of the patch.
This is the diff between the two to fix the internal build.

Source/WebCore/PAL:

Reviewed by Andy Estes.

  • pal/cocoa/PassKitSoftLink.h:
  • pal/cocoa/PassKitSoftLink.mm:
  • pal/spi/cocoa/PassKitSPI.h:
8:03 PM Changeset in webkit [260717] by achristensen@apple.com
  • 39 edits
    17 adds in trunk/Source

Move ApplePay code from WebKitAdditions to WebCore and WebKit
https://bugs.webkit.org/show_bug.cgi?id=210521

Reviewed by Andy Estes.

Source/WebCore:

Only 4 minor modifications were necessary, as follows:

  1. PaymentSetupFeatures's RetainPtr<NSArray<PKPaymentSetupFeature *>> was changed to RetainPtr<NSArray> to work with C++.
  2. WebPaymentCoordinatorProxyAdditions messages were moved to WebPaymentCoordinatorProxy, removing the need for the extra message receiver, the Optional<WebPaymentCoordinatorProxyAdditions>, and the finishConstruction.
  3. WebMediaSessionManager.cpp's macros that collided with other macros were renamed. This was necessary because of different source unification.
  4. PaymentSetupFeatures.h was renamed to ApplePayPaymentSetupFeatures.h to be able to build with PaymentSetupFeatures.h in the SDK.

The rest is just copy and paste.

There isn't a good way to land this without breaking the build without removing the files from WebKitAdditions at the same time,
so I'll do the two at the same time late at night to not cause disruption.

  • DerivedSources.make:
  • Modules/applepay/ApplePayInstallmentConfiguration.h: Added.
  • Modules/applepay/ApplePayInstallmentConfiguration.idl: Added.
  • Modules/applepay/ApplePayPayment.h:
  • Modules/applepay/ApplePayPayment.idl:
  • Modules/applepay/ApplePayPaymentMethod.h:
  • Modules/applepay/ApplePayPaymentMethod.idl:
  • Modules/applepay/ApplePayPaymentMethodUpdate.h:
  • Modules/applepay/ApplePayPaymentMethodUpdate.idl:
  • Modules/applepay/ApplePayRequestBase.cpp:

(WebCore::finishConverting):
(WebCore::requiresSupportedNetworks):

  • Modules/applepay/ApplePayRequestBase.h:
  • Modules/applepay/ApplePaySession.cpp:

(WebCore::finishConverting):

  • Modules/applepay/ApplePaySessionPaymentRequest.h:

(WebCore::ApplePaySessionPaymentRequest::installmentConfiguration const):
(WebCore::ApplePaySessionPaymentRequest::setInstallmentConfiguration):

  • Modules/applepay/ApplePaySetup.cpp: Added.

(WebCore::shouldDiscloseFeatures):
(WebCore::ApplePaySetup::getSetupFeatures):
(WebCore::ApplePaySetup::begin):
(WebCore::ApplePaySetup::ApplePaySetup):
(WebCore::ApplePaySetup::stop):
(WebCore::ApplePaySetup::suspend):

  • Modules/applepay/ApplePaySetup.h: Added.

(WebCore::ApplePaySetup::create):

  • Modules/applepay/ApplePaySetup.idl: Added.
  • Modules/applepay/ApplePaySetupFeature.h: Added.

(WebCore::ApplePaySetupFeature::create):
(WebCore::ApplePaySetupFeature::platformFeature const):

  • Modules/applepay/ApplePaySetupFeature.idl: Added.
  • Modules/applepay/ApplePaySetupFeature.mm: Added.

(WebCore::ApplePaySetupFeature::type const):
(WebCore::ApplePaySetupFeature::state const):
(WebCore::ApplePaySetupFeature::supportsInstallments const):
(WebCore::ApplePaySetupFeature::ApplePaySetupFeature):

  • Modules/applepay/ApplePaySetupFeatureType.h: Added.
  • Modules/applepay/ApplePaySetupFeatureType.idl: Added.
  • Modules/applepay/PaymentCoordinatorClient.h:

(WebCore::PaymentCoordinatorClient::getSetupFeatures):
(WebCore::PaymentCoordinatorClient::beginApplePaySetup):
(WebCore::PaymentCoordinatorClient::endApplePaySetup):

  • Modules/applepay/PaymentInstallmentConfiguration.h: Added.
  • Modules/applepay/PaymentInstallmentConfiguration.mm: Added.

(WebCore::toDecimalNumber):
(WebCore::platformFeatureType):
(WebCore::createPlatformConfiguration):
(WebCore::PaymentInstallmentConfiguration::PaymentInstallmentConfiguration):
(WebCore::PaymentInstallmentConfiguration::platformConfiguration const):

  • Modules/applepay/PaymentMethodUpdate.h:
  • Modules/applepay/cocoa/PaymentCocoa.mm:

(WebCore::finishConverting):

  • Modules/applepay/cocoa/PaymentMethodCocoa.mm:

(WebCore::finishConverting):

  • Modules/applepay/cocoa/PaymentMethodUpdateCocoa.mm:

(WebCore::PaymentMethodUpdate::setInstallmentGroupIdentifier):

  • Modules/applepay/cocoa/PaymentSessionErrorCocoa.mm:

(WebCore::additionalError):

  • Modules/applepay/paymentrequest/ApplePayRequest.idl:
  • Modules/mediasession/WebMediaSessionManager.cpp:

(WebCore::WebMediaSessionManager::setMockMediaPlaybackTargetPickerEnabled):
(WebCore::WebMediaSessionManager::setMockMediaPlaybackTargetPickerState):
(WebCore::WebMediaSessionManager::mockMediaPlaybackTargetPickerDismissPopup):
(WebCore::WebMediaSessionManager::addPlaybackTargetPickerClient):
(WebCore::WebMediaSessionManager::removePlaybackTargetPickerClient):
(WebCore::WebMediaSessionManager::removeAllPlaybackTargetPickerClients):
(WebCore::WebMediaSessionManager::showPlaybackTargetPicker):
(WebCore::WebMediaSessionManager::clientStateDidChange):
(WebCore::WebMediaSessionManager::setPlaybackTarget):
(WebCore::WebMediaSessionManager::externalOutputDeviceAvailableDidChange):
(WebCore::WebMediaSessionManager::playbackTargetPickerWasDismissed):
(WebCore::WebMediaSessionManager::configurePlaybackTargetClients):
(WebCore::WebMediaSessionManager::configurePlaybackTargetMonitoring):
(WebCore::WebMediaSessionManager::configureWatchdogTimer):
(WebCore::WebMediaSessionManager::watchdogTimerFired):

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/cocoa/WebCoreAdditions.mm:

Source/WebCore/PAL:

  • pal/cocoa/PassKitSoftLink.h:
  • pal/cocoa/PassKitSoftLink.mm:
  • pal/spi/cocoa/PassKitSPI.h:

Source/WebKit:

  • DerivedSources.make:
  • Scripts/webkit/messages.py:
  • Shared/ApplePay/ApplePayPaymentSetupFeatures.h: Added.

(WebKit::PaymentSetupFeatures::platformFeatures const):

  • Shared/ApplePay/ApplePayPaymentSetupFeatures.mm: Added.

(WebKit::PaymentSetupFeatures::PaymentSetupFeatures):
(WebKit::PaymentSetupFeatures::encode const):
(WebKit::PaymentSetupFeatures::decode):
(WebKit::PaymentSetupFeatures::operator Vector<Ref<WebCore::ApplePaySetupFeature>> const):

  • Shared/ApplePay/PaymentSetupConfiguration.h: Added.

(WebKit::PaymentSetupConfiguration::platformConfiguration const):

  • Shared/ApplePay/PaymentSetupConfiguration.mm: Added.

(WebKit::toPlatformConfiguration):
(WebKit::PaymentSetupConfiguration::PaymentSetupConfiguration):
(WebKit::PaymentSetupConfiguration::encode const):
(WebKit::PaymentSetupConfiguration::decode):

  • Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
  • Shared/ApplePay/WebPaymentCoordinatorProxy.h:

(WebKit::WebPaymentCoordinatorProxy::finishConstruction): Deleted.

  • Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
  • Shared/ApplePay/cocoa/PaymentSetupConfiguration.mm: Added.

(WebKitAdditions::toPlatformConfiguration):
(WebKitAdditions::PaymentSetupConfiguration::PaymentSetupConfiguration):
(WebKitAdditions::PaymentSetupConfiguration::encode const):
(WebKitAdditions::PaymentSetupConfiguration::decode):

  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::finishCreating):
(WebKit::WebPaymentCoordinatorProxy::getSetupFeatures):
(WebKit::WebPaymentCoordinatorProxy::beginApplePaySetup):
(WebKit::WebPaymentCoordinatorProxy::endApplePaySetup):
(WebKit::WebPaymentCoordinatorProxy::platformBeginApplePaySetup):
(WebKit::WebPaymentCoordinatorProxy::platformEndApplePaySetup):

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::finishDecoding):
(IPC::finishEncoding):
(IPC::ArgumentCoder<WebCore::PaymentInstallmentConfiguration>::encode):
(IPC::ArgumentCoder<WebCore::PaymentInstallmentConfiguration>::decode):

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/ApplePay/WebPaymentCoordinator.cpp:

(WebKit::WebPaymentCoordinator::getSetupFeatures):
(WebKit::WebPaymentCoordinator::beginApplePaySetup):
(WebKit::WebPaymentCoordinator::endApplePaySetup):

  • WebProcess/ApplePay/WebPaymentCoordinator.h:
6:24 PM Changeset in webkit [260716] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

Commit the scrolling tree from the main thread
https://bugs.webkit.org/show_bug.cgi?id=211026
<rdar://problem/62374855>

Reviewed by Darin Adler.

ScrollingCoordinatorMac::commitTreeStateIfNeeded() passed the new state tree to
the scrolling thread which then did the commit (which updates the scrolling tree
from the state tree). However, applyLayerPositions() immediately waited for that
commit to complete, blocking the main thread anyway.

We might as well just commit the scrolling tree on the main thread. ScrollingTree::commitTreeState()
locks m_treeMutex, so this is still safe. Lock contention with the scrolling or event dispatcher
threads should be rare; those threads are both mostly responsive.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::scrollingTreeAsText const):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::waitForScrollingTreeCommit): Deleted.

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::commitTreeState): Deleted.
(WebCore::ThreadedScrollingTree::incrementPendingCommitCount): Deleted.
(WebCore::ThreadedScrollingTree::decrementPendingCommitCount): Deleted.
(WebCore::ThreadedScrollingTree::waitForPendingCommits): Deleted.
(WebCore::ThreadedScrollingTree::waitForScrollingTreeCommit): Deleted.
(WebCore::ThreadedScrollingTree::applyLayerPositions): Deleted.

  • page/scrolling/ThreadedScrollingTree.h:
  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::commitTreeStateIfNeeded):

  • page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp:

(WebCore::ScrollingCoordinatorNicosia::commitTreeState):

6:01 PM Changeset in webkit [260715] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WTF

Unreviewed. Remove the bulid warnings below since r260707.
warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare]

  • wtf/URL.cpp:

(WTF::URL::setHost):
(WTF::URL::setHostAndPort):
(WTF::URL::setUser):
(WTF::URL::setPassword):

5:31 PM Changeset in webkit [260714] by ysuzuki@apple.com
  • 5 edits in trunk/Source/WebCore

Use static initialized Lock instead of LazyNeverDestroyed<Lock>
https://bugs.webkit.org/show_bug.cgi?id=211010

Reviewed by Mark Lam.

WTF::Lock can be static-initialized, so no need to use LazyNeverDestroyed<Lock>.

  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::instancesMutex):

  • Modules/webgpu/WebGPUPipeline.cpp:

(WebCore::WebGPUPipeline::instancesMutex):

  • html/canvas/CanvasRenderingContext.cpp:

(WebCore::CanvasRenderingContext::instancesMutex):

  • html/canvas/WebGLProgram.cpp:

(WebCore::WebGLProgram::instancesMutex):

5:13 PM Changeset in webkit [260713] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening, temporarily skip WebInspector tests after r210942 and r260696
https://bugs.webkit.org/show_bug.cgi?id=211035

Unreviewed gardening.

  • platform/gtk/TestExpectations:
5:00 PM Changeset in webkit [260712] by Darin Adler
  • 24 edits in trunk

[Cocoa] Deal with another round of Xcode upgrade checks
https://bugs.webkit.org/show_bug.cgi?id=211027

Reviewed by Alexey Proskuryakov.

Source/bmalloc:

  • bmalloc.xcodeproj/project.pbxproj: Bump the upgrade check version.

Add a harmless base localization; this project contains nothing localized.

Source/JavaScriptCore:

  • JavaScriptCore.xcodeproj/project.pbxproj: Bump the upgrade check version.

Add a harmless base localization; this project contains nothing localized.

Source/ThirdParty:

  • gtest/xcode/gtest.xcodeproj/project.pbxproj: Bump the upgrade check version.

Add a harmless base localization, rename English localization to en,
remove Japanese, French, German; this project contains nothing localized.

Source/ThirdParty/ANGLE:

  • ANGLE.xcodeproj/project.pbxproj: Bump the upgrade check version.

Add a harmless base localization, rename English localization to en,
remove Japanese, French, German; this project contains nothing localized.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj: Bump the upgrade check version.

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj: Bump the upgrade check version.

Source/WebInspectorUI:

  • WebInspectorUI.xcodeproj/project.pbxproj: Bump the upgrade check version.

Add a harmless base localization; this project contains nothing localized.

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj: Bump the upgrade check version.

Add a base localization.

Source/WebKitLegacy:

  • WebKitLegacy.xcodeproj/project.pbxproj: Bump the upgrade check version.

Source/WTF:

  • WTF.xcodeproj/project.pbxproj: Bump the upgrade check version.

Add a harmless base localization; this project contains nothing localized.

Tools:

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Bump the upgrade check version.
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Bump the upgrade check version.

Add a harmless base localization; this project contains nothing localized. Also let the
script sort the project.

  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Bump the upgrade check version.

Add a harmless base localization; this project contains nothing localized. Also let the
script sort the project.

4:56 PM Changeset in webkit [260711] by ysuzuki@apple.com
  • 4 edits
    2 adds in trunk

[JSC] Add fast path for BigInt32 left-shift
https://bugs.webkit.org/show_bug.cgi?id=211029

Reviewed by Saam Barati.

JSTests:

  • stress/bigint-left-shift-overflow.js: Added.

(shouldBe):
(leftShift):
(noInline):

  • stress/bigint-right-shift-large.js: Added.

(shouldBe):

Source/JavaScriptCore:

Currently, the left-shift operation misses the fast path for BigInt32 <> BigInt32 case. This patch adds it. We also fixes
prediction-propagation for left/right shift to use existing heap prediction instead of polluting the result with SpecBigInt.
This offer 4.5% improvement in microbenchmarks/sunspider-sha1-big-int.js.

  • dfg/DFGPredictionPropagationPhase.cpp:
  • runtime/Operations.h:

(JSC::shift):

4:47 PM Changeset in webkit [260710] by Ross Kirsling
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed fix for JSC Debug tests following r210853.

  • runtime/IntlObject.cpp:

(JSC::canonicalizeLanguageTag):
(JSC::canonicalizeLocaleList):
(JSC::defaultLocale):
Deal with unchecked exception by moving tryGetUtf8 call out of canonicalizeLanguageTag; it's meant to
verify the user input from canonicalizeLocaleList and needn't change the noexcept-ness of defaultLocale.

2:28 PM Changeset in webkit [260709] by commit-queue@webkit.org
  • 123 edits in trunk/Source

Prepare to remove automatic URL->String conversion operators
https://bugs.webkit.org/show_bug.cgi?id=211007

Patch by Alex Christensen <achristensen@webkit.org> on 2020-04-25
Reviewed by Darin Adler.

Source/JavaScriptCore:

  • API/JSAPIGlobalObject.mm:

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

  • API/JSScript.mm:

(validateBytecodeCachePath):
(+[JSScript scriptOfType:memoryMappedFromASCIIFile:withSourceURL:andBytecodeCache:inVirtualMachine:error:]):

  • inspector/ScriptDebugServer.cpp:

(Inspector::ScriptDebugServer::sourceParsed):

  • parser/Nodes.h:

(JSC::ScopeNode::sourceURL const):

  • runtime/CachedTypes.cpp:

(JSC::CachedSourceProviderShape::encode):

  • runtime/Error.cpp:

(JSC::addErrorInfo):

  • runtime/ScriptExecutable.h:

(JSC::ScriptExecutable::sourceURL const):

Source/WebCore:

  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::requestFromInfo):

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::urlString const):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::fetch):

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::create):

  • accessibility/AccessibilityImageMapLink.cpp:

(WebCore::AccessibilityImageMapLink::stringValueForMSAA const):

  • bindings/IDLTypes.h:

(WebCore::IDLString::isNullValue):

  • bindings/js/CachedScriptSourceProvider.h:

(WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider):

  • bindings/js/JSDOMConvertStrings.h:

(WebCore::JSConverter<IDLDOMString>::convert):
(WebCore::Converter<IDLUSVString>::convert):
(WebCore::JSConverter<IDLUSVString>::convert):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::evaluateInWorld):
(WebCore::ScriptController::evaluateModule):
(WebCore::ScriptController::callInWorld):
(WebCore::ScriptController::executeIfJavaScriptURL):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneSerializer::write):

  • css/CSSCursorImageValue.cpp:

(WebCore::CSSCursorImageValue::updateCursorElement):

  • css/CSSImageValue.cpp:

(WebCore::CSSImageValue::customCSSText const):
(WebCore::CSSImageValue::createDeprecatedCSSOMWrapper const):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeFontFaceSrcURI):

  • dom/Document.cpp:

(WebCore::Document::processHttpEquiv):

  • dom/ExtensionStyleSheets.cpp:

(WebCore::createExtensionsStyleSheet):

  • dom/InlineStyleSheetOwner.cpp:

(WebCore::InlineStyleSheetOwner::createSheet):

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::requestModuleScript):
(WebCore::ScriptElement::executeClassicScript):

  • dom/StyledElement.cpp:

(WebCore::StyledElement::styleAttributeChanged):

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::sanitizeMarkupWithArchive):
(WebCore::WebContentReader::readWebArchive):

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::formAction const):

  • html/HTMLFrameElementBase.cpp:

(WebCore::HTMLFrameElementBase::canLoadURL const):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::shouldLoadLink):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::selectNextSourceChild):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::canLoadURL const):

  • html/parser/XSSAuditor.cpp:

(WebCore::XSSAuditor::filterToken):

  • inspector/InspectorAuditResourcesObject.cpp:

(WebCore::InspectorAuditResourcesObject::getResources):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::buildArrayForGroupings):

  • inspector/NetworkResourcesData.cpp:

(WebCore::NetworkResourcesData::responseReceived):

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::buildObjectForCachedResource):
(WebCore::InspectorNetworkAgent::willSendRequest):

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::getCookies):
(WebCore::InspectorPageAgent::searchInResources):
(WebCore::InspectorPageAgent::buildObjectForFrameTree):

  • inspector/agents/InspectorWorkerAgent.cpp:

(WebCore::InspectorWorkerAgent::connectToWorkerInspectorProxy):

  • inspector/agents/WebConsoleAgent.cpp:

(WebCore::WebConsoleAgent::didFailLoading):

  • inspector/agents/worker/ServiceWorkerAgent.cpp:

(WebCore::ServiceWorkerAgent::getInitializationInfo):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::subresources const):

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::clientRedirectDestinationForHistory const):
(WebCore::DocumentLoader::serverRedirectDestinationForHistory const):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::submitForm):
(WebCore::FrameLoader::receivedFirstData):
(WebCore::FrameLoader::loadInSameDocument):
(WebCore::FrameLoader::loadedResourceFromMemoryCache):
(WebCore::createWindow):

  • loader/HistoryController.cpp:

(WebCore::HistoryController::currentItemShouldBeReplaced const):

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement):
(WebCore::ImageLoader::dispatchPendingBeforeLoadEvent):

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::preloadIfNeeded):
(WebCore::LinkLoader::prefetchIfNeeded):

  • loader/MixedContentChecker.cpp:

(WebCore::MixedContentChecker::checkFormForMixedContent const):

  • loader/NavigationScheduler.cpp:

(WebCore::NavigationScheduler::shouldScheduleNavigation const):
(WebCore::NavigationScheduler::scheduleLocationChange):

  • loader/PingLoader.cpp:

(WebCore::PingLoader::loadImage):
(WebCore::PingLoader::sendPing):

  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::dispatchWillSendRequest):

  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::requestObject):

  • loader/TextTrackLoader.cpp:

(WebCore::TextTrackLoader::load):

  • loader/appcache/ApplicationCache.cpp:

(WebCore::ApplicationCache::addResource):
(WebCore::ApplicationCache::resourceForRequest):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::selectCache):
(WebCore::ApplicationCacheGroup::finishedLoadingMainResource):
(WebCore::ApplicationCacheGroup::didFinishLoadingEntry):
(WebCore::ApplicationCacheGroup::didFailLoadingEntry):
(WebCore::ApplicationCacheGroup::didFinishLoadingManifest):

  • loader/appcache/ApplicationCacheHost.cpp:

(WebCore::ApplicationCacheHost::shouldLoadResourceFromApplicationCache):
(WebCore::ApplicationCacheHost::getApplicationCacheFallbackResource):

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::loadCacheGroup):
(WebCore::ApplicationCacheStorage::findOrCreateCacheGroup):
(WebCore::ApplicationCacheStorage::findInMemoryCacheGroup const):
(WebCore::ApplicationCacheStorage::cacheGroupForURL):
(WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL):
(WebCore::ApplicationCacheStorage::cacheGroupDestroyed):
(WebCore::ApplicationCacheStorage::cacheGroupMadeObsolete):
(WebCore::ApplicationCacheStorage::store):
(WebCore::ApplicationCacheStorage::deleteCacheForOrigin):

  • loader/archive/ArchiveResourceCollection.cpp:

(WebCore::ArchiveResourceCollection::addAllResources):
(WebCore::ArchiveResourceCollection::addResource):
(WebCore::ArchiveResourceCollection::archiveResourceForURL):

  • loader/cache/CachedCSSStyleSheet.cpp:

(WebCore::CachedCSSStyleSheet::didAddClient):
(WebCore::CachedCSSStyleSheet::checkNotify):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::cachedResource const):
(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):
(WebCore::CachedResourceLoader::notifyFinished):

  • loader/cache/CachedXSLStyleSheet.cpp:

(WebCore::CachedXSLStyleSheet::didAddClient):
(WebCore::CachedXSLStyleSheet::checkNotify):

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::checkOrEnableIfNeeded const):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::setLocation):
(WebCore::DOMWindow::createWindow):
(WebCore::DOMWindow::open):

  • page/Location.cpp:

(WebCore::Location::reload):

  • page/PageSerializer.cpp:

(WebCore::PageSerializer::retrieveResourcesForProperties):

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::shouldIgnoreHost):

  • page/SecurityPolicy.cpp:

(WebCore::SecurityPolicy::shouldInheritSecurityOriginFromOwner):
(WebCore::SecurityPolicy::isBaseURLSchemeAllowed):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation const):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:

(WebCore::MediaPlayerPrivateAVFoundation::assetURL const):

  • platform/network/BlobRegistryImpl.cpp:

(WebCore::BlobRegistryImpl::writeBlobToFilePath):

  • platform/network/mac/ResourceErrorMac.mm:

(WebCore::ResourceError::platformLazyInit):

  • storage/StorageEventDispatcher.cpp:

(WebCore::StorageEventDispatcher::dispatchSessionStorageEvents):
(WebCore::StorageEventDispatcher::dispatchLocalStorageEvents):

  • svg/SVGImageLoader.cpp:

(WebCore::SVGImageLoader::sourceURI const):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadSynchronously):

  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::scope const):

  • workers/service/ServiceWorkerRegistrationKey.cpp:

(WebCore::ServiceWorkerRegistrationKey::hash const):
(WebCore::ServiceWorkerRegistrationKey::isMatching const):

  • workers/service/context/ServiceWorkerDebuggable.cpp:

(WebCore::ServiceWorkerDebuggable::ServiceWorkerDebuggable):

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::startScriptFetch):

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::send):

Source/WebKit:

  • Shared/API/APIError.h:

(API::Error::failingURL const):

  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toCopiedURLAPI):

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(setUpPagePolicyClient):

  • UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm:

(WebKit::reportAnErrorURL):

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::requestUserMediaAuthorizationForFrame):
(WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::readURLFromPasteboard):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::cancel):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didExplicitOpenForFrame):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::createNewPage):

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:

(-[WKWebProcessPlugInFrame URL]):

  • WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:

(WebKit::NetscapePluginStream::didReceiveResponse):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::clickedLink):
(WebKit::PDFPlugin::openWithNativeApplication):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::performURLRequest):
(WebKit::PluginView::performJavaScriptURLRequest):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect):
(WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
(WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::info const):

  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::setItem):
(WebKit::StorageAreaMap::removeItem):
(WebKit::StorageAreaMap::clear):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::origin):

Source/WebKitLegacy/mac:

  • DOM/DOMDocument.mm:

(-[DOMDocument URL]):

  • DOM/DOMHTMLAnchorElement.mm:

(-[DOMHTMLAnchorElement href]):

  • DOM/DOMHTMLAreaElement.mm:

(-[DOMHTMLAreaElement href]):

  • DOM/DOMHTMLEmbedElement.mm:

(-[DOMHTMLEmbedElement src]):

  • DOM/DOMHTMLFormElement.mm:

(-[DOMHTMLFormElement action]):

  • DOM/DOMHTMLFrameElement.mm:

(-[DOMHTMLFrameElement src]):
(-[DOMHTMLFrameElement location]):

  • DOM/DOMHTMLHtmlElement.mm:

(-[DOMHTMLHtmlElement manifest]):

  • DOM/DOMHTMLIFrameElement.mm:

(-[DOMHTMLIFrameElement src]):

  • DOM/DOMHTMLImageElement.mm:

(-[DOMHTMLImageElement longDesc]):
(-[DOMHTMLImageElement src]):
(-[DOMHTMLImageElement currentSrc]):
(-[DOMHTMLImageElement lowsrc]):

  • DOM/DOMHTMLInputElement.mm:

(-[DOMHTMLInputElement src]):

  • DOM/DOMHTMLLinkElement.mm:

(-[DOMHTMLLinkElement href]):

  • DOM/DOMHTMLMediaElement.mm:

(-[DOMHTMLMediaElement src]):
(-[DOMHTMLMediaElement currentSrc]):

  • DOM/DOMHTMLModElement.mm:

(-[DOMHTMLModElement cite]):

  • DOM/DOMHTMLObjectElement.mm:

(-[DOMHTMLObjectElement data]):

  • DOM/DOMHTMLQuoteElement.mm:

(-[DOMHTMLQuoteElement cite]):

  • DOM/DOMHTMLScriptElement.mm:

(-[DOMHTMLScriptElement src]):

  • DOM/DOMHTMLVideoElement.mm:

(-[DOMHTMLVideoElement poster]):

  • DOM/DOMNode.mm:

(-[DOMNode baseURI]):

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::updateGlobalHistory):
(WebFrameLoaderClient::setTitle):

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController _animationControllerForDataDetectedLink]):

  • WebView/WebNotification.mm:

(-[WebNotification iconURL]):

  • WebView/WebScriptDebugger.mm:

(WebScriptDebugger::sourceParsed):
(toNSURL): Deleted.

Source/WTF:

Too many bugs have been caused by the compiler finding a way to make a String from a URL without being visible in the code.
This does all the easy things to prepare to remove operator String& and operator NSString*.
The hard things will be done in the smaller patch that actually removes them.

  • wtf/URL.cpp:

(WTF::URL::protocolIsJavaScript const):

  • wtf/URL.h:
12:13 PM Changeset in webkit [260708] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][TFC] Add vertical-align: baseline support
https://bugs.webkit.org/show_bug.cgi?id=211024

Reviewed by Antti Koivisto.

Source/WebCore:

Adjust the padding with the baseline offset when the cell is baseline aligned (as opposed to the initial value of 'middle').

Test: fast/layoutformattingcontext/table-basic-row-vertical-align-baseline.html

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace):

  • layout/tableformatting/TableGrid.h:

(WebCore::Layout::TableGrid::Cell::setBaselineOffset):
(WebCore::Layout::TableGrid::Cell::baselineOffset const):

LayoutTests:

  • fast/layoutformattingcontext/table-basic-row-vertical-align-baseline-expected.txt: Added.
  • fast/layoutformattingcontext/table-basic-row-vertical-align-baseline.html: Added.
11:01 AM Changeset in webkit [260707] by Darin Adler
  • 89 edits in trunk

Move URL to use StringView when returning substrings of the URL
https://bugs.webkit.org/show_bug.cgi?id=210431

Reviewed by Anders Carlsson.

LayoutTests/imported/w3c:

  • web-platform-tests/url/url-setters-expected.txt: Updated expected results for progression in

correct behavior when port numbers are >65535. I didn't originally intend to make this improvement,
but it fell out naturally from the refactoring changes.

Source/WebCore:

  • Modules/cache/DOMCacheEngine.cpp:

(WebCore::DOMCacheEngine::matchURLs): Removed unneeded calls to hasQuery.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::initializeWith): Use hasCredentials.

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::redirect): Use hasCredentials.

  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::isValidURLBasedPaymentMethodIdentifier): Use hasCredentials.

  • Modules/plugins/YouTubePluginReplacement.cpp:

(WebCore::createYouTubeURL): Take StringView.
(WebCore::queryKeysAndValues): Take StringView.
(WebCore::processAndCreateYouTubeURL): Use auto since URL pieces are
now returned as StringView.
(WebCore::YouTubePluginReplacement::youTubeURLFromAbsoluteURL):
Use StringView and makeString rather than StringBuilder.

  • Modules/websockets/WebSocketHandshake.cpp:

(WebCore::resourceName): Use queryWithLeadingQuestionMark.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::internalLinkElement const):
Use StringView.

  • dom/Document.cpp:

(WebCore::Document::setURL): Use setHostAndPort.

  • dom/Element.cpp:

(WebCore::Element::findAnchorElementForLink): Update since
fragmentIdentifier returns StringView.

  • dom/TreeScope.cpp: Added a comment.
  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::replaceRichContentWithAttachments): Update since
lastPathComponent returns a StringView. Also got rid of some strange
use of AtomString that was not necessary and used WTFMove more.

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::writeImageToPasteboard): Update since
lastPathComponent returns a StringView.

  • html/HTMLAttachmentElement.cpp:

(WebCore::HTMLAttachmentElement::attachmentTitleForDisplay const):
Use makeString instead of StringBuilder, and StringView instead of
String for name and extension values.

  • html/HTMLPlugInElement.cpp:

(WebCore::pluginReplacementForType): Update since lastPathComponent
returns a StringView.

  • html/MediaFragmentURIParser.cpp:

(WebCore::MediaFragmentURIParser::parseFragments): Update since
fragmentIdentifier returns a StringView.

  • html/URLUtils.h: Changed many functions to take a StringView, changed

various other functions to call toString, since the underlying URL
function now returns a StringView. Updated names since "pass" is now
"password".
(WebCore::countASCIIDigits): Added. Replaces unusual function
named parsePortFromStringPosition because we can use StringView now
and so don't need such an unusual function.

  • loader/AdClickAttribution.cpp:

(WebCore::AdClickAttribution::parseConversionRequest): Use hasCredentials.
Also removed unnecessary use of ASCIILiteral that hurts performance
a tiny bit.
(WebCore::AdClickAttribution::urlForTesting const): Use makeString
instead of StringBuilder.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::validateCrossOriginRedirectionURL): Use hasCredentials.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::loadRequest): Use hasCredentials.

  • loader/FormSubmission.cpp:

(WebCore::appendMailtoPostFormDataToURL): Update since query returns
StringView.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadInSameDocument): Use equalRespectingNullity on
fragment identifiers to preserve behavior, since at this time
StringView == StringView does not respect nullity, but String == String does.

  • loader/appcache/ApplicationCacheHost.cpp:

(WebCore::ApplicationCacheHost::createFileURL): Use fileURLWithFileSystemPath.

  • loader/appcache/ManifestParser.cpp:

(WebCore::manifestPath): Return a StringView.
(WebCore::parseManifest): Use StringView.

  • loader/cache/CachedFont.cpp:

(WebCore::CachedFont::calculateItemInCollection const): Update since
fragmentIdentifer returns a StringView.

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::splitFragmentIdentifierFromRequestURL): Ditto.

  • page/FrameView.cpp:

(WebCore::FrameView::scrollToFragment): Ditto.
(WebCore::FrameView::scrollToFragmentInternal): Updated log message.

  • page/History.cpp:

(WebCore::History::stateObjectAdded): Updated for URL::password name change
and to use the new stringWithoutQueryOrFragmentIdentifier rather than the
old equalIgnoringQueryAndFragment.

  • page/Location.cpp:

(WebCore::Location::href const): Use removeCredentials.
(WebCore::Location::port const): Streamlined.
(WebCore::Location::pathname const): Use an ASCIILiteral.
(WebCore::Location::search const): Use queryWithLeadingQuestionMark.
(WebCore::Location::hash const): Use fragmentIdentifierWithLeadingNumberSign.
(WebCore::Location::setPort): Use parseUInt16.

  • page/UserContentURLPattern.cpp: Coding style tweaks.
  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::appendFileExtensionIfNecessary):
Use contains instead of reverseFind to check for a period in the filename.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::load): Updated since lastPathComponent is a StringView.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::convertToInternalProtocol): Updated to use makeString since
setProtocol takes a StringView.

  • platform/network/ResourceHandleInternal.h: Renamed m_pass to m_password

and call password instead of pass.

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::removeCredentials): Use removeCredentials.

  • platform/network/cf/ResourceHandleCFNet.cpp:

(WebCore::ResourceHandle::createCFURLConnection): Updated for m_password
name change.
(WebCore::ResourceHandle::willSendRequest): Updated for m_password and
password name changes.
(WebCore::ResourceHandle::tryHandlePasswordBasedAuthentication): Ditto.

  • platform/network/curl/CurlProxySettings.cpp:

(WebCore::CurlProxySettings::setUserPass): Updated for setPassword name change.
(WebCore::createProxyUrl): Use hasCredentials, updated for password name change.

  • platform/network/curl/CurlProxySettings.h:

(WebCore::CurlProxySettings::password const): Updated for password name change.

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::didReceiveAuthenticationChallenge): Updated for
m_password name change.
(WebCore::ResourceHandle::getCredential): Ditto.
(WebCore::ResourceHandle::willSendRequest): Updated for m_password and
password name changes.

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::createNSURLConnection): Updated for m_password
and setPassword name changes.
(WebCore::ResourceHandle::willSendRequest): Ditto.
(WebCore::ResourceHandle::tryHandlePasswordBasedAuthentication): Ditto.

  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::createSoupURI const): Updated for password name change.

  • platform/network/soup/URLSoup.cpp:

(WebCore::soupURIToURL): Updated for setPassword name change.

  • platform/win/PasteboardWin.cpp:

(WebCore::writeURL): Updated since lastPathComponent returns a StringView.
(WebCore::filesystemPathFromUrlOrTitle): Ditto.
(WebCore::Pasteboard::write): Ditto.

  • style/StyleBuilderState.cpp:

(WebCore::Style::BuilderState::createFilterOperations): Updated since
fragmentIdentifier returns a StringView.

  • workers/WorkerLocation.cpp:

(WebCore::WorkerLocation::port const): Streamlined.
(WebCore::WorkerLocation::pathname const): Use an ASCIILiteral.
(WebCore::WorkerLocation::search const): Use queryWithLeadingQuestionMark.
(WebCore::WorkerLocation::hash const): Use fragmentIdentifierWithLeadingNumberSign.

  • workers/service/ServiceWorkerRegistrationKey.cpp:

(WebCore::ServiceWorkerRegistrationKey::ServiceWorkerRegistrationKey):
Updated for hasFragmentIdentifier name change.

  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::topOriginURL): Simplified code to set port.

  • workers/service/server/SWServer.cpp:

(WebCore::originURL): Ditto.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::open): Updated for setPassword name change.

Source/WebKit:

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::checkRedirection): Use hasCredentials.
(WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const):
Remove use of ASCIILiteral for setProtocol.

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl): Updated for
password name change.
(WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection): Ditto.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Updated
for password name change.
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection): Ditto.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup): Updated for
password name change.
(WebKit::NetworkDataTaskSoup::applyAuthenticationToRequest): Ditto.
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection): Ditto.
(WebKit::NetworkDataTaskSoup::shouldAllowHSTSPolicySetting const):
Use != to compare hosts, rather than hostsAreEqual.
(WebKit::NetworkDataTaskSoup::shouldAllowHSTSProtocolUpgrade const):

Refactored to use
to match the function above.
  • Shared/API/APIURL.h:

(API::URL::host const): Removed validity check; WTF::URL::host
returns null if the URL is invalid.
(API::URL::protocol const): Ditto.
(API::URL::path const): Ditto.
(API::URL::lastPathComponent const): Ditto. Also added toString
since WTF::URL::lastPathComponent now returns a StringView.

  • UIProcess/Cocoa/DownloadClient.mm:

(WebKit::DownloadClient::didFinish): Use hasFragmentIdentifier.

  • UIProcess/DeviceIdHashSaltStorage.cpp:

(WebKit::DeviceIdHashSaltStorage::loadStorageFromDisk):
Refactored a bit and use fileURLWithFileSystemPath and
updated since lastPathComponent returns a StringView.

  • UIProcess/Plugins/PluginInfoStore.cpp:

(WebKit::pathExtension): Updated since lastPathComponent
returns a StringView. Refactored a little.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
Use truncatedForUseAsBase.
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
Use != to compare hosts, rather than hostsAreEqual.
(WebKit::WebPageProxy::decidePolicyForNewWindowAction): Ditto.
(WebKit::WebPageProxy::createNewPage): Ditto.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::assumeReadAccessToBaseURL):
Use truncatedForUseAsBase.

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::initializeAppBoundDomains):
Don't use ASCIILiteral for argument to setProtocol.

  • WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:

(WebKit::WebMediaKeyStorageManager::getMediaKeyOrigins):
Use fileURLWithFileSystemPath, also refactored a bit.

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::installPDFDocument): Updated since
fragmentIdentifier returns a StringView.

  • WebProcess/WebCoreSupport/WebContextMenuClient.cpp:

(WebKit::WebContextMenuClient::searchWithGoogle): Streamlined
the implementation a bit.

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::WebDragClient::declareAndWriteDragImage):
Updated since lastPathComponent returns a StringView.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebFrameLoaderClient.mm:

(shouldTryAppLink): Compare hosts with == rather than using hostsAreEqual.

  • WebView/WebFrame.mm:

(-[WebFrame _documentFragmentForImageData:withRelativeURLPart:andMIMEType:]):
Updated since fakeURLWithRelativePart takes a StringView. Also use RetainPtr
instead of an explicit call to release.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _web_documentFragmentFromPasteboard:pasteboardType:imageMIMEType:]):
Updated since fakeURLWithRelativePart takes a StringView. No conversion
directly from NSString to StringView, so we have to explicitly use a String.

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController _defaultAnimationController]): Update
since protocolIs takes a StringView. No conversion directly from
NSString to StringView, so we have to explicitly use a String.

Source/WebKitLegacy/win:

  • Plugins/PluginDatabase.cpp:

(WebCore::PluginDatabase::PluginDatabase): Moved initialization of
m_persistentMetadataCacheIsLoaded to the class definition.
(WebCore::PluginDatabase::MIMETypeForExtension const): Take StringView.
(WebCore::PluginDatabase::findPlugin): Use StringView.

  • Plugins/PluginDatabase.h: Changed MIMETypeForExtension to take

a StringView. Took out some unneeded declarations. Initialized
m_persistentMetadataCacheIsLoaded here in the class definition.

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::objectContentType): Use StringView a little more.

  • WebCoreSupport/WebContextMenuClient.cpp:

(WebContextMenuClient::searchWithGoogle): Streamlined the implementation a bit.
(WebContextMenuClient::lookUpInDictionary): Added "using namespace WebCore".

Source/WTF:

  • wtf/URL.cpp: Remove unused CharBuffer type. Remove UCharBuffer

type and write the type explicitly in the 3 places it's used.
Removed the invalidPortNumber constant, since we use Optional
instead of a special port number now.
(WTF::copyASCII): Remove unnecessary special case for empty string.
Tweaked coding style and comment a bit.
(WTF::URL::URL): Streamlined by getting rid of a local variable.
(WTF::shouldTrimFromURL): Tweaked coding style.
(WTF::URL::lastPathComponent const): Return a StringView.
Also, use the pathStart function for clarity.
(WTF::URL::port const): Use a StringView to call parseUInt16.
(WTF::URL::protocolHostAndPort const): Optimized to always allocate
the string in the right size rather than removing characters from it
after creating it.
(WTF::decodeEscapeSequence): Added. Factored out from the function
below to make it a little more readable.
(WTF::decodeEscapeSequencesFromParsedURL): Convert a null StringView
to a null String rather than an empty String, use a stack buffer and
the helper function above, and added some FIXME comments about
encoding handling.
(WTF::URL::user const): Simplified by calling encodedUser.
(WTF::URL::password const): Simplified by calling encodedPassword.
(WTF::URL::encodedUser const): Return a StringView.
(WTF::URL::encodedPassword const): Ditto. Also renamed from encodedPass.
(WTF::URL::fragmentIdentifier const): Ditto.
(WTF::URL::hasFragmentIdentifier const): Moved to header so it can
be inlined.
(WTF::URL::truncatedForUseAsBase const): Renamed from baseAsString.
This function is currently only used with local file URLs and it's
not perfectly clear to me precisely what it is for, hence the name
is not so great.
(WTF::URL::fileSystemPath const): Removed unneeded check for validity
since isLocalFile does that check. Removed unneeded typecast now that
path returns a StringView.
(WTF::defaultPortForProtocolMapForTesting): Deleted.
(WTF::ensureDefaultPortForProtocolMapForTesting): Deleted.
(WTF::registerDefaultPortForProtocolForTesting): Deleted.
(WTF::clearDefaultPortForProtocolMapForTesting): Deleted.
(WTF::defaultPortForProtocol): Deleted.
(WTF::isDefaultPortForProtocol): Deleted.
(WTF::protocolIsInternal): Rewrote to take a StringView. Before it
was written as a template that looked like it supported classes other
than String, but actually would crash if called on a StringView.
(WTF::URL::protocolIs const): Removed unneeded explicit cast to StringView.
(WTF::URL::query const): Return a StringView.
(WTF::URL::path const): Return a StringView, use the pathStart
function for clarity.
(WTF::URL::setProtocol): Use a toStringWithoutCopying to save some
work when making the protocol canonical. Call parse instead of
creating a URLParser here.
(WTF::URL::credentialsEnd const): Added. Helper for various functions
that manipulate the credentials section.
(WTF::URL::setHost): Take StringView. Streamlined the code by using
StringView::contains, by using makeString rather than StringBuilder,
and by calling parse instead of creating a URLParser here.
(WTF::URL::removePort): Deleted, since setPort takes an Optional now.
(WTF::URL::setPort): Take Optional<uint16_t>. Call parse instead of
creating a URLParser here.
(WTF::URL::removeHostAndPort): Deleted. Callers can pass a null
StringView to setHostAndPort instead.
(WTF::URL::setHostAndPort): Take StringView. Don't remove the old
host and port in the nomral case where we end up overwriting the entire
URL at the end of the function anyway. Use parseUInt16 instead of
toIntStrict to check port number for validity, which makes sure we will
reject port numbers larger than 65535. Use makeString instead of
StringBuilder and call parse rather than creating a URLParser here.
(WTF::parse): Added. Helper function for when we create a new string
and want to parse it as the new contents of the URL. Used in almost
every setter function.
(WTF::URL::remove): Added. Helper function for efficiently removing
a piece of the URL string and re-parsing. Used in many setter functions.
(WTF::URL::setUser): Take StringView. Use makeString instead of
StringBuilder, and parse and remove instead of creating a URLParser here.
(WTF::URL::setPassword): Renamed from setPass. Take StringView.
Use makeString instead of StringBuilder, and parse and remove instead of
creating a URLParser here.
(WTF::URL::removeCredientials): Added. Efficiently removes both the
user name and password if either is present.
(WTF::URL::setFragmentIdentifier): Use parse instead of creating
a URL parser here.
(WTF::URL::removeFragmentIdentifier): Removed unnecessary checks for
things already optimized by String::left. Could later consider merging
this in with setFragmentIdentifier, using a null vs. empty distinction,
but not doing that for now.
(WTF::URL::setQuery): Take StringView.
(WTF::URL::setPath): Take StringView.
(WTF::stringWithoutQueryOrFragmentIdentifier): Added.
(WTF::stringWithoutFragmentIdentifier): Added.
(WTF::equalIgnoringFragmentIdentifier): Simplified implementation by
using stringWithoutFragmentIdentifier.
(WTF::equalIgnoringQueryAndFragment): Deleted.
(WTF::hostsAreEqual): Deleted.
(WTF::URL::isMatchingDomain const): Take StringView.
(WTF::protocolIs): Take StringView.
(WTF::URL::protocolIs): Moved to inline in the header.
(WTF::URL::strippedForUseAsReferrer const): Rewrite for efficiency.
(WTF::protocolIsJavaScript): Moved to inline in the header.
(WTF::protocolIsInHTTPFamily): Take StringView.
(WTF::aboutBlankURL): Use ASCIILiteral.
(WTF::aboutSrcDocURL): Use ASCIILiteral.
(WTF::portAllowed): Removed 65535 as a blocked port; wasn't needed.
(WTF::mimeTypeFromDataURL): Take StringView.
(WTF::URL::stringCenterEllipsizedToLength const): Tweaked style.
(WTF::URL::fakeURLWithRelativePart): Take StringView.
(WTF::URL::fileURLWithFileSystemPath): Take StringView..
(WTF::URL::queryWithLeadingQuestionMark const): Added.
(WTF::URL::fragmentIdentifierWithLeadingNumberSign const): Added.
(WTF::URL::hostIsIPAddress): Tweak coding style.

  • wtf/URL.h: Made URLTextEncoding destructor protected. Removed

unused forward declaration of URLHash structure. Use WTF_EXPORT_PRIVATE
on functions from URL rather than on the whole class, since the style
checker told me to do that. Moved some inline function bodies out of
the class definition for clarity and to keep the style checker happy.
Updated many arguemnts from String to StringView and return values for
substrings of the URL to StringView. Removed some unused functions and
some obsolete comments.

  • wtf/cf/CFURLExtras.cpp:

(WTF::isCFURLSameOrigin): Use hasCredentials.

  • wtf/text/StringView.cpp:

(WTF::StringView::endsWith const): Added.
(WTF::parseUInt16): Added.
(WTF::equalRespectingNullity): Added.
(WTF::StringView::contains const): Added overload that takes a
const char* so the call site doesn't have to convert it to a StringView.

  • wtf/text/StringView.h: Updated for the additions above.

Also added a default start of 0 to the find function.

  • wtf/text/WTFString.cpp:

(WTF::charactersToIntStrict): Removed unneeded explicit template argument.
(WTF::charactersToUIntStrict): Ditto.
(WTF::charactersToInt64Strict): Ditto.
(WTF::charactersToUInt64Strict): Ditto.
(WTF::charactersToIntPtrStrict): Ditto.
(WTF::charactersToInt): Ditto.
(WTF::charactersToUInt): Ditto.
(WTF::charactersToInt64): Ditto.
(WTF::charactersToUInt64): Ditto.
(WTF::charactersToIntPtr): Ditto.

Tools:

  • TestWebKitAPI/Tests/WTF/URL.cpp: Removed the test for

equalIgnoringQueryAndFragment since we removed that function.
Updated for rename of URL::password from URL::pass.
Updated arguments to isMatchingDomain to pass literals that can be converted
to StringView rather than ASCIILiteral, which StringView doesn't yet support.

  • TestWebKitAPI/Tests/WebCore/URLParserTextEncoding.cpp:

(TestWebKitAPI::checkURL): Updated for rename of URL::password from URL::pass.
(TestWebKitAPI::checkRelativeURL): Ditto.
(TestWebKitAPI::checkURLDifferences): Ditto.
(TestWebKitAPI::checkRelativeURLDifferences): Ditto.
(TestWebKitAPI::testUserPassword): Ditto.

10:03 AM Changeset in webkit [260706] by Chris Fleizach
  • 3 edits in trunk/Source/WebCore

AX: Improve tracking of Element* pointers in AXObjectCache with WeakHashSet
https://bugs.webkit.org/show_bug.cgi?id=210879

Reviewed by Daniel Bates.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::handleFocusedUIElementChanged):
(WebCore::filterListForRemoval):
(WebCore::AXObjectCache::performDeferredCacheUpdate):

  • accessibility/AXObjectCache.h:
9:08 AM Changeset in webkit [260705] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

[Web Animations] KeyframeEffect should ensure its target remains alive
https://bugs.webkit.org/show_bug.cgi?id=211019

Patch by Antoine Quint <Antoine Quint> on 2020-04-25
Reviewed by Daniel Bates.

Source/WebCore:

Test: webanimations/keyframe-effect-target-kept-alive.html

Make KeyframeEffect::m_target a RefPtr so that assigning an element to effect.target guarantees that element
is kept alive even if there are no other references to that element.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::KeyframeEffect):
(WebCore::KeyframeEffect::setTarget):

  • animation/KeyframeEffect.h:

LayoutTests:

Add a test that creates a KeyframeEffect targeting an element with no other reference and trigger
garbage collection to check that the effect's target exists. This test would have failed prior to
this patch's code changes.

  • webanimations/keyframe-effect-target-kept-alive-expected.txt: Added.
  • webanimations/keyframe-effect-target-kept-alive.html: Added.
8:46 AM Changeset in webkit [260704] by ddkilzer@apple.com
  • 7 edits in trunk/Source/WebKit

IPC::Decoder::isInvalid() should be renamed to isValid()
<https://webkit.org/b/211000>

Reviewed by Darin Adler.

Negative logic is more difficult to reason about than positive
logic.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::dispatchMessage):
(IPC::Connection::dispatchWorkQueueMessageReceiverMessage):
(IPC::Connection::dispatchThreadMessageReceiverMessage):
(IPC::Connection::dispatchSyncMessage):

  • Platform/IPC/Connection.h:

(IPC::Connection::sendWithAsyncReply):

  • Platform/IPC/Decoder.cpp:

(IPC::Decoder::create):

  • Platform/IPC/Decoder.h:

(IPC::Decoder::isValid const): Rename from isInvalid()
and invert logic.
(IPC::Decoder::isInvalid const): Rename to isValid().

  • Platform/IPC/MessageSender.h:
  • UIProcess/AuxiliaryProcessProxy.h:

(WebKit::AuxiliaryProcessProxy::sendWithAsyncReply):

  • Change Decoder::isInvalid() to Decoder::isValid() and reverse the Boolean logic.
8:22 AM Changeset in webkit [260703] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][TFC] Cleanup TableFormattingContext::layoutInFlowContent
https://bugs.webkit.org/show_bug.cgi?id=211023

Reviewed by Sam Weinig.

Move some code to dedicated functions.

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutInFlowContent):
(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):
(WebCore::Layout::TableFormattingContext::setUsedGeometryForRows):
(WebCore::Layout::TableFormattingContext::setUsedGeometryForSections):
(WebCore::Layout::TableFormattingContext::layoutCell):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace):
(WebCore::Layout::TableFormattingContext::initializeDisplayBoxToBlank const): Deleted.
(WebCore::Layout::TableFormattingContext::setComputedGeometryForRows): Deleted.
(WebCore::Layout::TableFormattingContext::setComputedGeometryForSections): Deleted.

  • layout/tableformatting/TableFormattingContext.h:
  • layout/tableformatting/TableFormattingContextGeometry.cpp:

(WebCore::Layout::TableFormattingContext::Geometry::cellHeigh const):
(WebCore::Layout::TableFormattingContext::Geometry::computedColumnWidth const):
(WebCore::Layout::TableFormattingContext::Geometry::tableCellHeightAndMargin const): Deleted.

7:46 AM Changeset in webkit [260702] by Diego Pino Garcia
  • 3 edits in trunk/Tools

[Flatpak SDK][EWS] Install dependencies step needs configuration as argument
https://bugs.webkit.org/show_bug.cgi?id=210913

Follow-up on r260560. The same change is needed for EWS bots.

Reviewed by Philippe Normand.

  • BuildSlaveSupport/ews-build/steps.py:

(InstallGtkDependencies): Pass 'configuration' value (Release, Debug).
(InstallWpeDependencies): Pass 'configuration' value (Release, Debug).

7:41 AM Changeset in webkit [260701] by Diego Pino Garcia
  • 1 edit
    6 adds in trunk/LayoutTests

[GTK] Gardening, emit baselines after r260690
https://bugs.webkit.org/show_bug.cgi?id=211022

Unreviewed gardening.

  • platform/gtk/imported/w3c/web-platform-tests/css/css-animations/animation-base-response-001-expected.txt:

Added after r260690.

  • platform/gtk/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any-expected.txt:

Added after r260690.

  • platform/gtk/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker-expected.txt:

Added after r260662.

6:50 AM Changeset in webkit [260700] by commit-queue@webkit.org
  • 2 edits in trunk/JSTests

Skip stress/butterfly-zero-unused-butterfly-properties.js on MIPS
https://bugs.webkit.org/show_bug.cgi?id=211016

Unreviewed Gardening.

Patch by Paulo Matos <Paulo Matos> on 2020-04-25

  • stress/butterfly-zero-unused-butterfly-properties.js:
5:05 AM Changeset in webkit [260699] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Remove the build warning below since r260247.
warning: unused parameter ‘foo’ [-Wunused-parameter]

No new tests, no new behaviors.

  • testing/Internals.cpp:

(WebCore::Internals::hasSandboxIOKitOpenAccessToClass):

2:23 AM Changeset in webkit [260698] by graouts@webkit.org
  • 5 edits in trunk/LayoutTests

Skip legacy media controls tests on macOS and iOS
https://bugs.webkit.org/show_bug.cgi?id=211015
<rdar://problem/62064255>

Unreviewed test gardening.

  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wk2/TestExpectations:
2:14 AM Changeset in webkit [260697] by Ross Kirsling
  • 15 edits
    2 deletes in trunk

[Intl] Locale validation/canonicalization should defer to ICU
https://bugs.webkit.org/show_bug.cgi?id=210853

Reviewed by Darin Adler.

JSTests:

  • stress/intl-collator.js:
  • stress/intl-datetimeformat.js:
  • stress/intl-numberformat.js:
  • stress/intl-object.js:
  • stress/intl-pluralrules.js:
  • stress/intl-relativetimeformat.js:

Adjust tests, since one of the two fixes in r260151 no longer applies
(and certain sensitivities apply to older ICU versions).

  • test262/expectations.yaml:

Mark eight new passes, two new fails, and six changed failures.
It is an unfortunate and baffling truth that the Intl tests of test262 are often not spec tests at all,
but effectively ICU/CLDR regression tests. These are not carrots worth chasing.

Source/JavaScriptCore:

The mappings for locale canonicalization in latest CLDR are sufficiently complex
that it really no longer makes sense not to have ICU do this work for us.

This means the UTS 35 canonicalization desired by ECMA-402 will not be fully achievable until ICU ~67,
but it's better than reaching right into CLDR and pretending that we *are* ICU.
(On this point, we thus align with V8 and diverge from SM.)

Of course, we can still add our own pre-validations / post-canonicalizations if desired.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Scripts/generateIntlCanonicalizeLanguage.py: Removed.
  • runtime/IntlObject.cpp:

(JSC::intlAvailableLocales):
(JSC::intlCollatorAvailableLocales):
(JSC::canonicalizeLanguageTag):
(JSC::canonicalizeLocaleList):
(JSC::defaultLocale):
(JSC::removeUnicodeLocaleExtension):
(JSC::addMissingScriptLocales): Deleted. This one was ostensibly a fix for an old ICU bug.
(JSC::privateUseLangTag): Deleted.
(JSC::preferredLanguage): Deleted.
(JSC::preferredRegion): Deleted.
(JSC::canonicalLangTag): Deleted.

  • ucd/language-subtag-registry.txt: Removed.
1:56 AM Changeset in webkit [260696] by Diego Pino Garcia
  • 4 edits in trunk/Source

Source/WebInspectorUI:
REGRESSION(210942): [GTK][WPE] Unreviewed, EWS build bots fail in compile-webkit step
https://bugs.webkit.org/show_bug.cgi?id=211014

  • CMakeLists.txt: Remove creation of file 'inspector-resources.stamp'.

Source/WebKit:
REGRESSION(210942): [GTK][WPE] EWS build bots fail in compile-webkit step
https://bugs.webkit.org/show_bug.cgi?id=211014

Make command that generates 'InspectorGResourceBundle.xml' depend on target
WebInspectorUI, instead of file 'inspector-resources.stamp'.

  • InspectorGResources.cmake:
1:10 AM Changeset in webkit [260695] by Kocsen Chung
  • 8 edits in branches/safari-610.1.11-branch/Source

Versioning.

1:00 AM Changeset in webkit [260694] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.11.2

Tag Safari-610.1.11.2.

12:47 AM Changeset in webkit [260693] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix internal build by using strcmp instead of using string literal comparison
https://bugs.webkit.org/show_bug.cgi?id=211011

Reviewed by Keith Miller.

Use strcmp for string literal comparison to expect that this is fully handled by compiler and converted into constant at compile time.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

12:24 AM Changeset in webkit [260692] by mark.lam@apple.com
  • 3 edits
    2 adds in trunk

Suppress ASan on DFG::clobberize() to work around an ASan bug.
https://bugs.webkit.org/show_bug.cgi?id=211012
<rdar://problem/62275430>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

ASan was incorrectly thinking that we're accessing invalid stack memory when we're not.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

LayoutTests:

Test is courtesy of Fabien Duchene and Pinki Gyanchandani.

  • js/suppress-asan-on-clobberize-to-workaround-asan-bug-expected.txt: Added.
  • js/suppress-asan-on-clobberize-to-workaround-asan-bug.html: Added.

Apr 24, 2020:

10:04 PM Changeset in webkit [260691] by Diego Pino Garcia
  • 2 edits in trunk/Source/WebKit

[WPE][Debug] Unreviewed, fix build after r260063
https://bugs.webkit.org/show_bug.cgi?id=211009

r260063 removed include of WebProcess.h in WebSocketProvider.cpp,
which broke unified builds in WPE Debug.

  • WebProcess/Network/WebSocketProvider.cpp:
9:58 PM Changeset in webkit [260690] by Alexey Shvayka
  • 90 edits
    1 move
    43 adds
    1 delete in trunk

Fix WASM Error classes and re-sync wpt/wasm/jsapi from upstream
https://bugs.webkit.org/show_bug.cgi?id=210980

Reviewed by Keith Miller.

JSTests:

  • wasm/modules/js-wasm-cycle.js:
  • wasm/modules/wasm-wasm-cycle.js:
  • wasm/stress/too-many-locals.js:

LayoutTests/imported/w3c:

web-platform-tests revision: 028bd8650758

  • web-platform-tests/wasm/jsapi/*: Updated.

Source/JavaScriptCore:

assert_throws_js() harness, which is extensively used by wpt/wasm/jsapi tests,
was recently updated to assert that passed constructors subclass Error in
spec-perfect way.

With this patch, WebAssembly errors have Error as Prototype? of their constructors
and define correct "name" and "message" properties on their prototypes, aligning JSC
with the spec [1], V8 and SpiderMonkey.

[1]: https://webassembly.github.io/spec/js-api/#error-objects

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • wasm/js/WebAssemblyCompileErrorPrototype.cpp:

(JSC::WebAssemblyCompileErrorPrototype::finishCreation):

  • wasm/js/WebAssemblyLinkErrorPrototype.cpp:

(JSC::WebAssemblyLinkErrorPrototype::finishCreation):

  • wasm/js/WebAssemblyRuntimeErrorPrototype.cpp:

(JSC::WebAssemblyRuntimeErrorPrototype::finishCreation):

6:32 PM Changeset in webkit [260689] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

WebPasteboardProxy::getPasteboardStringsForType() and WebPasteboardProxy::readURLFromPasteboard() should check return value of SharedMemory::createHandle()
<https://webkit.org/b/211002>

Reviewed by Wenson Hsieh.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):

  • Check result of SharedMemory::createHandle() and return early on failure.
5:52 PM Changeset in webkit [260688] by Alan Coon
  • 17 edits in branches/safari-610.1.11-branch

Cherry-pick r260486. rdar://problem/62349885

Fix MACCATALYST build failures
https://bugs.webkit.org/show_bug.cgi?id=210815

Reviewed by Tim Horton.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

No new tests, no functional change.

  • Configurations/FeatureDefines.xcconfig:
  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:
  • UIProcess/API/ios/WKWebViewIOS.mm: (-[WKWebView _isShowingVideoPictureInPicture]): (-[WKWebView _mayAutomaticallyShowVideoPictureInPicture]):
  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::applicationDidBecomeActive):

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/PlatformEnable.h:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

5:52 PM Changeset in webkit [260687] by Alan Coon
  • 22 edits in branches/safari-610.1.11-branch

Cherry-pick r260412. rdar://problem/62349885

Fix build failures when video fullscreen and picture-in-picture is disabled
https://bugs.webkit.org/show_bug.cgi?id=210777

Reviewed by Eric Carlson.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Wrap video fullscreen and picture-in-picture related code with "#if ENABLE(VIDEO_PRESENTATION_MODE)".

  • Configurations/FeatureDefines.xcconfig:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoLayerGravity):
  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h:
  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm: (WebCore::VideoLayerManagerObjC::setVideoLayer): (WebCore::VideoLayerManagerObjC::requiresTextTrackRepresentation const): (WebCore::VideoLayerManagerObjC::syncTextTrackBounds): (WebCore::VideoLayerManagerObjC::setTextTrackRepresentation):

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

Wrap video fullscreen and picture-in-picture related code with "#if ENABLE(VIDEO_PRESENTATION_MODE)".

  • Configurations/FeatureDefines.xcconfig:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp: (WebKit::RemoteMediaPlayerProxy::setVideoFullscreenGravity): (WebKit::RemoteMediaPlayerProxy::updateVideoFullscreenInlineImage): (WebKit::RemoteMediaPlayerProxy::setVideoFullscreenMode): (WebKit::RemoteMediaPlayerProxy::videoFullscreenStandbyChanged): (WebKit::RemoteMediaPlayerProxy::setBufferingPolicy):
  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm: (WebKit::RemoteMediaPlayerProxy::prepareForPlayback):
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::prepareForPlayback):

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/PlatformEnable.h:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

5:52 PM Changeset in webkit [260686] by Alan Coon
  • 3 edits
    2 adds in branches/safari-610.1.11-branch

Cherry-pick r260450. rdar://problem/62350884

[Async overflow scroll] Overflow that's hidden on one axis is scrollable on that axis
https://bugs.webkit.org/show_bug.cgi?id=210771
<rdar://problem/62080331>

Reviewed by Tim Horton.

Source/WebCore:

eventCanScrollContents() should check the presence of enabled scrollbars, like
ScrollAnimator::handleWheelEvent() does.

Test: fast/scrolling/mac/async-scroll-overflow-hidden-on-one-axis.html

  • page/scrolling/ScrollingTreeScrollingNode.cpp: (WebCore::ScrollingTreeScrollingNode::eventCanScrollContents const):

LayoutTests:

  • fast/scrolling/mac/async-scroll-overflow-hidden-on-one-axis-expected.txt: Added.
  • fast/scrolling/mac/async-scroll-overflow-hidden-on-one-axis.html: Added.

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

5:52 PM Changeset in webkit [260685] by Alan Coon
  • 2 edits in branches/safari-610.1.11-branch/Source/WebKit

Cherry-pick r260390. rdar://problem/62351354

When SpeculativeLoadManager is destroyed, properly clean up its PendingFrameLoads
https://bugs.webkit.org/show_bug.cgi?id=210759
<rdar://problem/62056856>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-04-20
Reviewed by Darin Adler.

Recent work on the resourceLoadStatistics layout tests increased the amount we swap out the WebsiteDataStore.
When this happens, the NetworkSession is eventually destroyed in the NetworkProcess, sometimes when running the next test.
An assertion was firing in the PendingFrameLoad destructor because it hadn't been marked as complete when it was destroyed.
Rather than remove the assertion, when we destroy the SpeculativeLoadManager (which only happens when a WebsiteDataStore
is destroyed) during a speculative pending frame load, just mark the pending frame load as complete because it is being cancelled.
Marking the pending frame load as complete can tell the SpeculativeLoadManager to mutate m_pendingFrameLoads, which we don't want
to do while iterating, so copy the RefPtrs into a Vector first then iterate that to get them all.

This fixes an assertion that was sometimes hit in http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database.html
but only after running other tests that had initiated speculative pending frame loads. This was ostensibly started by r260322 but is quite unrelated.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::~SpeculativeLoadManager):

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

5:51 PM Changeset in webkit [260684] by Chris Dumez
  • 11 edits in trunk/Source

[iOS] Unable to sign up on twitter.com
https://bugs.webkit.org/show_bug.cgi?id=211003
<rdar://problem/58804852>

Reviewed by Darin Adler.

Source/WebCore:

This is similar to the bug we had on nytimes.com and that was fixed in
r258767. However, instead of a 'resize' event, it is a 'change' event
on a MediaQueryList that is getting twitter.com in a bad state.

The issue is that when we home out of Safari, SpringBoard takes does
a snapshot sequence at various sizes / orientations and this causes
many JS events to get fired (e.g. 'resize', 'orientationchange',
'change', ...), which can get some sites in a bad state. To address
the issue, we now prevent firing of ALL JS events during the
SpringBoard snapshot, instead of merely preventing the 'resize' ones.

  • dom/EventTarget.cpp:

(WebCore::EventTarget::fireEventListeners):

  • page/FrameView.cpp:

(WebCore::FrameView::sendResizeEventIfNeeded):

  • page/Page.h:

(WebCore::Page::shouldFireEvents const):
(WebCore::Page::setShouldFireEvents):
(WebCore::Page::shouldFireResizeEvents const): Deleted.
(WebCore::Page::setShouldFireResizeEvents): Deleted.

Source/WebKit:

  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKApplicationStateTrackingView.mm:

(-[WKApplicationStateTrackingView _willBeginSnapshotSequence]):
(-[WKApplicationStateTrackingView _didCompleteSnapshotSequence]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setShouldFireEvents):
(WebKit::WebPage::setShouldFireResizeEvents): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
5:34 PM Changeset in webkit [260683] by sbarati@apple.com
  • 19 edits
    1 add in trunk

Return BigInt32 whenever we can
https://bugs.webkit.org/show_bug.cgi?id=210922

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/sunspider-sha1-big-int.js: Added.

(hex_sha1):
(b64_sha1):
(str_sha1):
(hex_hmac_sha1):
(b64_hmac_sha1):
(str_hmac_sha1):
(bigIntToInt32):
(sha1_vm_test):
(core_sha1):
(sha1_ft):
(sha1_kt):
(core_hmac_sha1):
(safe_add):
(rol):
(str2binb):
(binb2hex):
(binb2b64):
(run):

Source/JavaScriptCore:

This patch makes it so our runtime functions for big int math on heap
big ints converts the result to a big int 32 when possible.

The inspiration for this patch came from converting SunSpider's sha1 benchmark to
using big ints. I found that that original implementation of big int 32
was a ~35% slowdown here. This patch speeds it up by 86% from ToT, and
36% faster than before big int 32 was introduced.

To make this sound in the DFG/FTL, we are currently reporting that all
HeapBigInt math ops return SpecBigInt, instead of SpecHeapBigInt.
However, we want to do better in a follow up. We need some kind of profiling
system where we determine if we should speculate if the result is big int
32, a heap big int, or both:
https://bugs.webkit.org/show_bug.cgi?id=210982

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGFixupPhase.cpp:

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

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

(JSC::DFG::SpeculativeJIT::compileValueBitNot):
(JSC::DFG::SpeculativeJIT::compileValueBitwiseOp):
(JSC::DFG::SpeculativeJIT::compileValueLShiftOp):
(JSC::DFG::SpeculativeJIT::compileValueBitRShift):
(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileValueSub):
(JSC::DFG::SpeculativeJIT::compileValueMul):
(JSC::DFG::SpeculativeJIT::compileValueDiv):
(JSC::DFG::SpeculativeJIT::compileValueMod):
(JSC::DFG::SpeculativeJIT::compileValuePow):

  • jit/JITOperations.cpp:
  • jsc.cpp:

(functionCreateBigInt32):

  • runtime/BigIntConstructor.cpp:

(JSC::toBigInt):
(JSC::callBigIntConstructor):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::exponentiateHeap):
(JSC::JSBigInt::multiplyHeap):
(JSC::JSBigInt::divideHeap):
(JSC::JSBigInt::unaryMinusHeap):
(JSC::JSBigInt::remainderHeap):
(JSC::JSBigInt::incHeap):
(JSC::JSBigInt::decHeap):
(JSC::JSBigInt::addHeap):
(JSC::JSBigInt::subHeap):
(JSC::JSBigInt::bitwiseAndHeap):
(JSC::JSBigInt::bitwiseOrHeap):
(JSC::JSBigInt::bitwiseXorHeap):
(JSC::JSBigInt::leftShiftHeap):
(JSC::JSBigInt::signedRightShiftHeap):
(JSC::JSBigInt::bitwiseNotHeap):
(JSC::JSBigInt::absoluteAdd):
(JSC::JSBigInt::absoluteSub):
(JSC::JSBigInt::parseInt):
(JSC::JSBigInt::exponentiate): Deleted.
(JSC::JSBigInt::multiply): Deleted.
(JSC::JSBigInt::divide): Deleted.
(JSC::JSBigInt::unaryMinus): Deleted.
(JSC::JSBigInt::remainder): Deleted.
(JSC::JSBigInt::inc): Deleted.
(JSC::JSBigInt::dec): Deleted.
(JSC::JSBigInt::add): Deleted.
(JSC::JSBigInt::sub): Deleted.
(JSC::JSBigInt::bitwiseAnd): Deleted.
(JSC::JSBigInt::bitwiseOr): Deleted.
(JSC::JSBigInt::bitwiseXor): Deleted.
(JSC::JSBigInt::leftShift): Deleted.
(JSC::JSBigInt::signedRightShift): Deleted.
(JSC::JSBigInt::bitwiseNot): Deleted.

  • runtime/JSBigInt.h:
  • runtime/JSCJSValue.h:

(JSC::jsBigInt32):

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::JSValue):

  • runtime/Operations.cpp:

(JSC::jsAddSlowCase):

  • runtime/Operations.h:

(JSC::jsSub):
(JSC::jsMul):
(JSC::jsDiv):
(JSC::jsInc):
(JSC::jsDec):
(JSC::jsBitwiseNot):
(JSC::shift):
(JSC::bitwiseBinaryOp):

Source/WebCore:

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readBigInt):

4:56 PM Changeset in webkit [260682] by ysuzuki@apple.com
  • 5 edits in trunk/Source

[WTF] allThreads registration is racy with allThreads unregistration
https://bugs.webkit.org/show_bug.cgi?id=210995
<rdar://problem/61609690>

Reviewed by Keith Miller.

Source/WebCore:

  • page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::ResourceUsageThread::platformCollectCPUData):

Source/WTF:

There is a race between registering a thread to allThreads and unregistering a thread from allThreads.

  1. Caller: A new thread is created, but not registering it to allThreads yet.
  2. Thread: The thread is running.
  3. Thread: The thread finishes its execution before the thread is registered into allThreads.
  4. Thread: The thread unregisters itself from allThreads.
  5. Caller: Registers the new thread to allThreads after it already finished its execution.
  6. The thread is never removed from allThreads.

This patch adds m_didUnregisterFromAllThreads flag to Thread, and add the thread to allThreads only when this flag is false.

Covered by LayoutTests/inspector/cpu-profiler/threads.html.

  • wtf/Threading.cpp:

(WTF::Thread::create):
(WTF::Thread::didExit):

  • wtf/Threading.h:

(WTF::Thread::Thread):

4:53 PM Changeset in webkit [260681] by jonlee@apple.com
  • 2 edits in trunk/PerformanceTests

MotionMark: add link to bug in about page

Unreviewed.

  • MotionMark/about.html:
4:35 PM Changeset in webkit [260680] by commit-queue@webkit.org
  • 6 edits in trunk

[GTK][WPE][JSCOnly] compile error when -DWTF_CPU_ARM64_CORTEXA53=ON set for arm64
https://bugs.webkit.org/show_bug.cgi?id=197192

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-04-24
Reviewed by Yusuke Suzuki.

.:

  • Source/cmake/OptionsCommon.cmake:

Source/JavaScriptCore:

This workaround is supposed to fix WebKit on old Cortex A53 CPUs, but it has been broken
since 2018, and people would like to use WebKit on modern Cortex A53. If anyone using WebKit
on the original hardware wants to fix and reimplement the workaround, feel free.

  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::adrp):
(JSC::ARM64Assembler::madd):
(JSC::ARM64Assembler::msub):
(JSC::ARM64Assembler::smaddl):
(JSC::ARM64Assembler::smsubl):
(JSC::ARM64Assembler::umaddl):
(JSC::ARM64Assembler::umsubl):
(JSC::ARM64Assembler::nopCortexA53Fix835769): Deleted.
(JSC::ARM64Assembler::nopCortexA53Fix843419): Deleted.

  • offlineasm/arm64.rb:
  • offlineasm/instructions.rb:
4:32 PM Changeset in webkit [260679] by commit-queue@webkit.org
  • 5 edits in trunk

REGRESSION(260485) Payment requests don't do anything
https://bugs.webkit.org/show_bug.cgi?id=210997
Source/WTF:

<rdar://problem/62275343>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-04-24
Reviewed by Darin Adler.

We were giving the PKPaymentRequest an NSArray<NSString *> instead of NSArray<NSURL *>.
This was a problem with all uses of createNSArray with Vector<URL>.
Now it's fixed with a test.

  • wtf/URL.h:
  • wtf/cocoa/URLCocoa.mm:

(WTF::makeNSArrayElement):
(WTF::makeVectorElement):

Tools:

Patch by Alex Christensen <achristensen@webkit.org> on 2020-04-24
Reviewed by Darin Adler.

  • TestWebKitAPI/Tests/WTF/cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

4:18 PM Changeset in webkit [260678] by Wenson Hsieh
  • 4 edits in trunk

Make some more adjustments to TextManipulationController's paragraph boundary heuristic
https://bugs.webkit.org/show_bug.cgi?id=210993
<rdar://problem/61571299>

Reviewed by Tim Horton.

Source/WebCore:

Adjust the heuristic added in r260583 to account for a few more common scenarios where we currently consider
text as a part of the same paragraph. This can lead to many issues during text manipulation where text is moved
between these elements, when it should not be.

The new scenarios include block and inline-block links, as well as button elements.

Test: TextManipulation.StartTextManipulationTreatsInlineBlockLinksAndButtonsAsParagraphs

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::observeParagraphs):

Additionally rename "paragraph boundary element" to "item boundary element", to avoid colliding with the
existing notion of paragraph boundaries in editing code.

Tools:

Add a new API test with buttons and links styled with display: inline-block;. Additionally, rebaseline an
existing API test that exercises inline-block list items.

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:
3:49 PM Changeset in webkit [260677] by ddkilzer@apple.com
  • 1 edit
    1 delete in trunk/LayoutTests/imported/w3c

REGRESSION (r223327): Remove merge conflict file

  • web-platform-tests/webrtc/simplecall.html.orig: Remove.
3:41 PM Changeset in webkit [260676] by Megan Gardner
  • 5 edits in trunk/Source

Make LEGACY_PDF_SUPPORT feature flag.
https://bugs.webkit.org/show_bug.cgi?id=210868
<rdar://problem/62199847>

Reviewed by Tim Horton.

Source/WebKitLegacy/mac:

  • WebView/WebFrameView.mm:

(+[WebFrameView _viewTypesAllowImageTypeOmission:]):

  • WebView/WebView.mm:

Source/WTF:

  • wtf/PlatformHave.h:
3:29 PM Changeset in webkit [260675] by Chris Dumez
  • 2 edits in trunk/Tools

[iOS] Always run WKTR's WKWebViews at foreground priority
https://bugs.webkit.org/show_bug.cgi?id=210991

Reviewed by Keith Miller.

Always run WKTR's WKWebViews at foreground priority. This makes sure that they don't suspend and
run at foreground priority on iOS, even if those views are not visible on screen.
This is an issue to address flakiness on the bots.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration):

2:53 PM Changeset in webkit [260674] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Fix DataFormatJSBigInt32 missing part
https://bugs.webkit.org/show_bug.cgi?id=210986

Reviewed by Mark Lam.

Add missing part of DataFormatJSBigInt32 implementation.

  • bytecode/DataFormat.h:

(JSC::dataFormatToString):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::checkGeneratedTypeForToInt32):

2:51 PM Changeset in webkit [260673] by Alan Coon
  • 8 edits in branches/safari-610.1.11-branch/Source

Versioning.

2:45 PM Changeset in webkit [260672] by chris.reid@sony.com
  • 14 edits
    3 adds in trunk

[Win] Bundle Inspector Resources in Release builds
https://bugs.webkit.org/show_bug.cgi?id=210942

Reviewed by Fujii Hironori.

.:

Add ENABLE_WEBINSPECTORUI so the resource copy can be disabled
on platforms without inspector frontends.

  • CMakeLists.txt:
  • Source/CMakeLists.txt:
  • Source/PlatformWin.cmake:
  • Source/cmake/OptionsJSCOnly.cmake:
  • Source/cmake/OptionsPlayStation.cmake:

Source/WebCore:

  • CMakeLists.txt:

Source/WebInspectorUI:

Add CMake files for copying inspector resources

  • CMakeLists.txt: Added.
  • PlatformGTK.cmake: Added.
  • PlatformWin.cmake: Added.

Source/WebKit:

Move CMake logic for the inspector resource copy script to
Source/WebInspectorUI so it can be shared with Win and other platforms.

  • InspectorGResources.cmake:
  • PlatformWPE.cmake:
  • PlatformWin.cmake:
2:42 PM Changeset in webkit [260671] by graouts@webkit.org
  • 19 edits in trunk

[Web Animations] Ensure calling Web Animations APIs override future CSS Animations style properties
https://bugs.webkit.org/show_bug.cgi?id=210988

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark all WPT tests related to Web Animations APIs overrides for CSS Animations as PASS, save for one
failing assertion which is caused by AnimationTimeline::updateCSSAnimations() not updating the animation
when the underlying @keyframes rule changed. This is due to Animation::animationsMatch() not checking on
the actual keyframes, tracked by webkit.org/b/210989.

  • web-platform-tests/css/css-animations/AnimationEffect-updateTiming.tentative-expected.txt:
  • web-platform-tests/css/css-animations/CSSAnimation-effect.tentative-expected.txt:
  • web-platform-tests/css/css-animations/CSSAnimation-pausing.tentative-expected.txt:
  • web-platform-tests/css/css-animations/KeyframeEffect-setKeyframes.tentative-expected.txt:

Source/WebCore:

The CSS Animations Level 2 spec specifies how the Web Animations APIs and the CSS Animations style
properties should interact in https://drafts.csswg.org/css-animations-2/#animations. This patch
implements the specified behavior and this is reflected by progress on the relevant WPT tests.

The gist of this change is that once a Web Animations API is called on an animation created using
CSS Animations, any changes made to related CSS Animations style properties on the target element
will be ignored so that the overrides applied via the Web Animations API remain in effect.

For instance, calling pause() or play() in a way that changes the playback state of the CSS Animation
will mean that future changes to the CSS animation-play-state property are ignored.

To do this we make more IDL properties and methods use dedicated methods to distinguish between the
bindings entry-point and internal usage of the same methods to integrate the behavior only when the
API itself is being used.

  • animation/AnimationEffect.cpp:

(WebCore::AnimationEffect::getBindingsTiming const): Ensure we flush styles when animation.effect.getTiming()
is called.
(WebCore::AnimationEffect::getBindingsComputedTiming const): Ensure we flush styles when
animation.effect.getComputedTiming() is called.
(WebCore::AnimationEffect::bindingsUpdateTiming): Notify the associated CSSAnimation object, if any, when
animation.effect.updateTiming() is called such that the CSSAnimation may apply the relevant overrides.

  • animation/AnimationEffect.h:
  • animation/AnimationEffect.idl:
  • animation/CSSAnimation.cpp:

(WebCore::CSSAnimation::syncPropertiesWithBackingAnimation): Only apply new values of CSS Animations style
properties if there are no overrides for them resulting from calling related Web Animations APIs.
(WebCore::CSSAnimation::bindingsPlay): Mark animation-play-state as overridden if play() is called.
(WebCore::CSSAnimation::bindingsPause): Mark animation-play-state as overridden if pause() is called.
(WebCore::CSSAnimation::setBindingsEffect): Mark all animation style properties, except for animation-name
and animation-play-state as overridden if animation.effect is set.
(WebCore::CSSAnimation::setBindingsStartTime): Mark animation-play-state as overridden if animation.startTime
is set.
(WebCore::CSSAnimation::bindingsReverse): Mark animation-play-state as overridden if reverse() is called.
(WebCore::CSSAnimation::effectTimingWasUpdatedUsingBindings): Mark each CSS property associated with a key
found on the timing object passed to animation.effect.updateTiming() as overridden.
(WebCore::CSSAnimation::effectKeyframesWereSetUsingBindings): Mark animation-timing-function as overridden
if animation.effect.setKeyframes() is called.

  • animation/CSSAnimation.h:
  • animation/DeclarativeAnimation.cpp:

(WebCore::DeclarativeAnimation::bindingsStartTime const):
(WebCore::DeclarativeAnimation::setBindingsStartTime):
(WebCore::DeclarativeAnimation::startTime const): Deleted.
(WebCore::DeclarativeAnimation::setStartTime): Deleted.

  • animation/DeclarativeAnimation.h:
  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::getBindingsKeyframes): Ensure we flush styles when animation.effect.getKeyframes()
is called.
(WebCore::KeyframeEffect::getKeyframes): Only use the CSS-originated animation path if we don't have JS-originated
keyframes.
(WebCore::KeyframeEffect::setBindingsKeyframes): Notify the associated CSSAnimation object, if any, when
animation.effect.setKeyframes() is called such that the CSSAnimation may apply the relevant overrides.
(WebCore::KeyframeEffect::processKeyframes): Correctly return early if part of the processing yields an exception.

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffect.idl:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setBindingsEffect):
(WebCore::WebAnimation::setBindingsStartTime):
(WebCore::WebAnimation::bindingsReverse):

  • animation/WebAnimation.h:

(WebCore::WebAnimation::bindingsEffect const):
(WebCore::WebAnimation::bindingsStartTime const):

  • animation/WebAnimation.idl:
2:41 PM Changeset in webkit [260670] by Alexey Shvayka
  • 15 edits
    24 adds
    1 delete in trunk/LayoutTests/imported/w3c

Re-sync wpt/WebIDL/ecmascript-binding and wpt/custom-elements/htmlconstructor from upstream
https://bugs.webkit.org/show_bug.cgi?id=210984

Reviewed by Darin Adler.

web-platform-tests revision: 39e9c51041a1

  • web-platform-tests/WebIDL/ecmascript-binding/*: Updated.
  • web-platform-tests/custom-elements/htmlconstructor/*: Updated.
2:11 PM Changeset in webkit [260669] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

ASSERTION FAILED: m_wrapper under HTMLMediaElement::setIsPlayingToWirelessTarget
https://bugs.webkit.org/show_bug.cgi?id=210983
<rdar://problem/61611994>

Reviewed by Eric Carlson.

The issue was that we were trying to fire a JS event as a result of ActiveDOMObject::stop()
getting called, which is not allowed. To address the issue, we avoid firing the event if
the context is already stopped.

No new tests, already covered by:
media/modern-media-controls/placard-support/placard-support-airplay-fullscreen.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setIsPlayingToWirelessTarget):

2:08 PM Changeset in webkit [260668] by Kate Cheney
  • 25 edits
    12 adds in trunk

Removing website data for a domain should delete corresponding ITP entry
https://bugs.webkit.org/show_bug.cgi?id=210864
<rdar://problem/59473193>

Reviewed by John Wilander.

Source/WebKit:

Tests: http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-database.html

http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration.html
http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries-database.html
http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries.html
http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-database.html
http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads.html

In the database store: deletes domain from the ObservedDomains table
when website data is deleted for that domain. This deletes every
instance of the domainID in the database due to cascading deletions.

In the memory store: deletes every instance of the domain in the
statistics map, which will update the plist.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::removeDataForDomain):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainIDExistsInDatabase):
Needed a new function to check for the existence of domainID in any
table. Existing queries rely on the ObservedDomains entry, which means
testing using those could result in a false positive if the domainID
was deleted from ObservedDomains but is floating around in another
table.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::removeDataForDomain):

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::domainIDExistsInDatabase):
(WebKit::WebResourceLoadStatisticsStore::removeDataForDomain):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::domainIDExistsInDatabase):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
Pass RegistrableDomains vector to deleteWebsiteDataForOrigins,
captured based on the WebsiteData display name.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreRemoveITPDataForDomain):
(WKWebsiteDataStoreDoesStatisticsDomainIDExistInDatabase):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcessProxy::domainIDExistsInDatabase):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::domainIDExistsInDatabase):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

Created 2 new APIs for testing. One to mimic clearing website data
for a domain, and one to check if the domain exists in the database
after a deletion was requested.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::doesStatisticsDomainIDExistInDatabase):
(WTR::TestRunner::domainIDExistsInDatabase): Deleted.

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

(WTR::TestController::doesStatisticsDomainIDExistInDatabase):
(WTR::TestController::domainIDExistsInDatabase): Deleted.

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

Inserts values into the ITP database then tests removing the domain's
website data will remove all instances of that domain in the ITP
database.

Database store expectations will reflect the result of the new
domainIDExistsInDatabase function. Memory store tests will use the
dump output which should not include the deleted information.

  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-database.html: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-expected.txt: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration.html: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries-database.html: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries-expected.txt: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries.html: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-database.html: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-expected.txt: Added.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads.html: Added.
2:02 PM Changeset in webkit [260667] by ddkilzer@apple.com
  • 7 edits
    1 copy in trunk/Source/WebKit

Use CocoaImage platform abstraction for NSImage/UIImage
<https://webkit.org/b/210974>

Reviewed by Darin Adler.

  • Platform/cocoa/CocoaImage.h: Add.
  • Define CocoaImage here for cross-platform use. Don't use OBJC_CLASS() here because this is an Objective-C header.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):

  • Combine separate platform-specific methods into one method.
  • UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:
  • Combine separate platform-specific instance variables into one instance variable.

(-[_WKActivatedElementInfo image]):

  • Combine separate methods into one platform-specific method.
  • UIProcess/QuickLookThumbnailLoader.h:
  • Move cross-platform definition to CocoaImge.h.
  • UIProcess/QuickLookThumbnailLoader.mm:
  • Drive-by fix of soft-linking header include order.
  • WebKit.xcodeproj/project.pbxproj:
  • Add CocoaImage.h to the project.
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:

(-[WKWebProcessPlugInNodeHandle renderedImageWithOptions:]):
(-[WKWebProcessPlugInNodeHandle renderedImageWithOptions:width:]):

  • Combine separate platform-specific methods into one method.
1:57 PM Changeset in webkit [260666] by ddkilzer@apple.com
  • 4 edits in trunk/Source/WebKit

IPC::Decoder should use create() pattern
<https://webkit.org/b/210949>
<rdar://problem/62144409>

Reviewed by Geoffrey Garen.

  • Platform/IPC/Decoder.cpp:

(IPC::Decoder::create): Add implementation. Returns nullptr if
Decoder constructor returns an invalid object.
(IPC::Decoder::Decoder): Mark invalid if m_buffer is not 64-bit
aligned.
(IPC::Decoder::unwrapForTesting): Switch to Decoder::create().

  • Platform/IPC/Decoder.h:

(IPC::Decoder::create): Add declaration.
(IPC::Decoder::Decoder): Make explicit. (Can't be made private
since we use std::unique_ptr<Decoder>.)

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::createMessageDecoder): Switch to Decoder::create().

1:33 PM Changeset in webkit [260665] by Russell Epstein
  • 1 copy in tags/Safari-609.2.9.0.2

Tag Safari-609.2.9.0.2.

1:11 PM Changeset in webkit [260664] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix in Windows
https://bugs.webkit.org/show_bug.cgi?id=210892

Windows MSVC does not have proper understanding of IGNORE_RETURN_TYPE_WARNINGS_BEGIN.

  • runtime/JSBigInt.h:

(JSC::invertBigIntCompareResult):

1:05 PM Changeset in webkit [260663] by timothy_horton@apple.com
  • 5 edits in trunk/Source

iPad: "Pocket City" interaction does not work with trackpad
https://bugs.webkit.org/show_bug.cgi?id=210985
<rdar://problem/62273077>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::IOSApplication::isPocketCity):

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView shouldUseMouseGestureRecognizer]):
Add another app to the list who fall back to touch event synthesis until rebuilt.

1:04 PM Changeset in webkit [260662] by graouts@webkit.org
  • 37 edits
    18 adds
    1 delete in trunk

Update the css/css-animations WPT tests
https://bugs.webkit.org/show_bug.cgi?id=210964

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/css/css-animations/AnimationEffect-updateTiming.tentative-expected.txt: Added.
  • web-platform-tests/css/css-animations/AnimationEffect-updateTiming.tentative.html: Added.
  • web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative-expected.txt:
  • web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-effect.tentative-expected.txt:
  • web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-finished.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-pausing.tentative-expected.txt:
  • web-platform-tests/css/css-animations/CSSAnimation-pausing.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-ready.tentative.html:
  • web-platform-tests/css/css-animations/Document-getAnimations.tentative-expected.txt:
  • web-platform-tests/css/css-animations/Document-getAnimations.tentative.html:
  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative-expected.txt:
  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html:
  • web-platform-tests/css/css-animations/KeyframeEffect-setKeyframes.tentative-expected.txt: Added.
  • web-platform-tests/css/css-animations/KeyframeEffect-setKeyframes.tentative.html: Added.
  • web-platform-tests/css/css-animations/animation-base-response-001-expected.txt: Added.
  • web-platform-tests/css/css-animations/animation-base-response-001.html: Added.
  • web-platform-tests/css/css-animations/animation-base-response-002-expected.txt: Added.
  • web-platform-tests/css/css-animations/animation-base-response-002.html: Added.
  • web-platform-tests/css/css-animations/animation-base-response-003-expected.txt: Added.
  • web-platform-tests/css/css-animations/animation-base-response-003.html: Added.
  • web-platform-tests/css/css-animations/animation-base-response-004-expected.txt: Added.
  • web-platform-tests/css/css-animations/animation-base-response-004.html: Added.
  • web-platform-tests/css/css-animations/animation-important-001-expected.txt: Added.
  • web-platform-tests/css/css-animations/animation-important-001.html: Added.
  • web-platform-tests/css/css-animations/animation-important-002-expected.html: Added.
  • web-platform-tests/css/css-animations/animation-important-002.html: Added.
  • web-platform-tests/css/css-animations/event-dispatch.tentative.html:
  • web-platform-tests/css/css-animations/event-order.tentative-expected.txt:
  • web-platform-tests/css/css-animations/event-order.tentative.html:
  • web-platform-tests/css/css-animations/historical.html:
  • web-platform-tests/css/css-animations/keyframes-remove-documentElement-crash-expected.txt: Removed.
  • web-platform-tests/css/css-animations/support/testcommon.js:

(assert_frames_equal):
(assert_frame_lists_equal):

  • web-platform-tests/css/css-animations/w3c-import.log:

Source/WebKitLegacy/mac:

Expose the CSSCustomPropertiesAndValues experimental feature such that it may be set in DumpRenderTree.

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

(-[WebPreferences CSSCustomPropertiesAndValuesEnabled]):
(-[WebPreferences setCSSCustomPropertiesAndValuesEnabled:]):

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

Source/WebKitLegacy/win:

Expose the CSSCustomPropertiesAndValues experimental feature such that it may be set in DumpRenderTree.

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Tools:

Turn on the CSSCustomPropertiesAndValues experimental feature which a new test relies on.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(enableExperimentalFeatures):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(enableExperimentalFeatures):

LayoutTests:

  • TestExpectations:
  • platform/ios/imported/w3c/web-platform-tests/css/css-animations/animation-base-response-001-expected.txt: Added.
12:58 PM Changeset in webkit [260661] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/tests/IndexedDB/storage-limit.https.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209189

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
12:19 PM Changeset in webkit [260660] by ysuzuki@apple.com
  • 13 edits
    6 adds in trunk

[JSC] DFG compare should speculate BigInt well
https://bugs.webkit.org/show_bug.cgi?id=210892

Reviewed by Saam Barati.

JSTests:

  • stress/compare-bigint-with-number.js: Added.

(shouldBe):
(result):
(lessThan):
(lessThanEqual):
(greaterThan):
(greaterThanEqual):
(equal):

  • stress/compare-bigint-with-string.js: Added.

(shouldBe):
(result):
(lessThan):
(lessThanEqual):
(greaterThan):
(greaterThanEqual):
(equal):

  • stress/compare-bigint.js: Added.

(shouldBe):
(result):
(lessThan):
(lessThanEqual):
(greaterThan):
(greaterThanEqual):
(equal):

  • stress/compare-bigint32.js: Added.

(shouldBe):
(result):
(lessThan):
(lessThanEqual):
(greaterThan):
(greaterThanEqual):
(equal):

  • stress/compare-heap-bigint.js: Added.

(shouldBe):
(result):
(lessThan):
(lessThanEqual):
(greaterThan):
(greaterThanEqual):
(equal):

  • stress/dfg-ai-fold-bigint.js: Added.

(shouldBe):
(allAreTrue):
(allAreFalse):
(lessThan):
(lessThanFalse):
(lessThanEqual):
(lessThanEqualFalse):
(greaterThan):
(greaterThanFalse):
(greaterThanEqual):
(greaterThanEqualFalse):
(equal):
(equalFalse):

Source/JavaScriptCore:

Compare operations in DFG does not support BigInt related speculations. As a result, DFG fixup phase emits DoubleRep for operands, and
causes OSR exit. This patch adds BigInt32, HeapBigInt, and AnyBigIntUse support to DFG compare operations to avoid OSR exits.
We also introduce JSBigInt::compareToInt32 to avoid allocating JSBigInt only for comparison, and optimize C++ runtime for JSBigInt comparison.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileValueSub):
(JSC::DFG::SpeculativeJIT::compileValueMul):
(JSC::DFG::SpeculativeJIT::compare):
(JSC::DFG::SpeculativeJIT::genericJSValueNonPeepholeCompare):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare): Deleted.

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

(JSC::DFG::SpeculativeJIT::compileBigInt32Compare):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareEq):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
(JSC::FTL::DFG::LowerDFGToB3::compare):
(JSC::FTL::DFG::LowerDFGToB3::genericJSValueCompare):
(JSC::FTL::DFG::LowerDFGToB3::nonSpeculativeCompare): Deleted.

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::unboxBigInt32):

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::compareToInt32):

  • runtime/JSBigInt.h:

(JSC::swapBigIntCompareResult):

  • runtime/Operations.h:

(JSC::compareBigInt):
(JSC::compareBigInt32ToOtherPrimitive):
(JSC::bigIntCompare):

11:42 AM Changeset in webkit [260659] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

check-webkit-style should recognize *Internal.h and *Private.h as primary headers
<https://webkit.org/b/210979>

Reviewed by Darin Adler.

  • Scripts/webkitpy/style/checkers/cpp.py:

(_classify_include): If a header has an "Internal.h" or a
"Private.h" suffix with the same base name as the source file,
consider it a primary header--the header that comes after
"config.h".

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(OrderOfIncludesTest.test_classify_include): Add tests.

11:23 AM Changeset in webkit [260658] by commit-queue@webkit.org
  • 18 edits in trunk

SPI clients using fastServerTrustEvaluationEnabled need SPI to inform them of modern TLS negotiation
https://bugs.webkit.org/show_bug.cgi?id=210533

Patch by Alex Christensen <achristensen@webkit.org> on 2020-04-24
Reviewed by Brady Eidson.

Source/WebKit:

  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTaskClient::didNegotiateModernTLS):

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::didNegotiateModernTLS):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::didNegotiateModernTLS):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):

  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::didNegotiateModernTLS):

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::didNegotiateModernTLS):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::didNegotiateModernTLS):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(-[TLSNavigationDelegate waitForDidNegotiateModernTLS]):
(-[TLSNavigationDelegate _webView:didNegotiateModernTLS:]):
(TestWebKitAPI::TEST):

11:08 AM Changeset in webkit [260657] by BJ Burg
  • 2 edits in trunk/Tools

webkitpy: update autoinstalled mozprocess dependency to 1.1.0 (adds python3 support)
https://bugs.webkit.org/show_bug.cgi?id=210220
<rdar://problem/58881483>

Reviewed by Anders Carlsson.

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook._install_mozprocess):

10:58 AM Changeset in webkit [260656] by jonlee@apple.com
  • 8 edits in trunk/PerformanceTests

MotionMark: ensure that timestamps are valid during warm up phase of tests
https://bugs.webkit.org/show_bug.cgi?id=210640

Reviewed by Said Abou-Hallawa.

Ensure that Benchmark._benchmarkStartTimestamp is set during warm up phase.
Otherwise it is NaN, which makes the Benchmark.timestamp invalid, which is
used by tests like Multiply to drive the animation. When the warm up phase
completes, the start timestamp is reset.

Update minor version of benchmark with this bug fix, and include
version changelog in the about page.

For testing, add a parameter that allows for adjusting the length of the
warm up phase. It remains at its current default, 100 ms.

  • MotionMark/about.html: Add section of version changelog. Includes links

to webkit.org blog posts.

  • MotionMark/developer.html: Add parameter for setting warmup length.

Remove the Kalman filter parameters, since they should always be fixed.

  • MotionMark/resources/runner/motionmark.css: Include styles to show

version log.

  • MotionMark/resources/runner/motionmark.js: Factor out default options to

a property on window.benchmarkController. Include the default warmup length
of 100 ms.
(window.benchmarkController.startBenchmark): Refactor to use benchmarkDefaultParameters.

  • MotionMark/resources/debug-runner/motionmark.js: Ditto.
  • MotionMark/resources/strings.js: Update version number.
  • MotionMark/tests/resources/main.js:

(_animateLoop): Set _benchmarkTimestamp during the warmup phase. Check the
warmup length. The _benchmarkTimestamp variable remains reset when the test
begins.

10:56 AM Changeset in webkit [260655] by commit-queue@webkit.org
  • 6 edits in trunk

[OpenSSL] Implement WebCrypto APIs for HMAC
https://bugs.webkit.org/show_bug.cgi?id=210902

Patch by Tomoki Imai <Tomoki Imai> on 2020-04-24
Reviewed by Don Olmstead.

Source/WebCore:

Support WebCrypto HMAC sign/verify with OpenSSL.
The design and some functions are inherited from the other ports.

  • crypto/openssl/CryptoAlgorithmHMACOpenSSL.cpp:

(WebCore::HMACAlgorithm): Added. Helper function to map CryptoAlgorithmIdentifier to OpenSSL EVP_MD type.
(WebCore::calculateSignature): Added. Helper function to calculate the signature for sign/verify.
(WebCore::CryptoAlgorithmHMAC::platformSign): Implemented, mostly same as the other ports.
(WebCore::CryptoAlgorithmHMAC::platformVerify): Implemented, mostly same as the other ports.

  • crypto/openssl/CryptoAlgorithmRegistryOpenSSL.cpp:

(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms): Added CryptoAlgorithmHMAC support.

  • crypto/openssl/OpenSSLCryptoUniquePtr.h: Added specialized unique_ptrs for EVP_MD_CTX and EVP_PKEY.

(WebCore::OpenSSLCryptoPtrDeleter<EVP_MD_CTX>::operator() const):
(WebCore::OpenSSLCryptoPtrDeleter<EVP_PKEY>::operator() const):

LayoutTests:

Enabled WebCrypto LayoutTests for HMAC along with the implementation.

  • platform/wincairo/TestExpectations:
10:53 AM Changeset in webkit [260654] by Alexey Shvayka
  • 5 edits in trunk

Proxy.revocable should not have Construct? slot
https://bugs.webkit.org/show_bug.cgi?id=210959

Reviewed by Darin Adler.

JSTests:

  • stress/proxy-revoke.js:
  • test262/expectations.yaml: Mark 2 test cases as passing.

Source/JavaScriptCore:

This change removes proxyRevocableConstructorThrowError() since its presence is
observable when, for example, Proxy.revocable is a ProxyTarget? itself [1].
Also removes unnecessary newTarget() check in constructProxyObject() and
2 extra ArgList instances.

This patch aligns JSC with the spec [2], V8 and SpiderMonkey.

[1]: https://tc39.es/ecma262/#sec-proxycreate (step 7.b)
[2]: https://tc39.es/ecma262/#sec-ecmascript-standard-built-in-objects

  • runtime/ProxyConstructor.cpp:

(JSC::makeRevocableProxy):
(JSC::ProxyConstructor::finishCreation):
(JSC::constructProxyObject):
(JSC::proxyRevocableConstructorThrowError): Deleted.

10:50 AM Changeset in webkit [260653] by BJ Burg
  • 9 edits
    2 adds in trunk/Source

Web Automation: timeout underneath Automation.evaluateJavaScriptFunction in Selenium test frame_switching_tests.py::testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs[Safari]
https://bugs.webkit.org/show_bug.cgi?id=210162
<rdar://problem/60561009>

Reviewed by Devin Rousso.

Source/WebCore:

  • page/DOMWindow.h: Expose DOMWindow::{register, unregister}Observer.

Source/WebKit:

When an iframe is detached from the DOM, it is no longer exposed as a browsing context
and it's not possible to Evaluate JavaScript or perform other commands with it. This
patch adds frame lifecycle monitoring so that pending script evaluations are cancelled
with FrameNotFound as soon as the iframe is detached from the DOM. This change also avoids
running more commands with the frame if it's detached from its DOMWindow and ready to be GC'd.

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Automation/WebAutomationDOMWindowObserver.h: Added.
  • WebProcess/Automation/WebAutomationDOMWindowObserver.cpp: Added.

(WebKit::WebAutomationDOMWindowObserver::WebAutomationDOMWindowObserver):
(WebKit::WebAutomationDOMWindowObserver::~WebAutomationDOMWindowObserver):
(WebKit::WebAutomationDOMWindowObserver::frame const):
(WebKit::WebAutomationDOMWindowObserver::willDestroyGlobalObjectInCachedFrame):
(WebKit::WebAutomationDOMWindowObserver::willDestroyGlobalObjectInFrame):
(WebKit::WebAutomationDOMWindowObserver::willDetachGlobalObjectFromFrame):
This class is a stripped-down copy of DOMWindowExtension, which is the only other
client of DOMWindow::Observer interface. When a frame is detached, destroyed, or
navigates (global object detached), then call the callback and unregister.

  • WebProcess/Automation/WebAutomationSessionProxy.h:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::~WebAutomationSessionProxy):
(WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame):
(WebKit::WebAutomationSessionProxy::willDestroyGlobalObjectForFrame):
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):
(WebKit::WebAutomationSessionProxy::ensureObserverForFrame): For non-main frames,
ensure we add a frame observer if we are about to evaluate JavaScript upon the frame.
This acts as a watchdog in case the frame becomes detached while waiting for pending
JS evaluations. When a frame is detached, the JS evaluation may or may not complete.

(WebKit::WebAutomationSessionProxy::selectOptionElement): Fix hilarious typo.

  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:
  • WebProcess/GPU/media/WebMediaStrategy.cpp:

(WebKit::WebMediaStrategy::clearNowPlayingInfo):
(WebKit::WebMediaStrategy::setNowPlayingInfo):
Adding a new file seems to have exposed a few missing includes and namespace qualifiers.
This is due to unified sources chunking.

10:25 AM Changeset in webkit [260652] by commit-queue@webkit.org
  • 9 edits
    1 delete in trunk/Source/WebKit

Use sendWithAsyncReply for ShareSheet related messages
https://bugs.webkit.org/show_bug.cgi?id=210828
<rdar://problem/61800730>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-04-24
Reviewed by Brent Fulgham.

  • Platform/IPC/MessageSender.cpp:

We need to call addAsyncReplyHandler before sendMessage in case this is the first async message from this process.
Otherwise the reply from the first message is dropped sometimes.

  • Shared/ShareSheetCallbackID.h: Removed.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::showShareSheet):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::showShareSheet):
(WebKit::nextShareSheetCallbackID): Deleted.
(WebKit::WebPage::didCompleteShareSheet): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
10:20 AM Changeset in webkit [260651] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] DFG AI for some bitops + BigInt32 should be precise
https://bugs.webkit.org/show_bug.cgi?id=210956

Reviewed by Keith Miller.

JSTests:

  • stress/bigint-bitops.js: Added.

(shouldBe):
(test):

Source/JavaScriptCore:

Use SpecBigInt32 for ValueBitXor, ValueBitAnd, and ValueBitOr since they are always producing BigInt32 and they have inlined implementations in DFG / FTL.

  • dfg/DFGAbstractInterpreterInlines.h:

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

10:02 AM Changeset in webkit [260650] by commit-queue@webkit.org
  • 12 edits
    1 add in trunk/Source

Call STDynamicActivityAttributionPublisher in the WebProcess
https://bugs.webkit.org/show_bug.cgi?id=210772
<rdar://problem/62075201>

Patch by Youenn Fablet <youenn@apple.com> and Luming Yin <luming_yin@apple.com> on 2020-04-24
Reviewed by Geoffrey Garen.

Source/WebKit:

Call STDynamicActivityAttributionPublisher in WebProcess to make use of the newly added plist entry.
Use of a sandbox extension to protect this call.

  • Configurations/WebKit.xcconfig:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Scripts/process-entitlements.sh:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist:
  • WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/InfoPlist.strings: Added.
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

Source/WTF:

  • wtf/PlatformHave.h:
9:58 AM Changeset in webkit [260649] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] tiled-drawing/simple-document-with-margin-tiles.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207518

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
9:32 AM Changeset in webkit [260648] by pvollan@apple.com
  • 2 edits in trunk

[Win] Fix AppleWin build
https://bugs.webkit.org/show_bug.cgi?id=210971

Reviewed by Brent Fulgham.

PAL is built as a static library.

  • Source/cmake/target/PAL.cmake:
9:22 AM Changeset in webkit [260647] by Alan Bujtas
  • 6 edits
    2 adds in trunk

[LFC][TFC] Take first in-flow table-row baseline into account when computing cell baseline
https://bugs.webkit.org/show_bug.cgi?id=210972

Reviewed by Antti Koivisto.

Source/WebCore:

Check if the cell has a nested table and use its first row as the baseline for the cell (unless there's an IFC before).

Test: fast/layoutformattingcontext/table-basic-row-baseline-with-nested-table.html

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutCell):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace):

  • layout/tableformatting/TableFormattingContext.h:
  • layout/tableformatting/TableFormattingContextGeometry.cpp:

(WebCore::Layout::TableFormattingContext::Geometry::usedBaselineForCell):

  • layout/tableformatting/TableGrid.h:

(WebCore::Layout::TableGrid::Row::setBaselineOffset):
(WebCore::Layout::TableGrid::Row::baselineOffset const):

LayoutTests:

  • fast/layoutformattingcontext/table-basic-row-baseline-with-nested-table-expected.txt: Added.
  • fast/layoutformattingcontext/table-basic-row-baseline-with-nested-table.html: Added.
9:20 AM Changeset in webkit [260646] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Nullptr crash in objc_msgSend under WebCore::genericFamily
https://bugs.webkit.org/show_bug.cgi?id=210911
<rdar://problem/61510208>

Reviewed by Geoffrey Garen.

Speculative fix.

  • platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:

(WebCore::genericFamily):

Test that CTFontDescriptorCopyAttribute is really returning CFStringRef.
Also explicitly return String from lambda to clarify lifetimes.

9:11 AM Changeset in webkit [260645] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.28.2

WPE WebKit 2.28.2

9:11 AM Changeset in webkit [260644] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.28

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.28.2 release

.:

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

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.28.2.
8:03 AM Changeset in webkit [260643] by Simon Fraser
  • 8 edits in trunk/Source

Move some post-renderingUpdate code into WebCore
https://bugs.webkit.org/show_bug.cgi?id=210952

Reviewed by Antti Koivisto.

Factor some code called by the various DrawingArea subclasses into Page::finalizeRenderingUpdate(),
with some flags to control behavior that differs between drawing areas.

ScrollingCoordinator::commitTreeStateIfNeeded() is a no-op for RemoteScrollingCoordinator so
it's fine to always call it.

Source/WebCore:

  • page/Page.cpp:

(WebCore::Page::passiveTouchEventListenerRectsForTesting):
(WebCore::Page::finalizeRenderingUpdate):

  • page/Page.h:

Source/WebKit:

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::updateRendering):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::finalizeRenderingUpdate):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::updateRendering):

7:57 AM Changeset in webkit [260642] by Chris Dumez
  • 8 edits in trunk

[iOS] Stop using legacy BKSApplicationStateMonitor
https://bugs.webkit.org/show_bug.cgi?id=210945

Reviewed by Tim Horton.

Source/WebKit:

Stop using legacy BKSApplicationStateMonitor and use RunningBoard API instead.

  • Configurations/WebKit.xcconfig:

Stop linking against ApplicationServices when using iOS 14 SDK now that we are
fully transitioned to RunningBoard.

  • Platform/spi/ios/RunningBoardServicesSPI.h:
  • UIProcess/ApplicationStateTracker.h:
  • UIProcess/ApplicationStateTracker.mm:

(WebKit::ApplicationStateTracker::ApplicationStateTracker):
(WebKit::isApplicationForeground):
(WebKit::ApplicationStateTracker::~ApplicationStateTracker):
(WebKit::isBackgroundState): Deleted.

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::isApplicationVisible):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd:
7:22 AM Changeset in webkit [260641] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[GTK][WPE] White-list more GStreamer environment variables in webkitpy
https://bugs.webkit.org/show_bug.cgi?id=210854
<rdar://problem/62238305>

Patch by Philippe Normand <pnormand@igalia.com> on 2020-04-24
Reviewed by Carlos Alberto Lopez Perez.

Extra variables need to be white-listed when the webkitpy tooling
runs inside a gst-build environment, those variables are needed so
that uninstalled GStreamer plugins are correctly picked up.

Additionally we now correctly white-list the
WEBKIT_GST_USE_PLAYBIN3 env var. USE_PLAYBIN3 shouldn't be used
anymore.

  • Scripts/webkitpy/port/gtk.py:

(GtkPort.setup_environ_for_server):

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.setup_environ_for_server):

7:12 AM Changeset in webkit [260640] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Gardening, mark fast/css/resize-corner-tracking.html as flaky
https://bugs.webkit.org/show_bug.cgi?id=210969

Unreviewed gardening.

Apparently the test is only failing in GTK and WPE test bots.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
5:14 AM WebKitGTK/2.28.x edited by clopez@igalia.com
(diff)
3:37 AM Changeset in webkit [260639] by commit-queue@webkit.org
  • 4 edits in trunk/JSTests

Skip on ARM and MIPS stress/for-of-iterator-open* added at r260585
https://bugs.webkit.org/show_bug.cgi?id=210961

Unreviewed Gardening.

Patch by Paulo Matos <Paulo Matos> on 2020-04-24

  • stress/for-of-iterator-open-osr-at-inlined-return-non-object.js:
  • stress/for-of-iterator-open-osr-at-iterator-set-local.js:
  • stress/for-of-iterator-open-return-non-object.js:
3:35 AM Changeset in webkit [260638] by youenn@apple.com
  • 1 edit
    2 deletes in trunk/LayoutTests

getDisplayMedia is not respecting aspect ratio with max constraints
https://bugs.webkit.org/show_bug.cgi?id=210858
<rdar://problem/61405434>

Unreviewed.
Remove these tests as it is redundant with getDisplayMedia-max-constraints 1 2 and 3.

  • fast/mediastream/getDisplayMedia-max-constraints-expected.txt: Removed.
  • fast/mediastream/getDisplayMedia-max-constraints.html: Removed.
2:58 AM Changeset in webkit [260637] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.28.2

WebKitGTK 2.28.2

2:57 AM Changeset in webkit [260636] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.28.2 release

.:

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

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.28.2.
2:39 AM WebKitGTK/2.28.x edited by Carlos Garcia Campos
(diff)
2:22 AM Changeset in webkit [260635] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Gardening, expected to fail but passing
https://bugs.webkit.org/show_bug.cgi?id=210960

Unreviewed gardening.

  • platform/wpe/TestExpectations:
2:21 AM Changeset in webkit [260634] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.28

Merge r256766 - [Wasm] REGRESSION(r256665): Wasm->JS call IC needs to save memory size register
https://bugs.webkit.org/show_bug.cgi?id=207849

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/regress-256665.js: Added.

(f):

Source/JavaScriptCore:

When generating the call IC, we should select the callee saves using BoundsChecking mode in order
to obey to the calling conventions described in r256665. Currently, we won't restore the memory size
register when calling the Wasm LLInt through the call IC.

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::calleeSaves const):

2:21 AM Changeset in webkit [260633] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/JSTests

Merge r256698 - Unreviewed: fix broken tests added in r256665
https://bugs.webkit.org/show_bug.cgi?id=207727

Our inline WAT doesn't seem to like named blocks/branch targets.

  • wasm/regress/llint-callee-saves-with-fast-memory.js:
  • wasm/regress/llint-callee-saves-without-fast-memory.js:
2:20 AM Changeset in webkit [260632] by Carlos Garcia Campos
  • 9 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r256665 - [WASM] Wasm interpreter's calling convention doesn't match Wasm JIT's convention.
https://bugs.webkit.org/show_bug.cgi?id=207727

JSTests:

Reviewed by Mark Lam.

  • wasm/regress/llint-callee-saves-with-fast-memory.js: Added.
  • wasm/regress/llint-callee-saves-without-fast-memory.js: Added.

Source/JavaScriptCore:

Reviewed by Mark Lam.

The Wasm JIT has unusual calling conventions, which were further complicated by the addition
of the interpreter, and the interpreter did not correctly follow these conventions (by incorrectly
saving and restoring the callee save registers used for the memory base and size). Here's a summary
of the calling convention:

  • When entering Wasm from JS, the wrapper must:
    • Preserve the base and size when entering LLInt regardless of the mode. (Prior to this patch we only preserved the base in Signaling mode)
    • Preserve the memory base in either mode, and the size for BoundsChecking.
  • Both tiers must preserve every *other* register they use. e.g. the LLInt must preserve PB and wasmInstance, but must *not* preserve memoryBase and memorySize.
  • Changes to memoryBase and memorySize are visible to the caller. This means that:
    • Intra-module calls can assume these registers are up-to-date even if the memory was resized. The only exception here is if the LLInt calls a signaling JIT, in which case the JIT will not update the size register, since it won't be using it.
    • Inter-module and JS calls require the caller to reload these registers. These calls may result in memory changes (e.g. the callee may call memory.grow).
    • A Signaling JIT caller must be aware that the LLInt may trash the size register, since it always bounds checks.
  • llint/WebAssembly.asm:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::addCall):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addCall):

  • wasm/WasmCallee.cpp:

(JSC::Wasm::LLIntCallee::calleeSaveRegisters):

  • wasm/WasmCallingConvention.h:
  • wasm/WasmLLIntPlan.cpp:

(JSC::Wasm::LLIntPlan::didCompleteCompilation):

  • wasm/WasmMemoryInformation.cpp:

(JSC::Wasm::PinnedRegisterInfo::get):
(JSC::Wasm::getPinnedRegisters): Deleted.

2:20 AM Changeset in webkit [260631] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r260570 - [GTK] Crash in cairo_surface_mark_dirty_rectangle() in accelerated compositing mode under X11
https://bugs.webkit.org/show_bug.cgi?id=210636

Patch by John Frankish <john.frankish@outlook.com> on 2020-04-23
Reviewed by Carlos Garcia Campos.

When cairo is configured to use xcb instead of xlib, it might use an image surface attached to the xlib one as
snapshot. In that case a flush is needed to detach that snapshot after we have drawn the surface in the
context.

  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::AcceleratedBackingStoreX11::paint): Call cairo_surface_flush() after drawing.

2:20 AM Changeset in webkit [260630] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r260567 - [GTK] excessive wakeups/polling due to gdk_frame_clock_begin_updating
https://bugs.webkit.org/show_bug.cgi?id=210561

Reviewed by Žan Doberšek.

The problem is that we are destroying the display refresh monitor from the frame clock update callback, and GTK
schedules another update from the callback itself in some cases, which ends up happening forever. We were
assuming that destroying the window of immediately destroy the frame clock as well, but the paint source idle
keeps a reference of the frame clock. At the end of the source idle callback the source is scheduled again,
taking a new reference. We need to call gdk_frame_clock_end_updating() to ensure the idle is not scheduled
again.

  • platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp:

(WebCore::DisplayRefreshMonitorGtk::~DisplayRefreshMonitorGtk): Disconnect the update signal and call
gdk_frame_clock_end_updating().
(WebCore::DisplayRefreshMonitorGtk::requestRefreshCallback): Toplevel window should always have a frame clock,
so remove the early return and add an assert instead.

2:20 AM Changeset in webkit [260629] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.28

Merge r260506 - [GStreamer][MSE] Youtube 'live stream'/H264 URLs fail to play, VP8/9 URLs play OK
https://bugs.webkit.org/show_bug.cgi?id=209119

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

The fix consists of removing the initial avoiding of seeking and just
issuing the proper segment instead of seeking (seeks in GStreamer can't
be done before prerolling anyway). Appsrc doesn't make easy to emit our
own custom segment, so what I did was to use a segment fixer probe to
modify the original [0, infinity] segment issued by appsrc and use
a [startTime, stopTime] with proper values depending on the seek target
and rate.

Covered by existing tests.

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::checkShouldDelaySeek): Don't hold seeks on startup, when changing from READY to PAUSED.
(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek): Refactored seek delay condition. Also, don't do a regular
gst_element_seek() for initial seeks, just proceed with a special case in that situation.

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(initialSeekSegmentFixerProbe): Probe that fixes the segment.
(webKitMediaSrcPrepareInitialSeek): Behave much like a regular seek, but also compute the right GstSegment, install
the segment fixer probe and setReadyForMoreSamples() on the SourceBufferPrivates.

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.h:

LayoutTests:

Unskipped media/media-source/media-source-seek-redundant-append.html,
which passes now.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
2:20 AM Changeset in webkit [260628] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r260252 - [GTK][X11] REGRESSION(r259944): Wrong position of select popup menu in X11
https://bugs.webkit.org/show_bug.cgi?id=210603

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-04-17
Reviewed by Michael Catanzaro.

gdk_window_move_to_rect expects the given rectangle in coordinates relative to the top-left corner of the window
that the popup window is transient for. We were using screen coordinates.

  • UIProcess/gtk/WebPopupMenuProxyGtk.cpp:

(WebKit::WebPopupMenuProxyGtk::showPopupMenu): Translate widget coordinates to window coordinates before passing
the rectangle to gdk_window_move_to_rect().

2:20 AM Changeset in webkit [260627] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r260244 - [GTK] UI process crash when entering compositing mode when WPE_RENDERER is enabled
https://bugs.webkit.org/show_bug.cgi?id=209118

Reviewed by Michael Catanzaro.

Check if EGL_WL_bind_wayland_display extension is available when using WPE_RENDERER, since we don't suport the
SHM interface.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::checkRequirements): Return false if EGL_WL_bind_wayland_display is not present.

2:20 AM Changeset in webkit [260626] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WTF

Merge r260179 - Unreviewed, set CeilingOnPageSize for MIPS64

This fixes a build failure ("Must set CeilingOnPageSize in
PageBlock.h").

  • wtf/PageBlock.h:
1:27 AM Changeset in webkit [260625] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

Add missing HTMLNames:: namespace prefix to usage of liTag object

Unreviewed build fix.

No new tests needed.

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::observeParagraphs):

12:59 AM Changeset in webkit [260624] by commit-queue@webkit.org
  • 5 edits in trunk/LayoutTests

Import fetch/stale-while-revalidate/fetch.html
https://bugs.webkit.org/show_bug.cgi?id=210905

Patch by Rob Buis <rbuis@igalia.com> on 2020-04-24
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Import fetch/stale-while-revalidate/fetch.html to try to fix
flakiness (see https://bugs.webkit.org/show_bug.cgi?id=207230).

  • web-platform-tests/fetch/stale-while-revalidate/fetch.html:

LayoutTests:

This test should not be flaky anymore.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:

Apr 23, 2020:

11:57 PM Changeset in webkit [260623] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r257759): Network: waterfall popover is missing bars
https://bugs.webkit.org/show_bug.cgi?id=210947

Reviewed by Brian Burg.

WI.ResourceTimingBreakdownView is also used inside of a WI.Popover, meaning that the
waterfall graph won't be a child of the .network-table. Add a .network class to all
instances of .waterfall so that the selector can be more specific.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._populateWaterfallGraph):

  • UserInterface/Views/NetworkTableContentView.css:

(.waterfall.network .block): Added.
(body[dir=ltr] .waterfall.network .block): Added.
(body[dir=rtl] .waterfall.network .block): Added.
(.waterfall.network .block + .block): Added.
(.waterfall.network .block:matches(.mouse-tracking, .filler) + .block:not(.mouse-tracking, .filler), .waterfall.network .block:not(.request, .response) + :matches(.request, .response)): Added.
(.waterfall.network .block:last-child): Added.
(.waterfall.network .block.request,): Added.
(.waterfall.network .block.mouse-tracking): Added.
(.waterfall.network .block.filler): Added.
(.waterfall.network .block.redirect): Added.
(.waterfall.network .block.queue): Added.
(.waterfall.network .block.dns): Added.
(.waterfall.network .block.connect): Added.
(.waterfall.network .block.secure): Added.
(.waterfall.network .block.request): Added.
(.waterfall.network .block.response): Added.
(.network-table .waterfall .block): Deleted.
(body[dir=ltr] .network-table .waterfall .block): Deleted.
(body[dir=rtl] .network-table .waterfall .block): Deleted.
(.network-table .waterfall .block + .block): Deleted.
(.network-table .waterfall .block:matches(.mouse-tracking, .filler) + .block:not(.mouse-tracking, .filler), .network-table .waterfall .block:not(.request, .response) + :matches(.request, .response)): Deleted.
(.network-table .waterfall .block:last-child): Deleted.
(.network-table .waterfall .block.request,): Deleted.
(.network-table .waterfall .block.mouse-tracking): Deleted.
(.network-table .waterfall .block.filler): Deleted.
(.network-table .waterfall .block.redirect): Deleted.
(.network-table .waterfall .block.queue): Deleted.
(.network-table .waterfall .block.dns): Deleted.
(.network-table .waterfall .block.connect): Deleted.
(.network-table .waterfall .block.secure): Deleted.
(.network-table .waterfall .block.request): Deleted.
(.network-table .waterfall .block.response): Deleted.

  • UserInterface/Views/ResourceTimingBreakdownView.js:

(WI.ResourceTimingBreakdownView.prototype.initialLayout):

11:51 PM Changeset in webkit [260622] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Make CachedResourceLoader more conforming to Fetch specification
https://bugs.webkit.org/show_bug.cgi?id=210925

Patch by Rob Buis <rbuis@igalia.com> on 2020-04-23
Reviewed by Alex Christensen.

Make CachedResourceLoader more conforming to Fetch specification
by fixing links, re-ordering steps to match main fetch [1] and do
early exit code paths earlier.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestImage): adjust to parameter change.
(WebCore::CachedResourceLoader::canRequest): replace CachedResourceRequest param with ResourceLoaderOptions.
(WebCore::CachedResourceLoader::prepareFetch): fix comment.
(WebCore::CachedResourceLoader::requestResource): re-order.

  • loader/cache/CachedResourceLoader.h:
10:43 PM Changeset in webkit [260621] by Alexey Shvayka
  • 6 edits
    2 deletes in trunk

Remove revoked Proxy checks from ProxyCreate
https://bugs.webkit.org/show_bug.cgi?id=210862

Reviewed by Ross Kirsling.

JSTests:

Removes expectations for 2 invalid ChakraCore tests.

  • ChakraCore.yaml: Mark 2 test cases as passing.
  • ChakraCore/test/es6/arraywithproxy.baseline: Removed.
  • ChakraCore/test/es6/proxytest9.baseline: Removed.
  • stress/proxy-revoke.js: Adjust test.
  • test262/expectations.yaml: Mark 12 test cases as passing.

Source/JavaScriptCore:

This change removes revoked Proxy checks from ProxyCreate [1], implementing
https://github.com/tc39/ecma262/pull/1814 and aligning JSC with SpiderMonkey.
Also cleans up ProxyObject creation by using isFunction() instead of
isCallable(), which are identical.

[1]: https://tc39.es/ecma262/#sec-proxycreate (steps 2, 4)

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::structureForTarget):
(JSC::ProxyObject::finishCreation):

10:14 PM Changeset in webkit [260620] by ysuzuki@apple.com
  • 5 edits in trunk/Tools

stress/ensure-crash.js shouldn't spew stuff onto my screen
https://bugs.webkit.org/show_bug.cgi?id=210931

Reviewed by Ross Kirsling.

Set noisyOutputHandler when crash! is specified. We also specify noisyOutputHandler for runComplexTest.

  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitruby/jsc-stress-test-writer-default.rb:
  • Scripts/webkitruby/jsc-stress-test-writer-playstation.rb:
  • Scripts/webkitruby/jsc-stress-test-writer-ruby.rb:
9:52 PM Changeset in webkit [260619] by ysuzuki@apple.com
  • 2 edits in trunk

Make JSCOnly work on macOS
https://bugs.webkit.org/show_bug.cgi?id=210953

Reviewed by Ross Kirsling.

In JSCOnly port on macOS, we should disable ICU API renaming because OS shipped ICU does not have version suffix.

  • Source/cmake/OptionsJSCOnly.cmake:
9:46 PM Changeset in webkit [260618] by Lauro Moura
  • 5 edits in trunk/LayoutTests

Use shouldRejectWithErrorName after r260579.

The mentioned revision made shouldRejectWithErrorName (and
shouldReject) actually omit the error name when it was not requested.

So now to catch the desired error we must actually request it
instead of just relying on the expectation file messages.

Unreviewed test gardening.

  • crypto/subtle/ecdh-import-pkcs8-key-p256-validate-ecprivatekey-parameters-publickey.html:
  • crypto/subtle/ecdh-import-pkcs8-key-p384-validate-ecprivatekey-parameters-publickey.html:
  • crypto/subtle/ecdsa-import-pkcs8-key-p256-validate-ecprivatekey-parameters-publickey.html:
  • crypto/subtle/ecdsa-import-pkcs8-key-p384-validate-ecprivatekey-parameters-publickey.html:
8:31 PM Changeset in webkit [260617] by ysuzuki@apple.com
  • 2 edits in trunk/Tools

Disable useKernTCSM=false for JSC stress tests to make EWS faster
https://bugs.webkit.org/show_bug.cgi?id=210950

Reviewed by Mark Lam.

This patch removes "JSC_useKernTCSM=false" environment variable in JSC stress tests.
Alexey found that this causes EWS JSC stress tests slow down (from roughly 63 mins to 83 mins).
This slow down happens in Mac Pro (which is used in JSC EWS right now), and this slow down does
not happen in Mac mini (post-commit buildbot) and rather improves Mac Mini execution time by 15%,
but keeping EWS faster is more important than making post-commit bots faster.

  • Scripts/run-javascriptcore-tests:
6:14 PM Changeset in webkit [260616] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

Move the storage of DisplayID from Chrome to Page
https://bugs.webkit.org/show_bug.cgi?id=210943

Reviewed by Tim Horton.

The less Chrome knows about Frames and Documents the better. At some point Page is going
to talk to ScrollingCoordinator in this callback too.

  • page/Chrome.cpp:

(WebCore::Chrome::displayID const):
(WebCore::Chrome::windowScreenDidChange):

  • page/Chrome.h:
  • page/Page.cpp:

(WebCore::Page::windowScreenDidChange):

  • page/Page.h:

(WebCore::Page::displayID const):

6:08 PM Changeset in webkit [260615] by Simon Fraser
  • 10 edits
    3 adds in trunk

EventHandler::selectCursor() has broken resize over coordinate conversion code
https://bugs.webkit.org/show_bug.cgi?id=210778

Reviewed by Zalan Bujtas.

Source/WebCore:

EventHandler::selectCursor() appeared to make a local hit-test point from window
to content coordinates, which made no sense, but this happened to work because
RenderLayer::hitTestLayer() set the HitTestResult localPoint to a global point
if you hit the resizer.

Clean up this mess by having all resizer-related geometry queries be in local coordinates.

As a bonus, actually set the cursor to a resize cursor when over the resizer.

Test: fast/events/cursors/mouse-cursor-over-resizer.html

  • page/EventHandler.cpp:

(WebCore::EventHandler::selectCursor):
(WebCore::EventHandler::handleMousePressEvent):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::resize):
(WebCore::RenderLayer::offsetFromResizeCorner const):
(WebCore::RenderLayer::isPointInResizeControl const):
(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::hitTestResizerInFragments const):

  • rendering/RenderLayer.h:

LayoutTests:

  • TestExpectations:
  • fast/events/cursors/mouse-cursor-over-resizer-expected.txt: Added.
  • fast/events/cursors/mouse-cursor-over-resizer.html: Added.
  • fast/events/mouse-cursor-change.html:
  • platform/mac-wk2/TestExpectations:
  • resources/ui-helper.js:

(window.UIHelper.async moveMouseAndWaitForFrame):

6:08 PM Changeset in webkit [260614] by Simon Fraser
  • 8 edits in trunk/Source/WebKit

Bounce displayWasRefreshed() via EventDispatcher
https://bugs.webkit.org/show_bug.cgi?id=208778

Reviewed by Antti Koivisto.

Allow the WebContent process to be notified of display refresh off the main thread, so other
threads like the scrolling thread can respond without being blocked. Achieve this
by having EventDispatcher receive the IPC message, then bounce it to the main thread.

  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::displayLinkCallback):

  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::displayWasRefreshed):

  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/WebPage/EventDispatcher.messages.in:
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::displayWasRefreshed):

6:05 PM Changeset in webkit [260613] by Devin Rousso
  • 9 edits
    2 adds in trunk

Web Insspector: Storage: cannot select multiple local storage entries
https://bugs.webkit.org/show_bug.cgi?id=210876

Reviewed by Brian Burg.

Source/WebInspectorUI:

Support multiple selection using WI.DataGrid.

  • UserInterface/Views/DataGrid.js:

(WI.DataGrid):
(WI.DataGrid.prototype.get allowsMultipleSelection): Added.
(WI.DataGrid.prototype.set allowsMultipleSelection): Added.
(WI.DataGrid.prototype.get selectedNode):
(WI.DataGrid.prototype.set selectedNode):
(WI.DataGrid.prototype.get selectedDataGridNodes): Added.
(WI.DataGrid.prototype._keyDown):
(WI.DataGrid.prototype.selectNodes):
(WI.DataGrid.prototype._mouseDownInDataTable):
(WI.DataGrid.prototype._contextMenuInDataTable):
(WI.DataGrid.prototype.handleCopyEvent):
(WI.DataGrid.prototype._copyRow):
(WI.DataGrid.prototype._copyTable):
(WI.DataGrid.prototype._hasCopyableData):
(WI.DataGrid.prototype.selectDataGridNodeInternal): Added.
(WI.DataGrid.prototype.deselectDataGridNodeInternal): Added.
(WI.DataGrid.prototype._dispatchSelectedNodeChangedEvent): Added.
(WI.DataGrid.prototype.dataGridNodeForSelectionItem): Added.
(WI.DataGrid.prototype.selectionItemForDataGridNode): Added.
(WI.DataGrid.prototype.selectionControllerSelectionDidChange): Added.
(WI.DataGrid.prototype.selectionControllerFirstSelectableItem): Added.
(WI.DataGrid.prototype.selectionControllerLastSelectableItem): Added.
(WI.DataGrid.prototype.selectionControllerPreviousSelectableItem): Added.
(WI.DataGrid.prototype.selectionControllerNextSelectableItem): Added.

  • UserInterface/Views/DataGridNode.js:

(WI.DataGridNode.prototype.select):
(WI.DataGridNode.prototype.deselect):
Replace selectedNode with a WI.SelectionController that behaves like a WI.TreeOutline.
Use the WI.SelectionController.Operation to ensure that WI.PlaceholderDataGridNode are
not selected unless directly chosen (i.e. not during shift selection or ⌘A). Add logic such
that WI.PlaceholderDataGridNode are not copied. Prefer _rows instead of children as
the latter is not sorted/filtered.

  • UserInterface/Controllers/SelectionController.js:

(WI.SelectionController.createTreeComparator): Added.
(WI.SelectionController.createListComparator): Added.
Create static helper functions for common comparators.

(WI.SelectionController.prototype.deselectItem):
(WI.SelectionController.prototype.selectAll):
(WI.SelectionController.prototype.removeSelectedItems):
(WI.SelectionController.prototype.handleItemMouseDown):
(WI.SelectionController.prototype._selectItemsFromArrowKey):
(WI.SelectionController.prototype._firstSelectableItem):
(WI.SelectionController.prototype._lastSelectableItem):
(WI.SelectionController.prototype._previousSelectableItem):
(WI.SelectionController.prototype._nextSelectableItem):
(WI.SelectionController.prototype._addRange):
(WI.SelectionController.prototype._deleteRange):
Introduce a WI.SelectionController.Operation which is used to tell the _delegate about
why it's being asked for information.

  • UserInterface/Views/DOMStorageContentView.js:

(WI.DOMStorageContentView):
(WI.DOMStorageContentView.prototype._deleteCallback):
Support multiple selection, including deleting multiple rows at once.

  • UserInterface/Views/Table.js:

(WI.Table):

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline):
(WI.TreeOutline.prototype.selectionControllerNumberOfItems): Deleted.
Removed unused selectionControllerNumberOfItems.

  • UserInterface/Views/ProfileView.js:

(WI.ProfileView):
(WI.ProfileView.prototype._dataGridNodeSelected):
Maintain a _selectedDataGridNode so that oldSelectedNode doesn't have to be included
when dispatching WI.DataGrid.Event.SelectedNodeChanged.

LayoutTests:

  • inspector/tree-outline/selection-controller-tree-comparator.html: Added.
  • inspector/tree-outline/selection-controller-tree-comparator-expected.txt: Added.
5:52 PM Changeset in webkit [260612] by Russell Epstein
  • 2 edits in branches/safari-609.2.9.0-branch/Source/WebKit

Apply patch. rdar://problem/62272256

5:46 PM Changeset in webkit [260611] by ddkilzer@apple.com
  • 4 edits in trunk/Source/WebKit

Clean up QuickLookThumbnailLoader
<https://webkit.org/b/210814>

Reviewed by Darin Adler.

The following items are cleaned up:

  • Extract using PlatformImage into QuickLookThumbnailLoader.h, rename to CocoaImage and use to get rid of duplicate code.
  • Change id to instancetype for -init methods.
  • Add atomic keyword to @property definitions that were using it as the default. (Use of atomic properties is rare in WebKit, so being explicit avoids a scenario where it looks like nonatomic was left off by accident.)
  • Change @property definitions to readonly that are never written to outside of QuickLookThumbnailLoader.mm.
  • Delete unused @property definitions.
  • Change method declarations into read-only @property definitions.
  • Re-declare atomic read-only @property definitions in QuickLookThumbnailLoader.h as read-write definitions in QuickLookThumbnailLoader.mm if they are written to.
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::convertPlatformImageToBitmap):

  • UIProcess/QuickLookThumbnailLoader.h:
  • Rename qlThumbnailGenerationQueue @property to just queue.
  • Remove contentType @property. It is not used anywhere. This also fixes a theoretical leak found by the clang static analyzer.
  • Remove shouldWrite @property. It is only used within QuickLookThumbnailLoader.mm.
  • Change identifier and thumbnail to @property declarations.
  • UIProcess/QuickLookThumbnailLoader.mm:
  • Change WKQLThumbnailLoadOperation._identifier type from NSMutableString to NSString. There was no reason for it to be mutable.

(-[WKQLThumbnailQueueManager init]):
(-[WKQLThumbnailQueueManager dealloc]):

  • Release _queue to fix theoretical leak found by the clang static analyzer.

(-[WKQLThumbnailLoadOperation initWithAttachment:identifier:]):
(-[WKQLThumbnailLoadOperation initWithURL:identifier:]):
(-[WKQLThumbnailLoadOperation start]):

  • Rename req to request.
  • Change separate #if macros to #if/#else since only one version of this code can be used at a time.

(-[WKQLThumbnailLoadOperation thumbnail]):

  • Use CocoaImage to use one copy of the method.
5:12 PM Changeset in webkit [260610] by ysuzuki@apple.com
  • 4 edits in trunk/Tools

Support --report-execution-time to report execution time for each JSC stress test
https://bugs.webkit.org/show_bug.cgi?id=210938

Reviewed by Saam Barati.

We can run run-javascriptcore-tests with --report-execution-time option to report execution time for each JSC stress test,
to figure out which test is taking a long time. It appends execution-time to the verbose log. To see it stderr, --verbose is also
required.

$ run-javascriptcore-tests .... --verbose --report-execution-time

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitruby/jsc-stress-test-writer-default.rb:
5:07 PM Changeset in webkit [260609] by Wenson Hsieh
  • 5 edits in trunk

Text manipulation does not account for text in fully clipped containers
https://bugs.webkit.org/show_bug.cgi?id=210940
<rdar://problem/61137648>

Reviewed by Tim Horton.

Source/WebCore:

Allow text manipulation to find both text in visibility: hidden; containers, as well as text in fully clipped
overflow containers. In both cases, renderers exist for these nodes, but TextIterator ignores them by default.
If these containers become visible in the future, we don't want to skip out on performing text manipulation on
them.

An alternative would be to detect when any element that has not undergone text manipulation has become visible
(i.e. no longer clipped by an ancestor), but this is likely more complicated (and possibly less performant) than
just eagerly extracting text from hidden containers, once they gain renderers.

TextManipulation.StartTextManipulationIncludesFullyClippedText

  • editing/TextManipulationController.cpp:

(WebCore::ParagraphContentIterator::ParagraphContentIterator):
(WebCore::TextManipulationController::didCreateRendererForElement):
(WebCore::TextManipulationController::scheduleObservationUpdate):
(WebCore::TextManipulationController::scheduleObservartionUpdate): Deleted.

While I'm here, also rename scheduleObservartionUpdate to scheduleObservationUpdate.

  • editing/TextManipulationController.h:

Tools:

Add a new text manipulation API test.

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

4:59 PM Changeset in webkit [260608] by Megan Gardner
  • 2 edits in trunk/Source/WebKit

Long pressing attachments in Notes does not activate Context Menu.
https://bugs.webkit.org/show_bug.cgi?id=210936
<rdar://problem/61171576>

Reviewed by Tim Horton.

Not having the ID available for notes makes their code to create the context
menu and its items fail. We should probably be passing this information on
for any element if we have it.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::selectionPositionInformation):

4:54 PM Changeset in webkit [260607] by Alan Coon
  • 1 copy in tags/Safari-610.1.11.1

Tag Safari-610.1.11.1.

4:45 PM Changeset in webkit [260606] by jer.noble@apple.com
  • 6 edits in trunk/Tools

REGRESSION (r260278): TestWebKitAPI.Fullscreen.Delegate is timing out on macOS bots
https://bugs.webkit.org/show_bug.cgi?id=210676
<rdar://problem/61953702>

Reviewed by Daniel Bates.

A number of API tests modify the WKWebViewConfiguration after calling -[WKWebView initWithFrame:configuration:], which
could be a source of failures or flakiness. Update these tests to set those configuration values before passing the
configuration to WKWebView.

  • TestWebKitAPI/Tests/WebKitCocoa/FullscreenAlert.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/FullscreenDelegate.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/FullscreenLayoutConstraints.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/PictureInPictureDelegate.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/TopContentInset.mm:

(TestWebKitAPI::TEST):

4:43 PM Changeset in webkit [260605] by Alan Coon
  • 8 edits in branches/safari-610.1.11-branch/Source

Versioning.

4:04 PM Changeset in webkit [260604] by Alan Coon
  • 8 edits in branches/safari-609.2.9.0-branch/Source

Versioning.

3:52 PM Changeset in webkit [260603] by sbarati@apple.com
  • 5 edits
    1 add in trunk/Tools

DumpRenderTree should have the JIT entitlement on Mac
https://bugs.webkit.org/show_bug.cgi?id=210887
<rdar://problem/62228740>

Reviewed by Tim Horton.

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
  • DumpRenderTree/mac/Configurations/DumpRenderTree.entitlements: Added.
  • DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
3:21 PM Changeset in webkit [260602] by Alan Coon
  • 1 copy in tags/Safari-610.1.11

Tag Safari-610.1.11.

3:00 PM Changeset in webkit [260601] by Ross Kirsling
  • 2 edits in trunk/JSTests

Unreviewed test262 gardening following r260591.

  • test262/expectations.yaml:

Fix expectations to reflect ICU 64.

2:34 PM Changeset in webkit [260600] by Brent Fulgham
  • 5 edits in trunk/Source/WebKit

Allow "kern.osversion" sysctl read
https://bugs.webkit.org/show_bug.cgi?id=210929
<rdar://problem/62256013>

Reviewed by Per Arne Vollan.

Libdispatch checks "kern.osversion" as part of the code path we use for launching our XPC services.
We already allow it for some services (Network Process), and should be doing so for our other
helper processes.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
2:24 PM Changeset in webkit [260599] by Peng Liu
  • 2 edits
    1 delete in trunk/Source/WebKit

Remove the WebKit.plist for Feature Flags
https://bugs.webkit.org/show_bug.cgi?id=210534

Reviewed by Simon Fraser.

  • FeatureFlags/WebKit.plist: Removed.
  • WebKit.xcodeproj/project.pbxproj:
2:08 PM Changeset in webkit [260598] by commit-queue@webkit.org
  • 3 edits
    4 adds in trunk

Allow credentials for same-origin css mask images
https://bugs.webkit.org/show_bug.cgi?id=210895
<rdar://problem/60093888>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-04-23
Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/css-mask-image-credentials.html

r230006 went a step too far in restricting what is allowed with css mask images.
Basic authentication credentials should be allowed with such requests as they are in Chrome and Firefox.
This can be seen by doing run-webkit-httpd then opening http://127.0.0.1:8000/security/css-mask-image-credentials.html
In Chrome and Firefox you'll see it forward to a page that has a blue square.
In Safari before this change you'll see a yellow square and a basic authentication prompt.
In Safari after this change you'll see the same blue square you see in Chrome and Firefox.

  • style/StylePendingResources.cpp:

(WebCore::Style::loadPendingImage):

LayoutTests:

  • http/tests/security/css-mask-image-credentials-expected.html: Added.
  • http/tests/security/css-mask-image-credentials.html: Added.
  • http/tests/security/resources/css-mask-image-credentials-2.html: Added.
  • http/tests/security/resources/image-credential-check.php: Added.
1:59 PM Changeset in webkit [260597] by commit-queue@webkit.org
  • 5 edits in trunk/Source

Jesus Calling app needs more WebSQL
https://bugs.webkit.org/show_bug.cgi?id=210889
<rdar://problem/61795507>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-04-23
Reviewed by Chris Dumez.

Source/WebCore:

Manually verified this fixes the issue in the radar.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowInstanceFunctionOpenDatabaseBody):

Source/WebKitLegacy/mac:

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

1:37 PM Changeset in webkit [260596] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

Move applyUserAgentIfNeeded calls to a more central place
https://bugs.webkit.org/show_bug.cgi?id=209587

Patch by Rob Buis <rbuis@igalia.com> on 2020-04-23
Reviewed by Darin Adler.

Make main resource loads stop calling applyUserAgentIfNeeded
and instead do it in the CachedResourceLoader.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::addExtraFieldsToRequest):
(WebCore::FrameLoader::loadResourceSynchronously):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::createRequest):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::updateHTTPRequestHeaders):
(WebCore::CachedResourceLoader::requestResource):

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

(WebCore::CachedResourceRequest::updateReferrerAndOriginHeaders):
(WebCore::CachedResourceRequest::updateUserAgentHeader):
(WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): Deleted.

  • loader/cache/CachedResourceRequest.h:
1:28 PM Changeset in webkit [260595] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[iOS] Crash on RunningBoard process assertion invalidation
https://bugs.webkit.org/show_bug.cgi?id=210873
<rdar://problem/62194917>

Unreviewed, nil out the observer only after we've removed it to fix crashes on the bots.

  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::ProcessAssertion::~ProcessAssertion):

1:17 PM Changeset in webkit [260594] by Kate Cheney
  • 6 edits
    3 adds in trunk

All ITP database tables should reference the ObservedDomains table on DELETE CASCADE
https://bugs.webkit.org/show_bug.cgi?id=210874
<rdar://problem/62209438>

Reviewed by Brady Eidson.

Source/WebKit:

This makes it easier to delete an ITP entry from the entire database.
An entry shouldn't really exist outside of ObservedDomains anyways,
because that table holds all data about the domain, so this is a good
change to make regardless of the deletion use case.

(WebKit::needsNewCreateTableSchema):
Function to check for old CREATE TABLE queries.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
(WebKit::ResourceLoadStatisticsDatabaseStore::enableForeignKeys):
Must enable foreign keys to use DELETE CASCADE.

(WebKit::ResourceLoadStatisticsDatabaseStore::isMigrationNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToNewTablesIfNecessary):
Since this is a schema change that is executed when a table is created, we
need to check if the current schema is out of date. If so, we can
create new tables using the proper reference and migrate the data.

(WebKit::ResourceLoadStatisticsDatabaseStore::openAndDropOldDatabaseIfNecessary):
We only need to migrate the data if there were no issues with the
schema (otherwise the entire database will already have been created
with the correct CREATE TABLE queries).

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:

Tools:

Adds a new database file with pre-entered values and the old schema.
Adds an API test which checks if the data was migrated after
initializing the ITP database.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/incorrectCreateTableSchema.db: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/incorrectCreateTableSchema.db-shm: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/incorrectCreateTableSchema.db-wal: Added.
1:14 PM WebKitGTK/2.28.x edited by clopez@igalia.com
(diff)
1:09 PM WebKitGTK/2.28.x edited by clopez@igalia.com
(diff)
1:08 PM Changeset in webkit [260593] by don.olmstead@sony.com
  • 8 edits in trunk

[CMake] CMAKE_BINARY_DIR should always be a PRIVATE include directory
https://bugs.webkit.org/show_bug.cgi?id=196717

Reviewed by Michael Catanzaro.

Source/WebKit:

Include CMAKE_BINARY_DIR either directly or through WebKit_PRIVATE_INCLUDE_DIRECTORIES.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:

Source/WTF:

Remove public includes in WTF.

  • wtf/CMakeLists.txt:

Tools:

Include CMAKE_BINARY_DIR.

  • MiniBrowser/gtk/CMakeLists.txt:
  • TestWebKitAPI/glib/CMakeLists.txt:
1:06 PM Changeset in webkit [260592] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebKit

Regression after r260359 ([GTK][WPE] lowWatermarkPages() in MemoryPressureMonitor.cpp only searches the "low" value inside the first "Node" section)
https://bugs.webkit.org/show_bug.cgi?id=210916

Reviewed by Carlos Alberto Lopez Perez.

Switch over to using a FileHandle type based on std::unique_ptr with a custom deleter and an
utility function for opening files. This makes easier to follow the logic inside the polling
loop for opening files and retrying when needed. This also fixes exiting the thread when the
systemMemoryUsedAsPercentage() function would return -1, to loop restart instead to keep
trying.

Thanks to Pablo Saavedra for his help in making this patch.

No new tests needed.

  • UIProcess/linux/MemoryPressureMonitor.cpp:

(WebKit::FileHandleDeleter::operator()): Add deleter to use with std::unique_ptr<>.
(WebKit::tryOpeningForUnbufferedReading): Add utility function to open a file handle if
needed and configuring its buffering upon opening.
(WebKit::MemoryPressureMonitor::start): Use FileHandle to ensure that handles are always
closed properly, and fix logic retry opening files on failure.

1:06 PM WebKitGTK/2.28.x edited by clopez@igalia.com
(diff)
12:57 PM Changeset in webkit [260591] by Alexey Shvayka
  • 61 edits
    2 copies
    3 moves
    107 adds
    3 deletes in trunk/JSTests

Update test262 to commit 31dabb5618e2
https://bugs.webkit.org/show_bug.cgi?id=210921

Reviewed by Ross Kirsling.

  • test262/config.yaml: Skip "Atomics.waitAsync" feature.
  • test262/expectations.yaml:
  • test262/harness/*: Updated.
  • test262/latest-changes-summary.txt:
  • test262/test/*: Updated.
  • test262/test262-Revision.txt:
12:49 PM Changeset in webkit [260590] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: Elements: Styles: color functions are missing swatches
https://bugs.webkit.org/show_bug.cgi?id=210930

Reviewed by Brian Burg.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype._replaceSpecialTokens):
(WI.SpreadsheetStyleProperty.prototype._addGradientTokens):
(WI.SpreadsheetStyleProperty.prototype._addColorTokens):
(WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens):
(WI.SpreadsheetStyleProperty.prototype._addBoxShadowTokens):
(WI.SpreadsheetStyleProperty.prototype._addVariableTokens):
Only attempt to WI.Color.fromString when at a ")" that is not part of another function.
Drive-by: add variable tokens after variable text is resolved, as otherwise the variable is

replaced with a WI.InlineSwatch, which replaces the original text, preventing it
from being used for looking up the variable name.

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

Web Inspector: Uncaught Exception: SyntaxError: Invalid regular expression: missing )
https://bugs.webkit.org/show_bug.cgi?id=210890

Reviewed by Brian Burg.

  • UserInterface/Base/SearchUtilities.js:

(WI.SearchUtilities.prototype._regExpForString):
Catch any exceptions from new RegExp and return null in that case.

  • UserInterface/Views/FilterBar.js:

(WI.FilterBar):
(WI.FilterBar.prototype.get invalid): Added.
(WI.FilterBar.prototype.set invalid): Added.
(WI.FilterBar.prototype.clear):

  • UserInterface/Views/FilterBar.css:

(:matches(.filter-bar, .search-bar).invalid > input[type="search"]): Added.

  • UserInterface/Views/CookieStorageContentView.js:

(WI.CookieStorageContentView.prototype._updateFilteredCookies):

  • UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:

(WI.IndexedDatabaseObjectStoreContentView.prototype.dataGridMatchNodeAgainstCustomFilters):

  • UserInterface/Views/NavigationSidebarPanel.js:

(WI.NavigationSidebarPanel.prototype.updateFilter):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._urlFilterDidChange):

  • UserInterface/Views/SearchSidebarPanel.js:

(WI.SearchSidebarPanel):
(WI.SearchSidebarPanel.prototype.performSearch):
(WI.SearchSidebarPanel.prototype.performSearch.forEachMatch):

  • UserInterface/Views/SearchSidebarPanel.css:

(.sidebar > .panel.navigation.search > .search-bar > input[type="search"]): Added.
Mark the WI.FilterBar as invalid if the filterRegExpForString is invalid.

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement.prototype._highlightSearchResults):

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView.prototype.performSearch):

  • UserInterface/Views/ResourceHeadersContentView.js:

(WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs):

  • UserInterface/Views/ResourceSecurityContentView.js:

(WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor.prototype.customPerformSearch):
(WI.SourceCodeTextEditor.prototype.customPerformSearch.searchResultCallback):

  • UserInterface/Views/TextEditor.js:

(WI.TextEditor.prototype.performSearch):
Ensure that the WI.FindBanner shows 0 results if the searchRegExpForString is invalid.

  • UserInterface/Main.html:
  • UserInterface/Views/SearchBar.js: Removed.
  • UserInterface/Views/SearchBar.css: Removed.

Removed unused WI.SearchBar.

12:44 PM Changeset in webkit [260588] by commit-queue@webkit.org
  • 50 edits in trunk

[WebGL2] Update texture packing code for software uploads from DOM
https://bugs.webkit.org/show_bug.cgi?id=209515

Patch by Kenneth Russell <kbr@chromium.org> on 2020-04-23
Reviewed by Dean Jackson.

Source/WebCore:

Update the bottommost DOM-to-texture packing code in
GraphicsContextGLOpenGL and FormatConverter to full WebGL 2.0
capability. Reorganize some code to make side-by-side comparisons
easier with other WebGL 2.0 implementations.

Added NEEDS_PORT comments to areas in the calling code which need
particular attention in subsequent patches. Roughly two more
patches will be needed on top of this one in order to fully pass
the associated conformance tests.

Fix a bug in the non-ANGLE ENABLE(WEBGL2) code path which
accidentally disabled WebGL entirely in this configuration.

Covered by the WebGL 2.0 conformance tests.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):
(WebCore::WebGLRenderingContextBase::copyTexSubImage2D):
(WebCore::WebGLRenderingContextBase::readPixels):
(WebCore::WebGLRenderingContextBase::texImageSource2D):
(WebCore::WebGLRenderingContextBase::texImage2DImpl):
(WebCore::WebGLRenderingContextBase::texImage2D):
(WebCore::WebGLRenderingContextBase::texSubImage2DImpl):
(WebCore::WebGLRenderingContextBase::texSubImage2D):
(WebCore::WebGLRenderingContextBase::validateTexFuncData):
(WebCore::WebGLRenderingContextBase::getPackPixelStoreParams const):
(WebCore::WebGLRenderingContextBase::getUnpackPixelStoreParams const):

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/FormatConverter.cpp:

(WebCore::convertFloatToHalfFloat):
(WebCore::float>):
(WebCore::uint8_t>):
(WebCore::uint16_t>):
(WebCore::int8_t>):
(WebCore::int16_t>):
(WebCore::uint32_t>):
(WebCore::int32_t>):
(WebCore::FormatConverter::convert):

  • platform/graphics/FormatConverter.h:

(WebCore::FormatConverter::FormatConverter):

  • platform/graphics/GraphicsContextGL.h:

(WebCore::GraphicsContextGL::hasAlpha):
(WebCore::GraphicsContextGL::hasColor):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::texImage2DResourceSafe):
(WebCore::GraphicsContextGLOpenGL::computeFormatAndTypeParameters):
(WebCore::GraphicsContextGLOpenGL::computeImageSizeInBytes):
(WebCore::GraphicsContextGLOpenGL::PixelStoreParams::PixelStoreParams):
(WebCore::GraphicsContextGLOpenGL::packImageData):
(WebCore::GraphicsContextGLOpenGL::extractImageData):
(WebCore::GraphicsContextGLOpenGL::extractTextureData):
(WebCore::TexelBytesForFormat):
(WebCore::GraphicsContextGLOpenGL::packPixels):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

LayoutTests:

Rebaseline WebGL 2.0 conformance tests affected by this patch.
Most updates are progressions; failures are largely caused by
sub-rectangle uploads not yet being implemented. The tests will
pass fully after the higher-level code is feature complete.

Skip the canvas_sub_rectangle tests, as their results will
continue to be wrong until the higher-level code is finished.

  • TestExpectations:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r16f-red-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r32f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8-red-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-r8ui-red_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg16f-rg-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg32f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8-rg-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_canvas/tex-2d-rgba8ui-rgba_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-r16f-red-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-r32f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-r8-red-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-r8ui-red_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-rg16f-rg-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-rg32f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-rg8-rg-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-rg8ui-rg_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-rgb8ui-rgb_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_data/tex-2d-rgba8ui-rgba_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-image-with-different-data-source-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-r16f-red-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-r32f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-r8-red-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-r8ui-red_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-rg16f-rg-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-rg32f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-rg8-rg-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-rg8ui-rg_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-rgb8ui-rgb_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/svg_image/tex-2d-rgba8ui-rgba_integer-unsigned_byte-expected.txt:
12:42 PM Changeset in webkit [260587] by Ryan Haddad
  • 4 edits
    1 delete in trunk/Tools

Unreviewed, reverting r260552.

Broke internal builds.

Reverted changeset:

"DumpRenderTree should have the JIT entitlement on Mac"
https://bugs.webkit.org/show_bug.cgi?id=210887
https://trac.webkit.org/changeset/260552

12:37 PM WebKitGTK/2.28.x edited by Adrian Perez de Castro
(diff)
12:29 PM Changeset in webkit [260586] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

Reduce iteration count and change how it invokes GC to reduce execution time of JSTests/stress/delete-property-dfg-inline.js
https://bugs.webkit.org/show_bug.cgi?id=210933

Reviewed by Keith Miller.

This test takes 7~ seconds in Release build with default run. And it takes 1 mins in several variants of JSC tests, which is too long.
By analyzing this, we found that this takes very long time,

  1. due to so frequent synchronous GC run
  2. due to large iteration count while function can get FTL with less counts

While ensuring all functions gets FTL, we reduce iteration count and GC invocations to reduce the execution time, the default run gets 200ms.

  • stress/delete-property-dfg-inline.js:

(noInline.blackbox.testSingleStructure):
(noInline.testSingleStructure.testInlineSingleStructure):
(noInline.testInlineSingleStructure.testExit):
(noInline.testExit.testSingleStructureMiss):
(noInline.testSingleStructureMiss.testSingleStructureMissStrict):
(noInline.testSingleStructureMissStrict.testSingleStructureMissNonConfigurable):
(noInline.testSingleStructureMissNonConfigurable.testSingleStructureEmpty):
(noInline.testSingleStructureEmpty.testPolymorphic):
(noInline.testPolymorphic.testPolyvariant):
(noInline.testPolyvariant.testConstantFolding):
(noInline.testConstantFolding.testObjectSinking):
(noInline.testObjectSinking.testProxy):
(noInline.testProxy.testTypedArray):
(noInline.testTypedArray.testMissMixed):
(noInline.testMissMixed.testMissNonMixed):
(noInline.testMissNonMixed.testByVal.noInline.test):
(noInline.testMissNonMixed.testByVal):
(noInline.assert.assert_throws): Deleted.

11:56 AM Changeset in webkit [260585] by keith_miller@apple.com
  • 8 edits
    6 adds in trunk

Fix OSR exiting/iterator object checks in for-of bytecodes
https://bugs.webkit.org/show_bug.cgi?id=210882

Reviewed by Saam Barati.

JSTests:

  • stress/for-of-iterator-next-osr-at-inlined-return-non-object.js: Added.

(vendNext):
(test):
(catch):

  • stress/for-of-iterator-next-osr-at-next-set-local.js: Added.

(vendNext):
(test):
(catch):

  • stress/for-of-iterator-open-osr-at-inlined-return-non-object.js: Added.

(vendIterator):
(test):
(catch):

  • stress/for-of-iterator-open-osr-at-iterator-set-local.js: Added.

(vendIterator):
(test):
(catch):

  • stress/for-of-iterator-open-return-non-object.js: Added.

(vendIterator):
(test):
(i.catch):

  • stress/test-for-of-cfg-simplication-exit-ok.js: Added.

(z.proto):

Source/JavaScriptCore:

This patch fixes some bugs in the DFGBytecodeParser where we would
set the exit origin for the SetLocal following the iterator_open/next
first call to the next bytecode. This meant that if out-of-line
Symbol.iterator or next functions returned an unexpected non-cell
we would OSR past the rest of the next bytecode rather than to the
first checkpoint.

This patch also makes sure we properly throw for non-objects returned
from either of the above functions in all tiers (and adds tests).

Finally, this patch makes a small optimization where we just ArithBitOr the
iterator's closed state (index == -1) and index is out of bounds. We can't
do a CompareBelow check because the index is effectively an int33_t.

  • bytecode/BytecodeIndex.h:

(JSC::BytecodeIndex::withCheckpoint const):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::nextOpcodeIndex const):
(JSC::DFG::ByteCodeParser::nextCheckpoint const):
(JSC::DFG::ByteCodeParser::progressToNextCheckpoint):
(JSC::DFG::ByteCodeParser::handleCall):
(JSC::DFG::ByteCodeParser::handleCallVariant):
(JSC::DFG::ByteCodeParser::handleInlining):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handlePutById):
(JSC::DFG::ByteCodeParser::parseGetById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):

  • jit/JITCall.cpp:

(JSC::JIT::emitSlow_op_iterator_open):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::handleIteratorNextCheckpoint):

11:47 AM Changeset in webkit [260584] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Gardening, update expectations after r260561
https://bugs.webkit.org/show_bug.cgi?id=210928

Unreviewed gardening.

Mark several new mediastream tests as Crash.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
11:35 AM WebKitGTK/2.28.x edited by berto@igalia.com
(diff)
11:09 AM Changeset in webkit [260583] by Wenson Hsieh
  • 4 edits in trunk

Add a heuristic for text manipulation to treat some list items as paragraph boundaries
https://bugs.webkit.org/show_bug.cgi?id=210915
<rdar://problem/61907080>

Reviewed by Megan Gardner.

Source/WebCore:

Adds a mechanism to allow text manipulation to emit an item containing the current list of text manipulation
tokens early, in the case where the paragraph content iterator crosses the boundary of an element that encloses
a paragraph. Currently, the only enclosing paragraph element will be list items that have display: block;,
which we can take as a hint that the text in these list items should be vended as separate items, rather than as
tokens in a single item.

This may be extended in the future to other situations by adjusting logic in isEnclosingParagraphElement.

Test: TextManipulation.StartTextManipulationBreaksParagraphInBetweenListItems

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::observeParagraphs):

Tools:

Add a new API test to exercise text manipulation over several different cases of lists and list items.

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

10:49 AM Changeset in webkit [260582] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[LFC][TFC] Add support for basic baseline align inside a table row
https://bugs.webkit.org/show_bug.cgi?id=210918

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/table-basic-row-baseline-align.html

The minimum height of a row is defined as the height of an hypothetical linebox containing
the cells originating in the row. In this hypothetical linebox, we use baseline alignment to
align the cells vertically.
Use these vertically aligned cells to compute the final row height.

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::verticalMarginBorderAndPadding const):
(WebCore::Display::Box::setVerticalPadding):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutInFlowContent):
(WebCore::Layout::TableFormattingContext::layoutCell):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace):

  • layout/tableformatting/TableFormattingContext.h:

LayoutTests:

  • fast/layoutformattingcontext/table-basic-row-baseline-align-expected.txt: Added.
  • fast/layoutformattingcontext/table-basic-row-baseline-align.html: Added.
10:48 AM Changeset in webkit [260581] by Nikos Mouchtaris
  • 4 edits
    2 adds in trunk/Source/WebKit

Soft link QuickLookThumbnailing framework
https://bugs.webkit.org/show_bug.cgi?id=210894

Reviewed by Megan Gardner.

Soft link QuickLookThumbnailing framework to solve build error.

No new tests. Unnecessary.

  • Configurations/WebKit.xcconfig:
  • UIProcess/QuickLookThumbnailLoader.mm:

(-[WKQLThumbnailLoadOperation initWithURL:identifier:]):
(-[WKQLThumbnailLoadOperation start]):

  • UIProcess/QuickLookThumbnailingSPI.h: Added.
  • UIProcess/QuickLookThumbnailingSoftLink.h: Added.
  • UIProcess/QuickLookThumbnailingSoftLink.mm: Added.
  • WebKit.xcodeproj/project.pbxproj:
10:36 AM Changeset in webkit [260580] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Unreviewed, reverting r260562.
https://bugs.webkit.org/show_bug.cgi?id=210924

It caused 3 new failures and 1 timeout in GTK API tests
(Requested by clopez on #webkit).

Reverted changeset:

"[GTK][WPE] White-list more GStreamer environment variables in
webkitpy"
https://bugs.webkit.org/show_bug.cgi?id=210854
https://trac.webkit.org/changeset/260562

10:26 AM Changeset in webkit [260579] by Chris Dumez
  • 3 edits in trunk/LayoutTests

http/tests/paymentrequest/page-cache-completed-payment-response.https.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207385
<rdar://problem/59260167>

Unreviewed, follow-up to r258373 to silence the error name when using shouldReject() and
actually fix the flakiness.

  • http/tests/paymentrequest/page-cache-completed-payment-response.https-expected.txt:
  • resources/js-test.js:

(shouldRejectWithErrorName):

10:23 AM Changeset in webkit [260578] by sihui_liu@apple.com
  • 4 edits in trunk

TextManipulationController should set range of paragraph using token's positions
https://bugs.webkit.org/show_bug.cgi?id=210866
<rdar://problem/60646283>

Reviewed by Wenson Hsieh.

Source/WebCore:

Set the range of paragraph using positions of first token and last token in the paragraph because:

  1. Accurate range makes token matching in TextManipulationController::replace() easier, as TextIterator could

visit different positions with different ranges or different conditions. For example, in our previous
implementation, start of a paragraph can be set as the first visible position of document, while position of
first token is after that. Then in replace(), TextManipulationController may extract a word before the position
of first token and return error. See added test TextManipulation.CompleteTextManipulationCorrectParagraphRange.

  1. TextManipulationController can handle fewer content and this is less error-prone. For example, svg elements

before/after the paragraph text will not be identified as tokens [] in a paragraph now. See updated API tests
for example.

New test: TextManipulation.CompleteTextManipulationCorrectParagraphRange

  • editing/TextManipulationController.cpp:

(WebCore::ParagraphContentIterator::moveCurrentNodeForward): m_currentNodeForFindingInvisibleContent should not
be advanced if it is already at the end.
(WebCore::containsOnlyHTMLSpaces):
(WebCore::TextManipulationController::observeParagraphs):Set the paragraph start as the position of the first
token and end as the position of last token. If the paragraph is split with <br>, the end will be extended to
position of <br> so that we can add this node back later; otherwise, <br> can be removed after original
text of paragraph is removed in TextManipulationController::replace(). Also, stop identifying spaces as tokens
because non-text Node can emit spaces.
(WebCore::TextManipulationController::replace): Only identify tokens from content with meaningful text.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

10:23 AM Changeset in webkit [260577] by graouts@webkit.org
  • 7 edits
    1 add in trunk/LayoutTests

[ Mac iOS ] animations/animation-direction-normal.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=210156
<rdar://problem/61411725>

Reviewed by Simon Fraser.

The tests animations/animation-direction-normal.html and animations/animation-direction-reverse.html were both written
similarly to test that an element targeted by a CSS Animation would have styles animated while the animation is running
and that those styles would no longer be animated once the CSS Animation was paused using the "animation-play-state"
CSS property.

The way those assertions were made were to use setTimeout() to check the computed style at a given time and compared it
to an expected value give or take an error margin. This design was flaky, as a system under load could easily not run the
timeout until a much larger delta than the one expected would elapse.

We use a new JS helper to write these tests in a non-flaky manner. The technique used now is to record the computed style
while the animation is running without providing expected times and values, but rather specifying delays between which we
want to record the computed style. Once all values have been recorded, a method can be used to check those recorded values
by using the Web Animations API to pause and seek the animation at recorded times and query the computed style, which allows
us to test values without an error margin.

Finally, the new JS helper also allows to check the computed style using a timeout when the animation play state is not relevant,
allowing those tests to pause the animation using the "animation-play-state" property and check after incremental timeouts
that the computed style did not change.

We also made the tests use the WPT harness for assertions and reporting.

  • animations/animation-direction-normal-expected.txt:
  • animations/animation-direction-normal.html:
  • animations/animation-direction-reverse-expected.txt:
  • animations/animation-direction-reverse.html:
  • animations/resources/animation-test.js: Added.

(AnimationTest):
(AnimationTest.prototype.get animation):
(AnimationTest.prototype.get value):
(AnimationTest.prototype.async valueAfterWaitingFor):
(AnimationTest.prototype.async recordValueAfterRunningFor):
(AnimationTest.prototype.checkRecordedValues):
(AnimationTest.prototype._tickUntil):

  • platform/ios-wk1/TestExpectations:
  • platform/ios-wk2/TestExpectations:
10:15 AM Changeset in webkit [260576] by Chris Dumez
  • 5 edits in trunk

[ Mac wk2 ] imported/w3c/web-platform-tests/notifications/event-onclose.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209483
<rdar://problem/60830377>

Reviewed by Geoff Garen.

Source/WebCore:

Align garbage collection of Notification JS wrapper with the specification:

In particular, the following changes were made:

  1. Instead of using the legacy setPendingActivity() / unsetPendingActivity(), override ActiveDOMObject::virtualHasPendingActivity() to implement the behavior documented in the specification.
  2. Keep the wrapper alive as long as the notification is showing and as long as there are relevant event listeners, as per [1]. Previously, we failed to check for event listeners, which was suboptimal.
  3. Update the constructor to queue a task on the event loop in order to show the notification asynchronously, instead of relying on a SuspendableTimer for this purpose. Previously, the JS wrapper could get collected between construction and the notification getting shown, which was leading to the test flakiness.

No new tests, unskipped existing test.

  • Modules/notifications/Notification.cpp:

(WebCore::Notification::Notification):
(WebCore::Notification::show):
(WebCore::Notification::finalize):
(WebCore::Notification::dispatchShowEvent):
(WebCore::Notification::dispatchClickEvent):
(WebCore::Notification::dispatchCloseEvent):
(WebCore::Notification::dispatchErrorEvent):
(WebCore::Notification::eventListenersDidChange):
(WebCore::Notification::virtualHasPendingActivity const):

  • Modules/notifications/Notification.h:

LayoutTests:

Unskip test now that it is no longer flaky.

  • platform/mac-wk2/TestExpectations:
10:07 AM Changeset in webkit [260575] by fpizlo@apple.com
  • 3 edits in trunk/Websites/webkit.org

Unreviewed, check in some more files for a blog post.

  • blog-files/speculation-in-jsc/clobberize-dependence-graph.graffle:
  • blog-files/speculation-in-jsc/clobberize-dependence-graph.svg:
9:27 AM Changeset in webkit [260574] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

[iOS] Port MediaPlayback process assertion to RunningBoard
https://bugs.webkit.org/show_bug.cgi?id=210212
<rdar://problem/61476951>

Reviewed by Geoff Garen.

Port MediaPlayback process assertion to RunningBoard instead of the legacy BKSProcessAssertion.
We can now #ifdef out the legacy BKSProcessAssertion on recent iOS builds.

  • UIProcess/ProcessAssertion.h:
  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::runningBoardNameForAssertionType):
(WebKit::ProcessAssertion::ProcessAssertion):
(WebKit::ProcessAssertion::~ProcessAssertion):

9:12 AM Changeset in webkit [260573] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

Correction for patch 397001.
https://bugs.webkit.org/show_bug.cgi?id=210914

Reviewed by Chris Fleizach.

  • No need to check for isEmpty when retrieving the primary screen size,

as pointed out by Darin Adler in bug 210760, patch 397001.

  • Added some helpful AXLOGing.
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper primaryScreenHeight]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
(-[WebAccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]):

8:49 AM Changeset in webkit [260572] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

[CMake] Add WebKit::WebCoreTestSupport target
https://bugs.webkit.org/show_bug.cgi?id=210867

Unreviewed build fix.

Make the dependencies explicit.

  • CMakeLists.txt:
8:31 AM Changeset in webkit [260571] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

In the scrolling tree, separate wheel event handling from layer updating
https://bugs.webkit.org/show_bug.cgi?id=210899

Reviewed by Antti Koivisto.

Working towards webkit.org/b/210884, it needs to be possible to have the scrolling
tree handle a wheelEvent and update its internal state about scroll positions, but not
immediately map those scroll positions onto CALayers.

To achieve this, have ScrollingTreeScrollingNode::currentScrollPositionChanged()
not call applyLayerPositions(), or notifyRelatedNodesAfterScrollPositionChange() which
just applies layer positions on related nodes.

Instead, at the end of wheel event handling, do a full scrolling tree traversal and update
all the layer positions there.

Delegated scrolling (iOS) still needs notifyRelatedNodesAfterScrollPositionChange() so it
can't be removed.

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::handleWheelEvent):
(WebCore::ScrollingTree::applyLayerPositions):
(WebCore::ScrollingTree::applyLayerPositionsInternal):

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::currentScrollPositionChanged):

8:24 AM Changeset in webkit [260570] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] Crash in cairo_surface_mark_dirty_rectangle() in accelerated compositing mode under X11
https://bugs.webkit.org/show_bug.cgi?id=210636

Patch by John Frankish <john.frankish@outlook.com> on 2020-04-23
Reviewed by Carlos Garcia Campos.

When cairo is configured to use xcb instead of xlib, it might use an image surface attached to the xlib one as
snapshot. In that case a flush is needed to detach that snapshot after we have drawn the surface in the
context.

  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::AcceleratedBackingStoreX11::paint): Call cairo_surface_flush() after drawing.

8:18 AM Changeset in webkit [260569] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r260133.

We can use RunningBoard foreground assertion again now that
<rdar://problem/61830390> has been fixed

Reverted changeset:

"REGRESSION (r259610): WebGL does not work at all on iOS (was:
Google Maps tiles turn black after initial load)"
https://trac.webkit.org/changeset/260133

7:50 AM Changeset in webkit [260568] by cturner@igalia.com
  • 3 edits in trunk/Source/WebCore

[EME][CDMProxy] Sort key status array lexicographically by key IDs
https://bugs.webkit.org/show_bug.cgi?id=210659

Reviewed by Xabier Rodriguez-Calvar.

This is required by section 6.1 of
https://www.w3.org/TR/encrypted-media/.

Test: encrypted-media/clearkey-keystatuses.https.html

  • platform/encryptedmedia/CDMProxy.cpp:

(WebCore::KeyStore::add): We could use a set here and keep it
sorted by design, but this is more complexity than needed. The
store has for practical purposes an upper limit of 2
items. Sorting such a vector lowers to either a noop or a swap. So
the simple approach here wins over using some kind of self-sorting
set structure. I also considered only sorting on-demand, since it
only has to appear sorted from the perspective of JS, we could
sort the array in convertToJSKeyStatusVector. However, that is
semantically a const method, so sorting here felt too surprising.

  • platform/encryptedmedia/CDMProxy.h:

(WebCore::Key::operator<): Add a lexicographic comparator to
Key.

7:33 AM Changeset in webkit [260567] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK] excessive wakeups/polling due to gdk_frame_clock_begin_updating
https://bugs.webkit.org/show_bug.cgi?id=210561

Reviewed by Žan Doberšek.

The problem is that we are destroying the display refresh monitor from the frame clock update callback, and GTK
schedules another update from the callback itself in some cases, which ends up happening forever. We were
assuming that destroying the window of immediately destroy the frame clock as well, but the paint source idle
keeps a reference of the frame clock. At the end of the source idle callback the source is scheduled again,
taking a new reference. We need to call gdk_frame_clock_end_updating() to ensure the idle is not scheduled
again.

  • platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp:

(WebCore::DisplayRefreshMonitorGtk::~DisplayRefreshMonitorGtk): Disconnect the update signal and call
gdk_frame_clock_end_updating().
(WebCore::DisplayRefreshMonitorGtk::requestRefreshCallback): Toplevel window should always have a frame clock,
so remove the early return and add an assert instead.

4:36 AM Changeset in webkit [260566] by emilio
  • 2 edits in trunk/Tools

Unreviewed, add my bugzilla / slack nick to contributors.json

  • Scripts/webkitpy/common/config/contributors.json:
4:21 AM Changeset in webkit [260565] by Philippe Normand
  • 2 edits in trunk/Tools

[JHBuild] Add mock release/debug options to the update script

Rubber-stamped by Carlos Alberto Lopez Perez.

These options are now required after r260560. They're not used
though because JHBuild itself doesn't have the notion of build
configuration, unlike the Flatpak SDK.

  • Scripts/update-webkit-libs-jhbuild:
3:18 AM Changeset in webkit [260564] by commit-queue@webkit.org
  • 2 edits in trunk/JSTests

Skip stress/v8-bitint32-inc.js on mips
https://bugs.webkit.org/show_bug.cgi?id=210906

Unreviewed Gardening.

Patch by Paulo Matos <Paulo Matos> on 2020-04-23

  • stress/v8-bigint32-inc.js:
2:23 AM Changeset in webkit [260563] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Gardening, update expectations after r259705
https://bugs.webkit.org/show_bug.cgi?id=210904

Unreviewed gardening.

  • platform/wpe/TestExpectations:
2:17 AM Changeset in webkit [260562] by Philippe Normand
  • 3 edits in trunk/Tools

[GTK][WPE] White-list more GStreamer environment variables in webkitpy
https://bugs.webkit.org/show_bug.cgi?id=210854

Reviewed by Adrian Perez de Castro.

Extra variables need to be white-listed when the webkitpy tooling
runs inside a gst-build environment, those variables are needed so
that uninstalled GStreamer plugins are correctly picked up.

Additionally we now correctly white-list the
WEBKIT_GST_USE_PLAYBIN3 env var. USE_PLAYBIN3 shouldn't be used
anymore.

  • Scripts/webkitpy/port/gtk.py:

(GtkPort.setup_environ_for_server):

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.setup_environ_for_server):

1:59 AM Changeset in webkit [260561] by youenn@apple.com
  • 15 edits
    4 moves
    9 adds in trunk

getDisplayMedia is not respecting aspect ratio with max constraints
https://bugs.webkit.org/show_bug.cgi?id=210858

Reviewed by Eric Carlson.

Source/WebCore:

Add computation of exact frame size to respect aspect ratio in DisplayCaptureSourceCocoa::updateFrameSize.
Refactor code to have one source class DisplayCaptureSourceCocoa and specific capturer for screen and window.
This simplifies code and allows reusing DisplayCaptureSourceCocoa with a mock capturer.
Update mock code to use DisplayCaptureSourceCocoa.

Tests: fast/mediastream/getDisplayMedia-max-constraints.html

fast/mediastream/getDisplayMedia-max-constraints1.html
fast/mediastream/getDisplayMedia-max-constraints2.html
fast/mediastream/getDisplayMedia-max-constraints3.html

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp:

(WebCore::DisplayCaptureManagerCocoa::updateDisplayCaptureDevices):
(WebCore::DisplayCaptureManagerCocoa::updateWindowCaptureDevices):
(WebCore::DisplayCaptureManagerCocoa::screenCaptureDeviceWithPersistentID):
(WebCore::DisplayCaptureManagerCocoa::windowCaptureDeviceWithPersistentID):

  • platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:

(WebCore::DisplayCaptureSourceCocoa::create):
(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa):
(WebCore::DisplayCaptureSourceCocoa::~DisplayCaptureSourceCocoa):
(WebCore::DisplayCaptureSourceCocoa::capabilities):
(WebCore::DisplayCaptureSourceCocoa::settings):
(WebCore::DisplayCaptureSourceCocoa::startProducingData):
(WebCore::DisplayCaptureSourceCocoa::stopProducingData):
(WebCore::DisplayCaptureSourceCocoa::updateFrameSize):
(WebCore::DisplayCaptureSourceCocoa::emitFrame):
(WebCore::DisplayCaptureSourceCocoa::Capturer::setLogger):
(WebCore::DisplayCaptureSourceCocoa::Capturer::logChannel const):

  • platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
  • platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

(WebCore::MockRealtimeVideoSourceMac::createForMockDisplayCapturer):

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
  • platform/mediastream/mac/ScreenDisplayCapturerMac.h: Added.
  • platform/mediastream/mac/ScreenDisplayCapturerMac.mm: Added.

(WebCore::ScreenDisplayCapturerMac::create):
(WebCore::ScreenDisplayCapturerMac::ScreenDisplayCapturerMac):
(WebCore::ScreenDisplayCapturerMac::~ScreenDisplayCapturerMac):
(WebCore::ScreenDisplayCapturerMac::createDisplayStream):
(WebCore::ScreenDisplayCapturerMac::start):
(WebCore::ScreenDisplayCapturerMac::stop):
(WebCore::ScreenDisplayCapturerMac::generateFrame):
(WebCore::ScreenDisplayCapturerMac::startDisplayStream):
(WebCore::ScreenDisplayCapturerMac::commitConfiguration):
(WebCore::ScreenDisplayCapturerMac::displayWasReconfigured):
(WebCore::ScreenDisplayCapturerMac::displayReconfigurationCallBack):
(WebCore::ScreenDisplayCapturerMac::newFrame):
(WebCore::ScreenDisplayCapturerMac::screenCaptureDeviceWithPersistentID):
(WebCore::ScreenDisplayCapturerMac::screenCaptureDevices):

  • platform/mediastream/mac/WindowDisplayCapturerMac.h: Added.
  • platform/mediastream/mac/WindowDisplayCapturerMac.mm: ddedAdded.

(WebCore::WindowDisplayCapturerMac::create):
(WebCore::WindowDisplayCapturerMac::WindowDisplayCapturerMac):
(WebCore::WindowDisplayCapturerMac::windowImage):
(WebCore::WindowDisplayCapturerMac::generateFrame):
(WebCore::WindowDisplayCapturerMac::windowCaptureDeviceWithPersistentID):
(WebCore::WindowDisplayCapturerMac::windowCaptureDevices):

  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::MockDisplayCapturer::MockDisplayCapturer):
(WebCore::MockDisplayCapturer::start):
(WebCore::MockDisplayCapturer::generateFrame):

  • platform/mock/MockRealtimeVideoSource.h:

(isType):

LayoutTests:

  • fast/mediastream/getDisplayMedia-max-constraints-expected.txt: Added.
  • fast/mediastream/getDisplayMedia-max-constraints.html: Added.
  • fast/mediastream/getDisplayMedia-max-constraints1-expected.txt: Added.
  • fast/mediastream/getDisplayMedia-max-constraints1.html: Added.
  • fast/mediastream/getDisplayMedia-max-constraints2-expected.txt: Added.
  • fast/mediastream/getDisplayMedia-max-constraints2.html: Added.
  • fast/mediastream/getDisplayMedia-max-constraints3-expected.txt: Added.
  • fast/mediastream/getDisplayMedia-max-constraints3.html: Added.
  • fast/mediastream/resources/getDisplayMedia-utils.js: Added.

(async callGetDisplayMedia):
(async waitForHeight):
(async waitForWidth):

  • platform/ios/TestExpectations:

Skip new tests as getDisplayMedia is not supported on iOS.

1:47 AM Changeset in webkit [260560] by Diego Pino Garcia
  • 2 edits in trunk/Tools

[Flatpak SDK] Install dependencies step needs configuration as argument
https://bugs.webkit.org/show_bug.cgi?id=210898

Reviewed by Philippe Normand.

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

(InstallGtkDependencies): Pass 'configuration' value (Release, Debug).
(InstallWpeDependencies): Pass 'configuration' value (Release, Debug).

1:37 AM EnvironmentVariables edited by Keith Rollin
(diff)
1:35 AM EnvironmentVariables edited by Keith Rollin
(diff)
12:11 AM Changeset in webkit [260559] by Diego Pino Garcia
  • 4 edits
    4 adds in trunk/LayoutTests

[GTK][WPE] Gardening, update baselines and test expectations
https://bugs.webkit.org/show_bug.cgi?id=210900

Results of tests are better than the general expected results,
so new GTK baselines are emitted or updated.

  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/header-value-combining.any-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/header-value-combining.any.worker-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt: Updated.
  • platform/gtk/imported/w3c/web-platform-tests/fetch/nosniff/parsing-nosniff.window-expected.txt: Added.
  • platform/wpe/TestExpectations: Remove failure passing since r259703.

Apr 22, 2020:

11:15 PM Changeset in webkit [260558] by Ryan Haddad
  • 4 edits
    2 deletes in trunk/Source/WebKit

Unreviewed, reverting r260553.

Broke iOS and Catalina builds.

Reverted changeset:

"Soft link QuickLookThumbnailing framework"
https://bugs.webkit.org/show_bug.cgi?id=210894
https://trac.webkit.org/changeset/260553

10:19 PM Changeset in webkit [260557] by Simon Fraser
  • 7 edits in trunk/Source/WebCore

Make it possible to eagerly apply scrolling tree state from the main thread
https://bugs.webkit.org/show_bug.cgi?id=210883

Reviewed by Tim Horton.

Work towards fixing webkit.org/b/210884: at the beginning of Page::updateRendering(),
we are going to need to pull the current state of the scrolling tree back to the
main thread, so that JS-exposed scroll offsets match scrolling tree state.

To this end, expose a scrolling tree traversal function from ScrollingTree, which
takes the lock and then calls a visitor function for each node. For scrolling nodes,
the visitor gets the scroll position and optional layout viewport origin. These
match the data passed back currently via AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll().

The new code is not called yet.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::synchronizeStateFromScrollingTree):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::synchronizeStateFromScrollingTree):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::traverseScrollingTree):
(WebCore::ScrollingTree::traverseScrollingTreeRecursive):

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::currentScrollPositionChanged): applyLayerPositions() calls these two
functions, so just call it instead.

9:56 PM Changeset in webkit [260556] by commit-queue@webkit.org
  • 5 edits in trunk

Unreviewed, reverting r260535.
https://bugs.webkit.org/show_bug.cgi?id=210897

Causes crashes in WK1 (Requested by smfr on #webkit).

Reverted changeset:

"[ Mac wk2 ] imported/w3c/web-platform-tests/notifications
/event-onclose.html is flaky failing."
https://bugs.webkit.org/show_bug.cgi?id=209483
https://trac.webkit.org/changeset/260535

9:46 PM Changeset in webkit [260555] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening, update test expectations
https://bugs.webkit.org/show_bug.cgi?id=210896

Unreviewed gardening.

  • platform/gtk/TestExpectations:
9:34 PM Changeset in webkit [260554] by Darin Adler
  • 31 edits in trunk

[Cocoa] Build with UChar as char16_t even in builds that use Apple's internal SDK
https://bugs.webkit.org/show_bug.cgi?id=210845

Reviewed by Anders Carlsson.

.:

  • Source/cmake/OptionsCommon.cmake: Move ICU-configuring macros to Platform.h.
  • Source/cmake/OptionsJSCOnly.cmake: Ditto.
  • Source/cmake/OptionsMac.cmake: Ditto.

Source/JavaScriptCore:

  • Configurations/Base.xcconfig: Move ICU-configuring macros to Platform.h.

Source/WebCore:

  • Configurations/WebCore.xcconfig: Move ICU-configuring macros to Platform.h.
  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::connect): Get rid of an obsolete cast to unsigned to work
around uint16_t not being treated as a number by makeString.

  • rendering/svg/SVGTextLayoutEngineBaseline.cpp:

(WebCore::SVGTextLayoutEngineBaseline::calculateGlyphOrientationAngle const):
Remove deprecated U_EA_COUNT.

Source/WebKit:

  • Configurations/BaseTarget.xcconfig: Move ICU-configuring macros to Platform.h.
  • Platform/unix/EnvironmentUtilities.h: Removed unneeded includes.

This sidesteps a problem with Apple's internal InstallAPI tool that happens
if StringView.h is included and Platform.h is not included first.

  • UIProcess/API/cpp/WKRetainPtr.h: Removed unneeded includes, and used

#pragma once.

  • UIProcess/Cocoa/PreferenceObserver.h: Moved most things out of the header,

since they don't need to be there.

  • UIProcess/Cocoa/PreferenceObserver.mm: Moved them here including using a

class extension for the data member of WKPreferenceObserver.

  • UIProcess/ios/fullscreen/FullscreenTouchSecheuristicParameters.h:

Removed unneeded WTF prefix.

Source/WebKitLegacy/mac:

  • Configurations/WebKitLegacy.xcconfig: Move ICU-configuring macros to Platform.h.

Source/WTF:

  • Configurations/Base.xcconfig: Move ICU-configuring macros to Platform.h.
  • wtf/Platform.h: Set macros here. The file says not to put things like this in it,

but in practice this is the right place to put something that we need set consistently
for all the WebKit projects.

  • U_HIDE_DEPRECATED_API, to make sure we don't use it by accident.
  • U_SHOW_CPLUSPLUS_API=0, to make sure we don't use it by accident.
  • UCHAR_TYPE=char16_t when compiling C++, which is the default on most platforms, but not the default in Apple's internal SDK.
  • U_DISABLE_RENAMING when building on Apple platforms, important so we can link to an older version of ICU and still load with a newer version.
  • wtf/URL.cpp:

(WTF::URL::hostAndPort const): Get rid of an obsolete cast to unsigned to work
around uint16_t not being treated as a number by makeString.

  • wtf/URLHelpers.cpp: Rework to not use deprecated USCRIPT_CODE_LIMIT.

(WTF::URLHelpers::whiteListIDNScript): Added overloads.
(WTF::URLHelpers::initializeDefaultIDNScriptWhiteList): Use an array of
UScriptCode instead of an array of strings.
(WTF::URLHelpers::allCharactersInIDNScriptWhiteList): Updated for the above.

  • wtf/cocoa/NSURLExtras.mm:

(WTF::decodePercentEscapes): Use createCFString instead of converting to NString
and then typecasting.
(WTF::URLByTruncatingOneCharacterBeforeComponent): Updated to use a constexpr
instead of a macro.
(WTF::dataForURLComponentType): Ditto.
(WTF::URLByRemovingComponentAndSubsequentCharacter): Ditto.
(WTF::originalURLData): Ditto.

Tools:

  • TestWebKitAPI/Tests/WTF/StringConcatenate.cpp:

(TestWebKitAPI::TEST): Get rid of an obsolete cast to unsigned to work
around uint16_t not being treated as a number by makeString.

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::TEST): Ditto.

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(TestWebKitAPI::TEST): Ditto.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST): Ditto.

  • TestWebKitAPI/Tests/WebKit/EnvironmentUtilitiesTest.cpp:

Add an include needed since EvironmentUtilities.h now includes less.

9:05 PM Changeset in webkit [260553] by Nikos Mouchtaris
  • 4 edits
    2 adds in trunk/Source/WebKit

Soft link QuickLookThumbnailing framework
https://bugs.webkit.org/show_bug.cgi?id=210894

Reviewed by Tim Horton.

Soft link QuickLookThumbnailing framework to solve build error.

No new tests. Unnecessary.

  • Configurations/WebKit.xcconfig:
  • UIProcess/QuickLookThumbnailLoader.mm:

(-[WKQLThumbnailLoadOperation initWithURL:identifier:]):
(-[WKQLThumbnailLoadOperation start]):

  • UIProcess/QuickLookThumbnailingSPI.h: Added.
  • UIProcess/QuickLookThumbnailingSoftLink.h: Added.
  • UIProcess/QuickLookThumbnailingSoftLink.mm: Added.
  • WebKit.xcodeproj/project.pbxproj:
8:17 PM Changeset in webkit [260552] by sbarati@apple.com
  • 4 edits
    1 add in trunk/Tools

DumpRenderTree should have the JIT entitlement on Mac
https://bugs.webkit.org/show_bug.cgi?id=210887

Reviewed by Tim Horton.

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • DumpRenderTree/mac/Configurations/BaseTarget.xcconfig:
  • DumpRenderTree/mac/Configurations/DumpRenderTree.entitlements: Added.
  • DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
8:11 PM Changeset in webkit [260551] by ysuzuki@apple.com
  • 9 edits
    1 add in trunk

[JSC] branchIfBigInt32 can use BigInt32Mask and remove branchIfNumber filter
https://bugs.webkit.org/show_bug.cgi?id=210870

Reviewed by Saam Barati.

JSTests:

  • stress/anybigintuse-should-filter-number-correctly.js: Added.

(shouldBe):
(test):

Source/JavaScriptCore:

By using BigInt32Mask, we can detect BigInt32 without filtering Numbers. In this patch,

  1. Remove branchIfBigInt32KnownNotNumber and branchIfNotBigInt32KnownNotNumber. And always use branchBigInt32 and branchNotBigInt32 instead.
  2. Remove branchIfNumber type filtering in DFG.
  3. Use BigInt32Mask based scheme in FTL.
  4. Add and64(TrustedImm64, RegisterID) implementations in MacroAssembler.
  5. Add TagRegistersMode version in branchIfBigInt. We use numberTagRegister to produce really efficient code[1] by avoiding large constant materialization.

[1]: From

mov %rax, %rdx
mov $0xfffe000000000012, %r11
and %r11, %rdx
cmp $0x12, %rdx

To

lea 0x12(%r14), %rdx
and %rax, %rdx
cmp $0x12, %rdx

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::and64):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::and64):

  • bytecode/ArithProfile.cpp:

(JSC::ArithProfile<BitfieldType>::emitObserveResult):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::fillSpeculateBigInt32):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileToNumeric):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
(JSC::FTL::DFG::LowerDFGToB3::compileIsBigInt):
(JSC::FTL::DFG::LowerDFGToB3::boolify):
(JSC::FTL::DFG::LowerDFGToB3::buildTypeOf):
(JSC::FTL::DFG::LowerDFGToB3::lowBigInt32):
(JSC::FTL::DFG::LowerDFGToB3::isBigInt32):
(JSC::FTL::DFG::LowerDFGToB3::isNotBigInt32):
(JSC::FTL::DFG::LowerDFGToB3::isNotAnyBigInt):
(JSC::FTL::DFG::LowerDFGToB3::speculateBigInt32):
(JSC::FTL::DFG::LowerDFGToB3::speculateAnyBigInt):
(JSC::FTL::DFG::LowerDFGToB3::isBigInt32KnownNotCell): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::isBigInt32KnownNotNumber): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::isNotBigInt32KnownNotNumber): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::isNotAnyBigIntKnownNotNumber): Deleted.

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitConvertValueToBoolean):
(JSC::AssemblyHelpers::branchIfValue):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::branchIfBigInt32):
(JSC::AssemblyHelpers::branchIfNotBigInt32):
(JSC::AssemblyHelpers::emitTypeOf):
(JSC::AssemblyHelpers::branchIfBigInt32KnownNotNumber): Deleted.
(JSC::AssemblyHelpers::branchIfNotBigInt32KnownNotNumber): Deleted.

7:18 PM Changeset in webkit [260550] by sbarati@apple.com
  • 4 edits
    1 add in trunk

BigInt32 parsing should be precise
https://bugs.webkit.org/show_bug.cgi?id=210869

Reviewed by Robin Morisset.

JSTests:

  • stress/big-int-32-parsing-should-be-precise.js: Added.

Source/JavaScriptCore:

Our algorithm before was conservative, and might produce a heap big int even
if the value could be an int32. This patch makes the algorithm precise on
64-bit, always producing a bigint32 if the number is indeed an int32.

  • jsc.cpp:

(functionUseBigInt32):
(functionIsBigInt32):
(functionIsHeapBigInt):

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::parseInt):

7:14 PM Changeset in webkit [260549] by sbarati@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Edge use kind asserts are wrong for BigInt32 on ValueBitLShift
https://bugs.webkit.org/show_bug.cgi?id=210872

Reviewed by Yusuke Suzuki, Mark Lam, and Robin Morisset.

This is already covered by the v8 tests Yusuke checked in.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitUntypedOrAnyBigIntBitOp):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileValueBitLShift):
(JSC::FTL::DFG::LowerDFGToB3::emitBinaryBitOpSnippet):

6:22 PM Changeset in webkit [260548] by Andres Gonzalez
  • 4 edits in trunk/Source/WebCore

Add logging to core accessibility.
https://bugs.webkit.org/show_bug.cgi?id=210564
<rdar://problem/61863477>

Reviewed by Simon Fraser and Chris Fleizach.

  • Use LOG and LOG_WITH_STREAM macros instead of WTF::Logger directly.
  • Added logging of AXCoreObjects.
  • accessibility/AXLogger.cpp:

(WebCore::AXLogger::AXLogger):
(WebCore::AXLogger::~AXLogger):
(WebCore::AXLogger::log):
(WebCore::operator<<):

  • accessibility/AXLogger.h:
  • accessibility/AccessibilityObjectInterface.h:
5:42 PM Changeset in webkit [260547] by dbates@webkit.org
  • 7 edits in trunk/Source

Support toggling debug overlay for touch action region and editable element region independent from non-fast scrollable region
https://bugs.webkit.org/show_bug.cgi?id=210774

Reviewed by Dean Jackson.

Source/WebCore:

Break out the touch action region and editable element region debug overlays into their own
flags that can be passed to Settings::setVisibleDebugOverlayRegions() to toggle these overlays,
respectively. Currently both of these overlays piggyback on whether the engine will paint the
non-fast scrollable region.

  • page/SettingsBase.h: Add two more enumerators.
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::invalidateEventRegion const): Update the code to be more precise now that
we can target the update paint overlay hack to when we are painting touch-action or editable
element regions.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintDebugOverlays): Condition the painting of touch action region
on one enumerator and the painting of editable element region on another.
(WebCore::RenderLayerBacking::paintContents): Update the code to be more precise.

Source/WebKit:

Expose two new enumerators to toggle touch action region and editable element region
overlay painting.

  • UIProcess/API/C/WKPreferencesRef.h:
  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
5:38 PM Changeset in webkit [260546] by Chris Dumez
  • 6 edits in trunk

[iOS] Expose -_webView:willGoToBackForwardListItem:inPageCache:
https://bugs.webkit.org/show_bug.cgi?id=210878
<rdar://problem/62202276>

Reviewed by Alex Christensen.

Source/WebKit:

Expose -_webView:willGoToBackForwardListItem:inPageCache: on iOS.

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::willGoToBackForwardListItem):

Tools:

Enable corresponding API test on iOS.

  • TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:
5:27 PM Changeset in webkit [260545] by Darin Adler
  • 2 edits in trunk/Source/WebKitLegacy/mac

[Cocoa] REGRESSION (r260485): Crash in Legacy WebKit createMenu item function (reproducible under Asan)
https://bugs.webkit.org/show_bug.cgi?id=210888

Reviewed by Alex Christensen.

  • WebView/WebHTMLView.mm:

(createMenuItem): Speculative fix: Go back to using a local variable. Apparently
the Objective-C for loop doesn't extend the lifetime of its argument the way the
C++ range-based for loop does, so the local variable is needed.

5:04 PM Changeset in webkit [260544] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[iOS] Crash on RunningBoard process assertion invalidation
https://bugs.webkit.org/show_bug.cgi?id=210873
<rdar://problem/62194917>

Reviewed by Darin Adler.

  • UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKRBSAssertionDelegate assertion:didInvalidateWithError:]):
Capture a weak pointer to self and make sure we only access the invalidation handler on
the main thread if |self| is still alive.

(WebKit::ProcessAssertion::~ProcessAssertion):
Null out the WKRBSAssertionDelegate's observer in the ProcessAssertion destructor, to
make sure processAssertionWasInvalidated() cannot get called after the ProcessAssertion
has been destroyed.

4:49 PM Changeset in webkit [260543] by Alan Coon
  • 1 copy in tags/Safari-609.2.7.2

Tag Safari-609.2.7.2.

4:48 PM Changeset in webkit [260542] by Alan Coon
  • 7 edits in branches/safari-609.2.7-branch

Apply patch. rdar://problem/62083319

4:45 PM Changeset in webkit [260541] by dbates@webkit.org
  • 2 edits in trunk/Tools

Add a test for -focusTextInputContext on a field in detached frame
https://bugs.webkit.org/show_bug.cgi?id=210704

Reviewed by Wenson Hsieh.

Calling -focusTextInputContext on a field in a detached frame should not
cause a focus change. Add a test to ensure this behavior doesn't regress.

  • TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:

(TEST):

4:45 PM Changeset in webkit [260540] by Alan Coon
  • 8 edits in branches/safari-609.2.7-branch/Source

Versioning.

4:41 PM Changeset in webkit [260539] by don.olmstead@sony.com
  • 8 edits in trunk

[CMake] Use WEBKIT_EXECUTABLE in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=210132

Reviewed by Adrian Perez de Castro.

.:

Add a WebKitTestRunner derived sources directory.

  • Source/cmake/WebKitFS.cmake:

Tools:

Modify CMake code to use WEBKIT_EXECUTABLE when creating WebKitTestRunner.

  • WebKitTestRunner/CMakeLists.txt:
  • WebKitTestRunner/PlatformFTW.cmake:
  • WebKitTestRunner/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformWPE.cmake:
  • WebKitTestRunner/PlatformWin.cmake:
4:09 PM Changeset in webkit [260538] by Alan Coon
  • 1 copy in tags/Safari-609.2.9.1.2

Tag Safari-609.2.9.1.2.

4:09 PM Changeset in webkit [260537] by Alan Coon
  • 8 edits in branches/safari-609.2.9.1-branch/Source

Versioning.

3:55 PM Changeset in webkit [260536] by Alan Coon
  • 1 copy in tags/Safari-609.2.9.1.1

Tag Safari-609.2.9.1.1.

3:45 PM Changeset in webkit [260535] by Chris Dumez
  • 5 edits in trunk

[ Mac wk2 ] imported/w3c/web-platform-tests/notifications/event-onclose.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209483
<rdar://problem/60830377>

Reviewed by Geoffrey Garen.

Source/WebCore:

Align garbage collection of Notification JS wrapper with the specification:

In particular, the following changes were made:

  1. Instead of using the legacy setPendingActivity() / unsetPendingActivity(), override ActiveDOMObject::virtualHasPendingActivity() to implement the behavior documented in the specification.
  2. Keep the wrapper alive as long as the notification is showing and as long as there are relevant event listeners, as per [1]. Previously, we failed to check for event listeners, which was suboptimal.
  3. Update the constructor to queue a task on the event loop in order to show the notification asynchronously, instead of relying on a SuspendableTimer for this purpose. Previously, the JS wrapper could get collected between construction and the notification getting shown, which was leading to the test flakiness.

No new tests, unskipped existing test.

  • Modules/notifications/Notification.cpp:

(WebCore::Notification::Notification):
(WebCore::Notification::show):
(WebCore::Notification::finalize):
(WebCore::Notification::dispatchShowEvent):
(WebCore::Notification::dispatchClickEvent):
(WebCore::Notification::dispatchCloseEvent):
(WebCore::Notification::dispatchErrorEvent):
(WebCore::Notification::eventListenersDidChange):
(WebCore::Notification::virtualHasPendingActivity const):

  • Modules/notifications/Notification.h:

LayoutTests:

Unskip test now that it is no longer flaky.

  • platform/mac-wk2/TestExpectations:
3:16 PM Changeset in webkit [260534] by don.olmstead@sony.com
  • 6 edits in trunk

[CMake] Add WebKit::WebCoreTestSupport target
https://bugs.webkit.org/show_bug.cgi?id=210867

Reviewed by Michael Catanzaro.

Source/WebCore:

Add the WebKit::WebCoreTestSupport target. Modify WebCoreTestSupport to only
have a dependency on WebCore if WebCore is built as a shared library.

  • CMakeLists.txt:

Tools:

Use the WebKit::WebCoreTestSupport target in DumpRenderTree. Fix an
include for WPE in WebKitTestRunner.

  • DumpRenderTree/CMakeLists.txt:
  • DumpRenderTree/PlatformWin.cmake:
  • WebKitTestRunner/PlatformWPE.cmake:
2:56 PM Changeset in webkit [260533] by mmaxfield@apple.com
  • 7 edits in trunk/LayoutTests

Update dom/events/Event-dispatch-redispatch.html from upstream WPT
https://bugs.webkit.org/show_bug.cgi?id=210842
<rdar://problem/61948094>

Reviewed by Jon Lee.

Pull in https://github.com/web-platform-tests/wpt/commit/e30e282ed7b1fb77f6d953fb05ef74a34985f472
to our local repo.

LayoutTests/imported/w3c:

  • web-platform-tests/dom/events/Event-dispatch-redispatch-expected.txt:
  • web-platform-tests/dom/events/Event-dispatch-redispatch.html:

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch-expected.txt:
2:31 PM Changeset in webkit [260532] by Alan Coon
  • 1 copy in tags/Safari-609.2.9.0.1

Tag Safari-609.2.9.0.1.

1:47 PM Changeset in webkit [260531] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, skip imported/w3c/web-platform-tests/html/cross-origin-opener-policy since we do not support this feature.

It is not worth spending time investigating failures / flakiness in the folder until we actually
implement this feature.

1:07 PM Changeset in webkit [260530] by sihui_liu@apple.com
  • 2 edits in trunk/Tools

TextManipulation.CompleteTextManipulationAvoidCrashingWhenContentIsRemoved does not wait for result
https://bugs.webkit.org/show_bug.cgi?id=210871

Reviewed by Alex Christensen.

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

12:38 PM Changeset in webkit [260529] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

fast/events/event-handler-detached-document-dispatchEvent.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=210859
<rdar://problem/62072269>

Reviewed by Jer Noble.

A media session may not have a Page when it is created, so register with the MediaUsageManager
in inActiveDocumentChanged if necessary.

No new tests, fixes an existing test.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::MediaElementSession):
(WebCore::MediaElementSession::~MediaElementSession):
(WebCore::MediaElementSession::addedMediaUsageManagerSessionIfNecessary):
(WebCore::MediaElementSession::inActiveDocumentChanged):
(WebCore::MediaElementSession::updateMediaUsageIfChanged):

  • html/MediaElementSession.h:
12:24 PM Changeset in webkit [260528] by Antti Koivisto
  • 3 edits
    2 adds in trunk

REGRESSION (r249160): Deleting newline after pasting text ending in a newline results in a discontinuity
https://bugs.webkit.org/show_bug.cgi?id=210677
<rdar://problem/61954169>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/text/delete-line-break-in-pre.html

  • rendering/RenderTextLineBoxes.cpp:

(WebCore::RenderTextLineBoxes::dirtyRange):

r249160 changed InlineTextBox end offset to be consistently first-past-end.
The code here that updates lineBreakPos needs to take this into account too.

LayoutTests:

  • fast/text/delete-line-break-in-pre-expected.html: Added.
  • fast/text/delete-line-break-in-pre.html: Added.
12:14 PM Changeset in webkit [260527] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

IPC::decodeSharedBuffer() should check the return value of SharedMemory::map()
<https://webkit.org/b/210844>
<rdar://problem/60773120>

Reviewed by Geoffrey Garen.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::decodeSharedBuffer):

  • Add nullptr check and early return.
11:59 AM Changeset in webkit [260526] by Chris Dumez
  • 1 edit
    3 adds in trunk/LayoutTests

Add layout test to validate the User-Agent HTTP header of XMLHttpRequest
https://bugs.webkit.org/show_bug.cgi?id=210863

Reviewed by Youenn Fablet.

  • http/tests/xmlhttprequest/xhr-user-agent-expected.txt: Added.
  • http/tests/xmlhttprequest/xhr-user-agent.html: Added.
11:47 AM Changeset in webkit [260525] by graouts@webkit.org
  • 12 edits in trunk

[Web Animations] Coordinate "update animations and send events" procedure across multiple timelines
https://bugs.webkit.org/show_bug.cgi?id=202109
<rdar://problem/59470821>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark a new test as PASS which shows that we correctly perform a single microstask checkpoint when updating multiple timelines.

  • web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-expected.txt:

Source/WebCore:

So far, although we did manage multiple animation timelines per document, we mostly operated
under the assumption that there really was a single timeline. In this patch we make the
"update animations and send events" procedure, which is central to the lifecycle of animations,
work with multiple timelines such that a single microtask checkpoint is performed even with multiple
timelines, whereas we would perform one per timeline before. To do this, we move much of the logic
DocumentTimeline::updateAnimationsAndSendEvents() to DocumentTimelinesController where each step is
run across each timeline, rather than running all steps for each timeline one after the other,
respecting the single microtask checkpoint in the middle of the process.

To minimize code churn at this stage, we still keep a fair bit of logic in DocumentTimeline and,
while we remove updateAnimationsAndSendEvents(), internalUpdateAnimationsAndSendEvents() and
updateCurrentTime(), we expose three methods that allow to run the pre-flight sequence in
documentWillUpdateAnimationsAndSendEvents(), collect pending events in
prepareForPendingAnimationEventsDispatch() and run the post-flight sequence
in documentDidUpdateAnimationsAndSendEvents().

None of the logic changes, this is just moving code around. In the future, more patches will move
code from DocumentTimeline up to DocumentTimelinesController such that events are enqueued there,
and animation scheduling as well. But this already lets us pass a new test that used to flakily
reject promises in the WPT test web-animations/timing-model/timelines/update-and-send-events.html.

  • animation/AnimationTimeline.h:

(WebCore::AnimationTimeline::relevantAnimations const):
(WebCore::AnimationTimeline::allAnimations const):

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::documentWillUpdateAnimationsAndSendEvents):
(WebCore::DocumentTimeline::documentDidUpdateAnimationsAndSendEvents):
(WebCore::DocumentTimeline::prepareForPendingAnimationEventsDispatch):
(WebCore::DocumentTimeline::updateCurrentTime): Deleted.
(WebCore::DocumentTimeline::updateAnimationsAndSendEvents): Deleted.
(WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): Deleted.

  • animation/DocumentTimeline.h:
  • animation/DocumentTimelinesController.cpp:

(WebCore::DocumentTimelinesController::DocumentTimelinesController):
(WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents):

  • animation/DocumentTimelinesController.h:
  • animation/WebAnimationTypes.h:
  • dom/Document.cpp:

(WebCore::Document::ensureTimelinesController):

LayoutTests:

Remove the flaky expectation for the improved test.

11:38 AM Changeset in webkit [260524] by eric.carlson@apple.com
  • 6 edits in trunk/Source/WebCore

[iOS] Add a quirk to keep gizmodo videos visible when playing in fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=210857
<rdar://problem/58875327>

Reviewed by Jer Noble.

  • page/Quirks.cpp:

(WebCore::Quirks::needsFullscreenDisplayNoneQuirk const):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer): Drive-by fix: always
set the layer name to make debugging in release builds easier.

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

(WebCore::VideoLayerManagerObjC::setVideoLayer): Ditto.

  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjustForSiteSpecificQuirks const): Change display:none into
display:block on div with class "instream-native-video--mobile" when child video
element with id "vjs_video_3_html5_api" is in fullscreen.

11:33 AM Changeset in webkit [260523] by Devin Rousso
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Storage: unable to filter cookies
https://bugs.webkit.org/show_bug.cgi?id=210837

Reviewed by Brian Burg.

  • UserInterface/Views/CookieStorageContentView.js:

(WI.CookieStorageContentView):
(WI.CookieStorageContentView.prototype.get navigationItems):
(WI.CookieStorageContentView.prototype.get canFocusFilterBar): Added.
(WI.CookieStorageContentView.prototype.focusFilterBar): Added.
(WI.CookieStorageContentView.prototype.tableIndexForRepresentedObject):
(WI.CookieStorageContentView.prototype.tableRepresentedObjectForIndex):
(WI.CookieStorageContentView.prototype.tableNumberOfRows):
(WI.CookieStorageContentView.prototype.tableSortChanged):
(WI.CookieStorageContentView.prototype.tableCellContextMenuClicked):
(WI.CookieStorageContentView.prototype.tableDidRemoveRows):
(WI.CookieStorageContentView.prototype.tablePopulateCell):
(WI.CookieStorageContentView.prototype._getCookiesForHost): Renamed from _filterCookies.
(WI.CookieStorageContentView.prototype.async _willDismissCookiePopover):
(WI.CookieStorageContentView.prototype._handleFilterBarFilterDidChange): Added.
(WI.CookieStorageContentView.prototype._handleClearNavigationItemClicked):
(WI.CookieStorageContentView.prototype._reloadCookies):
(WI.CookieStorageContentView.prototype._updateFilteredCookies): Added.
(WI.CookieStorageContentView.prototype._updateEmptyFilterResultsMessage): Added.
(WI.CookieStorageContentView.prototype._cookiesAtIndexes):
(WI.CookieStorageContentView.prototype._filterCookies): Deleted.

  • UserInterface/Views/CookieStorageContentView.css:

(.content-view.cookie-storage > .message-text-view): Added.
(.content-view.cookie-storage > .message-text-view > .message): Added.
(.content-view.cookie-storage > .data-grid): Deleted.
Add a filter bar to the navigation bar that checks the regex-ified filter text against the
formatted text of each cell for each cookie. Also hook it up to the global find shortcut.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype.layout):
(WI.NetworkTableContentView.prototype._showEmptyFilterResultsMessage):
(WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
(WI.NetworkTableContentView.prototype._positionEmptyFilterMessage): Deleted.

  • UserInterface/Views/NetworkTableContentView.css:

(.content-view.network .message-text-view): Added.
Drive-by: instead of having the "No Filter Results" view only cover the "Name" column, it

should cover the entire table so as to be as noticable as possible (not to mention
the table will be empty anyways, so it's not like anything is being hidden).

Drive-by: ensure that the "No Filter Results" view doesn't cover the statistics.

11:12 AM Changeset in webkit [260522] by ysuzuki@apple.com
  • 4 edits
    1 add in trunk

[JSC] JSBigInt inc operation does not produce right HeapBigInt zero
https://bugs.webkit.org/show_bug.cgi?id=210860

Reviewed by Mark Lam.

JSTests:

  • stress/bigint-zero-canonicalized.js: Added.

(shouldBe):

Source/JavaScriptCore:

JSBigInt::inc can produce signed HeapBigInt zero, which is not meeting the invariant of JSBigInt.
This patch fixes it by checking zero status before setting setSign(true).

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::inc):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::dumpInContextAssumingStructure const):

11:08 AM Changeset in webkit [260521] by graouts@webkit.org
  • 2 edits in trunk/LayoutTests

[ Mojave wk1 Release ] animations/transition-and-animation-1.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=210051
<rdar://problem/61345177>

Unreviewed test gardening, forgot to rebaseline this test.

  • animations/transition-and-animation-1-expected.txt:
10:24 AM Changeset in webkit [260520] by Devin Rousso
  • 30 edits in trunk

Web Inspector: Debugger: Step Over should only step through comma expressions if they are comma statements
https://bugs.webkit.org/show_bug.cgi?id=210588

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • parser/Nodes.h:

(JSC::ExpressionNode::isStatement const): Added.
(JSC::ExpressionNode::setIsStatement): Added.

  • parser/NodeConstructors.h:

(JSC::ExprStatementNode::ExprStatementNode):
(JSC::DeclarationStatement::DeclarationStatement):
(JSC::ReturnNode::ReturnNode):
(JSC::ThrowNode::ThrowNode):

  • bytecompiler/NodesCodegen.cpp:

(JSC::CommaNode::emitBytecode):
Only emit WillExecuteStatement debug hooks inside CommaNode if it's the only child of a
statement parent node (e.g. a(), b(), c() vs true && (a(), b(), c()) && true).

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

(JSC::Parser<LexerType>::parseReturnStatement):
(JSC::Parser<LexerType>::parseThrowStatement):
(JSC::Parser<LexerType>::parseExpressionOrLabelStatement):
(JSC::Parser<LexerType>::parseExpressionStatement):
(JSC::Parser<LexerType>::parseExpression):
Only record a pause location for each sub-expression in a comma separated expression if it's
the only child of a statement (e.g. a(), b(), c() vs true && (a(), b(), c()) && true).

LayoutTests:

  • inspector/debugger/resources/log-pause-location.js:

(TestPage.registerInitializer.window.step):

  • inspector/debugger/breakpoints/resources/dump-functions.js:
  • inspector/debugger/breakpoints/resources/dump-general.js:
  • inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt:
  • inspector/debugger/breakpoints/resolved-dump-each-line-expected.txt:
  • inspector/debugger/stepping/stepInto.html:
  • inspector/debugger/stepping/stepInto-expected.txt:
  • inspector/debugger/stepping/stepNext.html:
  • inspector/debugger/stepping/stepNext-expected.txt:
  • inspector/debugger/stepping/stepOut.html:
  • inspector/debugger/stepping/stepOut-expected.txt:
  • inspector/debugger/stepping/stepOver.html:
  • inspector/debugger/stepping/stepOver-expected.txt:
  • inspector/debugger/stepping/stepping-control-flow.html:
  • inspector/debugger/stepping/stepping-control-flow-expected.txt:
  • inspector/debugger/stepping/stepping-loops.html:
  • inspector/debugger/stepping/stepping-loops-expected.txt:
  • inspector/formatting/resources/javascript-tests/arrow-functions.js:
  • inspector/formatting/resources/javascript-tests/arrow-functions-expected.js:
  • inspector/formatting/resources/javascript-tests/functions.js:
  • inspector/formatting/resources/javascript-tests/functions-expected.js:
  • inspector/formatting/resources/javascript-tests/try-catch-finally-statements.js:
  • inspector/formatting/resources/javascript-tests/try-catch-finally-statements-expected.js:
10:17 AM Changeset in webkit [260519] by Russell Epstein
  • 2 edits in branches/safari-609.2.9.0-branch/Source/WebKit

Cherry-pick r260474. rdar://problem/62083321

PiP buttons shows up in element fullscreen when PiP is disabled in WKWebViewConfiguration
https://bugs.webkit.org/show_bug.cgi?id=210813

Reviewed by Eric Carlson.

Not currently testable; entering fullscreen never completes in the iOS TestWebKitAPI app
because that process is not a UI Application.

  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController videoControlsManagerDidChange]):

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

9:56 AM Changeset in webkit [260518] by achristensen@apple.com
  • 8 edits
    2 adds in trunk/Tools

Add unit test for resuming downloads
https://bugs.webkit.org/show_bug.cgi?id=210852

Reviewed by Brady Eidson.

This is a test that we should've written years ago.
I made HTTPServer able to take a Function that takes a nw_connection_t to give it more power than declarative request/response pairs.
I made TestDownloadDelegate to be reused by future tests, like those I'm going to add for bug 210313.

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(longString):
(TEST):

  • TestWebKitAPI/cocoa/HTTPServer.h:

(TestWebKitAPI::HTTPServer::totalRequests const): Deleted.

  • TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::HTTPServer::RequestData::RequestData):
(TestWebKitAPI::HTTPServer::listenerParameters):
(TestWebKitAPI::startListening):
(TestWebKitAPI::HTTPServer::HTTPServer):
(TestWebKitAPI::HTTPServer::totalRequests const):
(TestWebKitAPI::dataFromString):
(TestWebKitAPI::nullTerminatedRequest):
(TestWebKitAPI::HTTPServer::respondToRequests):

  • TestWebKitAPI/cocoa/TestDownloadDelegate.h: Added.
  • TestWebKitAPI/cocoa/TestDownloadDelegate.mm: Added.

(-[TestDownloadDelegate _downloadDidStart:]):
(-[TestDownloadDelegate _download:didReceiveServerRedirectToURL:]):
(-[TestDownloadDelegate _download:didReceiveResponse:]):
(-[TestDownloadDelegate _download:didReceiveData:]):
(-[TestDownloadDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]):
(-[TestDownloadDelegate _downloadDidFinish:]):
(-[TestDownloadDelegate _download:didFailWithError:]):
(-[TestDownloadDelegate _downloadDidCancel:]):
(-[TestDownloadDelegate _download:didReceiveAuthenticationChallenge:completionHandler:]):
(-[TestDownloadDelegate _download:didCreateDestination:]):

  • TestWebKitAPI/cocoa/TestNavigationDelegate.h:
  • TestWebKitAPI/cocoa/TestNavigationDelegate.mm:

(-[TestNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):

9:34 AM Changeset in webkit [260517] by sbarati@apple.com
  • 3 edits
    1 add in trunk

ValueBitNot is wrong in FTL with AnyBigIntUse
https://bugs.webkit.org/show_bug.cgi?id=210846

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/big-int-value-bit-not-spec-any-big-int.js: Added.

(assert):
(foo):

Source/JavaScriptCore:

We forgot to speculate.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileValueBitNot):

9:31 AM Changeset in webkit [260516] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Switch from debug ASSERT to RELEASE_ASSERT in toNPJSObject
https://bugs.webkit.org/show_bug.cgi?id=210823
<rdar://problem/61774056>

Reviewed by David Kilzer.

  • WebProcess/Plugins/Netscape/NPJSObject.h:

(WebKit::NPJSObject::toNPJSObject):

9:22 AM Changeset in webkit [260515] by sbarati@apple.com
  • 2 edits in trunk/Tools

makeValueRefForValue should be robust against the type encoding of a NSNumber backed by a boolean
https://bugs.webkit.org/show_bug.cgi?id=210821
<rdar://problem/62136598>

Reviewed by Tim Horton.

  • DumpRenderTree/mac/AccessibilityNotificationHandler.mm:

(makeValueRefForValue):

9:22 AM Changeset in webkit [260514] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed, commit updated xcfilelist files.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
9:21 AM Changeset in webkit [260513] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests

[ Mojave wk1 Release ] animations/transition-and-animation-1.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=210051
<rdar://problem/61345177>

Reviewed by Simon Fraser.

The purpose of this test is to check that running an animation does not trigger a transition for the animated
property. The way this test was written is that it would use setTimeout() to set a timer at a time computed to
be 500ms after the completion of the animation. However, using a timer like this is flaky by design as the animation
could technically be still in flight if the system is under heavy load.

We rewrite this test to use an "animationend" event to determine the animation has really completed and then wait
another frame, using requestAnimationFrame() to check that the computed style is as expected.

  • animations/transition-and-animation-1.html:
  • resources/ui-helper.js:

(window.UIHelper.waitForEvent):

8:40 AM Changeset in webkit [260512] by ysuzuki@apple.com
  • 4 edits
    14 adds in trunk

[JSC] AI results of BigInt32 Bitwise shift operation does not match to runtime results
https://bugs.webkit.org/show_bug.cgi?id=210839

Reviewed by Saam Barati.

JSTests:

  • stress/v8-bigint32-add.js: Added.

(main):

  • stress/v8-bigint32-and.js: Added.

(main):

  • stress/v8-bigint32-dec.js: Added.

(main):

  • stress/v8-bigint32-div.js: Added.

(main):

  • stress/v8-bigint32-inc.js: Added.

(main):

  • stress/v8-bigint32-mod.js: Added.

(main):

  • stress/v8-bigint32-mul.js: Added.

(main):

  • stress/v8-bigint32-neg.js: Added.

(main):

  • stress/v8-bigint32-not.js: Added.

(main):

  • stress/v8-bigint32-or.js: Added.

(main):

  • stress/v8-bigint32-sar.js: Added.

(main):

  • stress/v8-bigint32-shl.js: Added.

(main):

  • stress/v8-bigint32-sub.js: Added.

(main):

  • stress/v8-bigint32-xor.js: Added.

(main):

Source/JavaScriptCore:

While runtime function of bitwise ops with BigInt32 sometimes returns HeapBigInt, DFG AI is setting SpecBigInt32
as a result value. This leads to miscompilation particularly in FTL since FTL uses this information to remove
a lot of branches.

And we found that FTL BigInt32 predicate is not correctly checking state. This patch fixes it too.

Added test case found this (v8-bigint32-sar.js).

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileValueBitRShift):
(JSC::FTL::DFG::LowerDFGToB3::compileToNumeric):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
(JSC::FTL::DFG::LowerDFGToB3::compileIsBigInt):
(JSC::FTL::DFG::LowerDFGToB3::boolify):
(JSC::FTL::DFG::LowerDFGToB3::buildTypeOf):
(JSC::FTL::DFG::LowerDFGToB3::lowBigInt32):
(JSC::FTL::DFG::LowerDFGToB3::isBigInt32KnownNotCell):
(JSC::FTL::DFG::LowerDFGToB3::isBigInt32KnownNotNumber):
(JSC::FTL::DFG::LowerDFGToB3::isNotBigInt32KnownNotNumber):
(JSC::FTL::DFG::LowerDFGToB3::isNotAnyBigIntKnownNotNumber):
(JSC::FTL::DFG::LowerDFGToB3::isNotHeapBigIntUnknownWhetherCell):
(JSC::FTL::DFG::LowerDFGToB3::speculateBigInt32):
(JSC::FTL::DFG::LowerDFGToB3::speculateAnyBigInt):
(JSC::FTL::DFG::LowerDFGToB3::isBigInt32): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::isNotBigInt32): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::isNotAnyBigInt): Deleted.

8:37 AM Changeset in webkit [260511] by Chris Dumez
  • 7 edits in trunk/Source/WebCore

Unreviewed, reverting r259116.

Broke login flow on some apple-internal sites
(rdar://problem/61905262)

Reverted changeset:

"Move applyUserAgentIfNeeded calls to a more central place"
https://bugs.webkit.org/show_bug.cgi?id=209587
https://trac.webkit.org/changeset/259116

7:42 AM Changeset in webkit [260510] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][TFC] Introduce TableFormattingContext::computeAndDistributeExtraVerticalSpace
https://bugs.webkit.org/show_bug.cgi?id=210830

Reviewed by Antti Koivisto.

Add a dedicated function to compute preferred heights for the table rows.
This is in preparation for the 2 pass layout required to finalize row height.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeBorderAndPadding):

  • layout/FormattingContext.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::computedPadding const):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutInFlowContent):
(WebCore::Layout::TableFormattingContext::layoutCell):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraVerticalSpace):
(WebCore::Layout::TableFormattingContext::setComputedGeometryForRows):
(WebCore::Layout::TableFormattingContext::setComputedGeometryForSections):
(WebCore::Layout::TableFormattingContext::positionTableCells): Deleted.

  • layout/tableformatting/TableFormattingContext.h:
7:40 AM Changeset in webkit [260509] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iPadOS wk2 Release ] fast/css-custom-paint/constructor.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=208837

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
6:26 AM Changeset in webkit [260508] by Claudio Saavedra
  • 7 edits in trunk/Source

[GTK4] Several fixes to GdkEvent APIs for GTK4
https://bugs.webkit.org/show_bug.cgi?id=210856

Reviewed by Carlos Garcia Campos.

Source/WebCore:

No tests needed.

Several fixes to GdkEvent API changes for GTK4. This is far from
complete but it allows the GTK4 build to move forward. When
possible, add GTK3-API replacements to GtkVersioning.h to avoid
#ifdef blocks, where the API changes are too complex, just #ifdef.

  • platform/gtk/GtkUtilities.cpp:

(WebCore::wallTimeForEvent):

  • platform/gtk/GtkVersioning.h:

(gdk_event_get_state):
(gdk_event_get_coords):
(gdk_event_get_root_coords):
(gdk_event_is_scroll_stop_event):
(gdk_event_get_scroll_direction):
(gdk_event_get_scroll_deltas):
(gdk_event_get_button):
(gdk_keymap_get_for_display): Deleted as it was wrong and
it's not needed.

  • platform/gtk/PlatformKeyboardEventGtk.cpp:

(WebCore::PlatformKeyboardEvent::currentCapsLockState):
(WebCore::PlatformKeyboardEvent::getCurrentModifierState):
(WebCore::PlatformKeyboardEvent::modifiersContainCapsLock):

  • platform/gtk/PlatformWheelEventGtk.cpp:

(WebCore::PlatformWheelEvent::PlatformWheelEvent):

Source/WTF:

  • wtf/glib/GTypedefs.h: In GTK4 GdkEvent is a struct.
5:12 AM WebKitGTK/2.28.x edited by Philippe Normand
(diff)
4:48 AM Changeset in webkit [260507] by youenn@apple.com
  • 5 edits in trunk/Source

Simplify SWServerWorker::whenActivated logic
https://bugs.webkit.org/show_bug.cgi?id=210795

Reviewed by Alex Christensen.

Source/WebCore:

Improve logging and ensure whenActivated can be called whatever the worker state is.
No change of behavior.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::didFinishInstall):
(WebCore::SWServer::fireInstallEvent):
(WebCore::SWServer::fireActivateEvent):

  • workers/service/server/SWServerWorker.cpp:

(WebCore::SWServerWorker::whenActivated):

Source/WebKit:

Improve logging and update code according whenActivated implementation.
Add an early check for timeouts so that we return earlier in that case.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::createFetchTask):
(WebKit::WebSWServerConnection::startFetch):

4:36 AM Changeset in webkit [260506] by eocanha@igalia.com
  • 7 edits in trunk

[GStreamer][MSE] Youtube 'live stream'/H264 URLs fail to play, VP8/9 URLs play OK
https://bugs.webkit.org/show_bug.cgi?id=209119

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

The fix consists of removing the initial avoiding of seeking and just
issuing the proper segment instead of seeking (seeks in GStreamer can't
be done before prerolling anyway). Appsrc doesn't make easy to emit our
own custom segment, so what I did was to use a segment fixer probe to
modify the original [0, infinity] segment issued by appsrc and use
a [startTime, stopTime] with proper values depending on the seek target
and rate.

Covered by existing tests.

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::checkShouldDelaySeek): Don't hold seeks on startup, when changing from READY to PAUSED.
(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek): Refactored seek delay condition. Also, don't do a regular
gst_element_seek() for initial seeks, just proceed with a special case in that situation.

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(initialSeekSegmentFixerProbe): Probe that fixes the segment.
(webKitMediaSrcPrepareInitialSeek): Behave much like a regular seek, but also compute the right GstSegment, install
the segment fixer probe and setReadyForMoreSamples() on the SourceBufferPrivates.

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.h:

LayoutTests:

Unskipped media/media-source/media-source-seek-redundant-append.html,
which passes now.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
3:19 AM Changeset in webkit [260505] by svillar@igalia.com
  • 12 edits
    16 copies
    5 adds in trunk

[WebXR] Test IDLs and stubs
https://bugs.webkit.org/show_bug.cgi?id=209859

Reviewed by Dean Jackson and Youenn Fablet.

Source/WebCore:

WebXR testing is hard as it might involve interaction with actual
devices. That's why the WebXR testing
API (https://immersive-web.github.io/webxr-test-api/) was
proposed. In fact, all the current WebXR tests from
web-platform-tests are using that testing API. This new testing
API supplements navigator.xr and is accessed through
navigator.xr.test.

In order not to expose the API to the web we're adding the XRTest
interface to Internals instead. The mapping from internals.xrTest to
navigator.xr.test happens in the WPT code.

We're adding the required IDLs and very basic (mostly empty)
implementations for testing methods. We're adding testing
infrastructure, adding tests make no sense for this change.

  • CMakeLists.txt: Added new files.
  • DerivedSources.make: Ditto.
  • Modules/webxr/NavigatorWebXR.h: Export API to be used in testing code.
  • Modules/webxr/WebXRSystem.h: Export ::from and ::xr methods.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • bindings/js/WebCoreBuiltinNames.h: Added some new macros.
  • testing/FakeXRBoundsPoint.h: Added.
  • testing/FakeXRBoundsPoint.idl: Added.
  • testing/FakeXRButtonStateInit.h: Added.
  • testing/FakeXRButtonStateInit.idl: Added.
  • testing/FakeXRInputSourceInit.h: Added.
  • testing/FakeXRInputSourceInit.idl: Added.
  • testing/FakeXRRigidTransformInit.h: Added.
  • testing/FakeXRRigidTransformInit.idl: Added.
  • testing/FakeXRViewInit.h: Added.
  • testing/FakeXRViewInit.idl: Added.
  • testing/Internals.cpp:

(WebCore::Internals::xrTest): Added WebXRTest to Internals.

  • testing/Internals.h: Added xrTest() accessor.
  • testing/Internals.idl: Added xrTest attribute.
  • testing/WebFakeXRDevice.cpp: Added.

(WebCore::WebFakeXRDevice::setViews):
(WebCore::WebFakeXRDevice::disconnect):
(WebCore::WebFakeXRDevice::setViewerOrigin):
(WebCore::WebFakeXRDevice::clearViewerOrigin):
(WebCore::WebFakeXRDevice::simulateVisibilityChange):
(WebCore::WebFakeXRDevice::setBoundsGeometry):
(WebCore::WebFakeXRDevice::setFloorOrigin):
(WebCore::WebFakeXRDevice::clearFloorOrigin):
(WebCore::WebFakeXRDevice::simulateResetPose):
(WebCore::WebFakeXRDevice::simulateInputSourceConnection):

  • testing/WebFakeXRDevice.h: Added.
  • testing/WebFakeXRDevice.idl: Added.
  • testing/WebFakeXRInputController.cpp: Added.

(WebCore::WebFakeXRInputController::setHandedness):
(WebCore::WebFakeXRInputController::setTargetRayMode):
(WebCore::WebFakeXRInputController::setProfiles):
(WebCore::WebFakeXRInputController::setGripOrigin):
(WebCore::WebFakeXRInputController::clearGripOrigin):
(WebCore::WebFakeXRInputController::setPointerOrigin):
(WebCore::WebFakeXRInputController::disconnect):
(WebCore::WebFakeXRInputController::reconnect):
(WebCore::WebFakeXRInputController::startSelection):
(WebCore::WebFakeXRInputController::endSelection):
(WebCore::WebFakeXRInputController::simulateSelect):
(WebCore::WebFakeXRInputController::setSupportedButtons):
(WebCore::WebFakeXRInputController::updateButtonState):

  • testing/WebFakeXRInputController.h: Added.
  • testing/WebFakeXRInputController.idl: Added.
  • testing/WebXRTest.cpp: Added.

(WebCore::WebXRTest::simulateDeviceConnection const):
(WebCore::WebXRTest::simulateUserActivation):
(WebCore::WebXRTest::disconnectAllDevices):

  • testing/WebXRTest.h: Added.

(WebCore::WebXRTest::create):

  • testing/WebXRTest.idl: Added.
  • testing/XRSimulateUserActivationFunction.h: Added.
  • testing/XRSimulateUserActivationFunction.idl: Ditto.

LayoutTests:

  • platform/wpe/TestExpectations: Added bug number to the passing webxr test.
12:16 AM Changeset in webkit [260504] by graouts@webkit.org
  • 9 edits
    2 adds in trunk/Source/WebCore

[Web Animations] Add a supporting object for Document to manage timelines
https://bugs.webkit.org/show_bug.cgi?id=210817

Reviewed by Dean Jackson.

Add a new DocumentTimelinesController object owned by Document to manage DocumentTimelines created for it. This simple piece of refactoring is the first
step towards a coordinated "update animations and send events" procedure where all timelines are updated at once with a single microtask checkpoint instead
of each timeline running one.

No change in behavior, so no new tests.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::DocumentTimeline):
(WebCore::DocumentTimeline::~DocumentTimeline):
(WebCore::DocumentTimeline::controller const):
(WebCore::DocumentTimeline::detachFromDocument):

  • animation/DocumentTimeline.h:
  • animation/DocumentTimelinesController.cpp: Added.

(WebCore::DocumentTimelinesController::DocumentTimelinesController):
(WebCore::DocumentTimelinesController::~DocumentTimelinesController):
(WebCore::DocumentTimelinesController::addTimeline):
(WebCore::DocumentTimelinesController::removeTimeline):
(WebCore::DocumentTimelinesController::detachFromDocument):
(WebCore::DocumentTimelinesController::updateAnimationsAndSendEvents):

  • animation/DocumentTimelinesController.h: Added.
  • dom/Document.cpp:

(WebCore::Document::commonTeardown):
(WebCore::Document::ensureTimelinesController):
(WebCore::Document::updateAnimationsAndSendEvents): Deleted.
(WebCore::Document::addTimeline): Deleted.
(WebCore::Document::removeTimeline): Deleted.

  • dom/Document.h:

(WebCore::Document::timelinesController const):

  • page/Page.cpp:

(WebCore::Page::updateRendering):

12:10 AM Changeset in webkit [260503] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK] Gardening, update test expectations
https://bugs.webkit.org/show_bug.cgi?id=210851

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/fast/repaint/focus-ring-repaint-expected.txt: Update

baseline after r260367.

Note: See TracTimeline for information about the timeline view.