Timeline



Nov 2, 2021:

11:53 PM Changeset in webkit [285199] by beidson@apple.com
  • 7 edits in trunk/Source

Notifications on iOS enabled at compile-time, disabled at runtime
https://bugs.webkit.org/show_bug.cgi?id=232649

Reviewed by Tim Horton.

Source/WebCore:

No new tests (Changing compiled behavior but definitely not runtime behavior)

  • Modules/notifications/Notification.idl:
  • Modules/notifications/NotificationPermission.idl:
  • Modules/notifications/NotificationPermissionCallback.idl:
  • bindings/js/WebCoreBuiltinNames.h:

Source/WTF:

  • wtf/PlatformEnableCocoa.h:
8:37 PM Changeset in webkit [285198] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

UnicodeDecodeError in write_reftest copying a non-UTF8 expected result file
https://bugs.webkit.org/show_bug.cgi?id=232643

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:

(TestResultWriter.write_reftest):
If a reftest's -expected.html file is not valid UTF-8, and the test fails,
when we copy the expected file from the layout tests directory to the
test results directory, we attempt to parse it as UTF-8, resulting in
an exception being thrown.

Instead of needlessly reading in the file as a string and immediately
writing it back out, just copy the file...

I'm not sure there are any not-valid-UTF-8 *ref* tests in the tree, but
there is at least one not-valid-UTF-8 *text* test, which can be run
as a ref-test in some scenarios (see r285132), in which case this problem
occurs: fast/css/line-height-determined-by-primary-font.html.

Also, explicitly ensure the output directory exists before copying
to avoid regressing r122505. Previously this was done inside _write_text_file.

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

[JSC] Add LLInt fast path for OpMod on x86_64
https://bugs.webkit.org/show_bug.cgi?id=232644

Reviewed by Saam Barati and Yusuke Suzuki.

This patch ports the x86_64 fast path for OpMod from baseline JIT to LLInt.

This is quite similar to OpDiv but the implementation avoids using binaryOpCustomStore
because OpMod is not a ProfiledBinaryOp.

Performance results appear negligible with all JIT tiers enabled;
relevant microbenchmarks with JIT off are as follows.

Before After

int-or-other-mod-then-get-by-val 158.0136+-0.9338 39.7698+-0.4394 definitely 3.9732x faster
integer-modulo 15.1972+-0.4197 7.1461+-0.1530 definitely 2.1266x faster
mod-boolean 145.4011+-2.0483 ? 146.1243+-1.6816 ?
mod-boolean-double 145.6148+-1.8530 ? 145.9380+-1.7073 ?
mod-untyped 286.9585+-3.9535 284.0360+-4.1221 might be 1.0103x faster
negative-zero-modulo 1.2951+-0.1275 1.0220+-0.0412 definitely 1.2672x faster

<geometric> 51.5408+-0.8164 34.7341+-0.3365 definitely 1.4839x faster

  • jit/GPRInfo.h: Add assertions.
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
8:08 PM Changeset in webkit [285196] by caitp@igalia.com
  • 15 edits
    3 adds in trunk/Source/WebCore

[WebIDL] Support [Exposed=*] extended attribute
https://bugs.webkit.org/show_bug.cgi?id=231082

Reviewed by Chris Dumez.

Adds a shorthand to expose interfaces/attributes on Window, Workers*,
and the forthcoming ShadowRealm global object.

See https://github.com/heycam/webidl/issues/468 and
https://github.com/heycam/webidl/pull/526 for details.

  • bindings/scripts/CodeGenerator.pm:

(shouldPropertyBeExposed):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateRuntimeEnableConditionalStringForExposed):

  • bindings/scripts/IDLParser.pm:

(parseExtendedAttributeRest2):

  • bindings/scripts/preprocess-idls.pl:
  • bindings/scripts/test/AudioWorkletGlobalScopeConstructors.idl:
  • bindings/scripts/test/DOMWindowConstructors.idl:
  • bindings/scripts/test/DedicatedWorkerGlobalScopeConstructors.idl:
  • bindings/scripts/test/ExposedStar.idl: Added.
  • bindings/scripts/test/JS/JSDOMWindow.cpp:

(WebCore::jsDOMWindow_ExposedStarConstructorGetter):
(WebCore::JSC_DEFINE_CUSTOM_GETTER):

  • bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp:

(WebCore::jsDedicatedWorkerGlobalScope_ExposedStarConstructorGetter):
(WebCore::JSC_DEFINE_CUSTOM_GETTER):

  • bindings/scripts/test/JS/JSExposedStar.cpp: Added.

(WebCore::JSExposedStarDOMConstructor::prototypeForStructure):
(WebCore::JSExposedStarDOMConstructor::initializeProperties):
(WebCore::JSExposedStarPrototype::finishCreation):
(WebCore::JSExposedStar::JSExposedStar):
(WebCore::JSExposedStar::finishCreation):
(WebCore::JSExposedStar::createPrototype):
(WebCore::JSExposedStar::prototype):
(WebCore::JSExposedStar::getConstructor):
(WebCore::JSC_DEFINE_CUSTOM_GETTER):
(WebCore::jsExposedStarPrototypeFunction_operationForAllContextsBody):
(WebCore::JSC_DEFINE_HOST_FUNCTION):
(WebCore::jsExposedStarPrototypeFunction_operationJustForWindowContextsBody):
(WebCore::jsExposedStarPrototypeFunction_operationJustForWorkerContextsBody):
(WebCore::JSExposedStar::subspaceForImpl):
(WebCore::JSExposedStar::analyzeHeap):
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
(WebCore::JSExposedStar::toWrapped):

  • bindings/scripts/test/JS/JSExposedStar.h: Added.

(WebCore::JSExposedStar::create):
(WebCore::JSExposedStar::createStructure):
(WebCore::JSExposedStar::subspaceFor):
(WebCore::JSExposedStar::wrapped const):
(WebCore::toJS):
(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp:

(WebCore::jsPaintWorkletGlobalScope_ExposedStarConstructorGetter):
(WebCore::JSC_DEFINE_CUSTOM_GETTER):

  • bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp:

(WebCore::jsServiceWorkerGlobalScope_ExposedStarConstructorGetter):
(WebCore::JSC_DEFINE_CUSTOM_GETTER):

  • bindings/scripts/test/PaintWorkletGlobalScopeConstructors.idl:
  • bindings/scripts/test/ServiceWorkerGlobalScopeConstructors.idl:
  • bindings/scripts/test/SupplementalDependencies.dep:
7:26 PM Changeset in webkit [285195] by don.olmstead@sony.com
  • 45 edits in trunk/Source

Non-unified build fixes early November 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=232589

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • API/JSAPIGlobalObject.cpp:
  • bytecode/EvalCodeBlock.cpp:
  • bytecode/FunctionCodeBlock.cpp:
  • bytecode/ModuleProgramCodeBlock.cpp:
  • bytecode/ProgramCodeBlock.cpp:
  • jit/JITInlineCacheGenerator.h:
  • runtime/CustomGetterSetter.cpp:
  • runtime/JSScriptFetcher.cpp:
  • runtime/JSSourceCode.cpp:
  • runtime/ShadowRealmObject.cpp:
  • runtime/ShadowRealmPrototype.cpp:
  • runtime/TemporalInstant.cpp:

Source/WebCore:

  • Modules/push-api/PushSubscriptionData.h:
  • animation/CSSPropertyAnimation.cpp:
  • animation/CSSPropertyAnimation.h:
  • animation/CSSTransition.cpp:
  • animation/WebAnimation.cpp:
  • css/SelectorFilter.cpp:
  • dom/Attr.cpp:
  • dom/ComposedTreeIterator.cpp:
  • editing/BreakBlockquoteCommand.cpp:
  • editing/InsertParagraphSeparatorCommand.cpp:
  • editing/SplitElementCommand.cpp:
  • editing/SplitTextNodeContainingElementCommand.cpp:
  • html/HTMLSummaryElement.cpp:
  • html/HTMLTitleElement.cpp:
  • html/track/VTTCue.cpp:
  • inspector/DOMPatchSupport.cpp:
  • inspector/InspectorNodeFinder.cpp:
  • inspector/agents/InspectorPageAgent.cpp:
  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:
  • page/ResizeObservation.cpp:
  • page/scrolling/ScrollingCoordinatorTypes.h:
  • rendering/RenderCounter.cpp:
  • rendering/svg/RenderSVGModelObject.cpp:
  • rendering/svg/SVGResources.cpp:
  • rendering/svg/SVGRootInlineBox.cpp:
  • rendering/svg/SVGTextChunk.cpp:
  • style/ElementRuleCollector.cpp:
  • style/PageRuleCollector.h:

Source/WebKit:

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::createGPUConnectionToWebProcess):
(WebKit::GPUProcess::webProcessConnection const):
(WebKit::GPUProcess::updateCaptureAccess):
(WebKit::GPUProcess::updateCaptureOrigin):
(WebKit::GPUProcess::nowPlayingManager):

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:
7:19 PM Changeset in webkit [285194] by Russell Epstein
  • 1 copy in tags/Safari-613.1.6.7

Tag Safari-613.1.6.7.

7:12 PM Changeset in webkit [285193] by Russell Epstein
  • 8 edits in branches/safari-613.1.6-branch/Source

Versioning.

WebKit-7613.1.6.7

6:47 PM Changeset in webkit [285192] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Crash in RenderLayer::rebuildZOrderLists
https://bugs.webkit.org/show_bug.cgi?id=230229

Patch by Gabriel Nava Marino <gnavamarino@apple.com> on 2021-11-02
Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/layers/render-layer-rebuild-z-order-lists.html

To avoid operating on nullptr, allocate posZOrderList if it is null,
similar to how it is done in RenderLayer::collectLayers.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::rebuildZOrderLists):

LayoutTests:

  • fast/layers/render-layer-rebuild-z-order-lists-expected.txt: Added.
  • fast/layers/render-layer-rebuild-z-order-lists.html: Added.
  • platform/win/TestExpectations: Skip due to diag.showModal undefined in win.
6:27 PM Changeset in webkit [285191] by rmorisset@apple.com
  • 5 edits in trunk

Regression (r284330): [ macOS wk1 Debug ] webaudio/AudioBuffer/huge-buffer.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=232244
<rdar://problem/84616427>

Reviewed by Yusuke Suzuki.

Source/WebCore:

The test is verifying that trying to allocate an AudioBuffer with 4GB channels fails cleanly.
It used to work automatically, as AudioBuffer relies on Float32Array under the hood, which was limited to 2GB.
Since r284330, ArrayBuffers can be up to 4GB, so it now takes very long to OOM, and sometimes timeout.
I use the same solution which I used for PixelBuffers in r284330: just test that the length is reasonable
and if it is not then abort as if the allocation of the Float32Array had failed.

No new tests: covered by LayoutTests/webaudio/AudioBuffer/huge-buffer.html

  • Modules/webaudio/AudioBuffer.cpp:

(WebCore::AudioBuffer::AudioBuffer):

  • Modules/webaudio/AudioBuffer.h:

LayoutTests:

  • platform/mac-wk1/TestExpectations:
6:00 PM Changeset in webkit [285190] by Kocsen Chung
  • 1 copy in tags/Safari-612.3.3.0.1

Tag Safari-612.3.3.0.1.

5:21 PM Changeset in webkit [285189] by Dewei Zhu
  • 40 edits
    1 add in trunk/Websites/perf.webkit.org

Add 'paired-parallel' repetition type for A/B testing.
https://bugs.webkit.org/show_bug.cgi?id=229545

Reviewed by Ryosuke Niwa and Alexey Proskuryakov.

Add 'paired-parallel' repetition type for A/B testing.
Add 'TriggerableConfiguration' model to store repetition type information for each (platform, test) pair.
Add new component 'repetition-type-selection' to unify A/B testing UI for repetition type selection.
Extend A/B testing syncing script to update repetition types for each triggerable configuration and only
schedule A/B testing on a builder which supports a given repetition type.

  • browser-tests/custom-analysis-task-configurator-tests.js: Updated unit tests accordingly.

(async createCustomAnalysisTaskConfiguratorWithContext):

  • browser-tests/customizable-test-group-form-tests.js: Updated unit tests accordingly.

(async createCustomizableTestGroupFormWithContext):

  • browser-tests/test-group-form-tests.js: Updated unit tests accordingly.

(async createTestGroupFormWithContext):

  • init-database.sql: Added 'triggerable_configuration_repetition_types' table to store supported

repetition types for each triggerable configuration.
Added 'paired-parallel' repetition type.

  • migrate-database.sql: Updated migration scripts.
  • public/api/update-triggerable.php: Added logic to update repetition types for each tirggerable configurations.
  • public/include/commit-sets-helpers.php: Added support for 'paired-parallel' repetition type.
  • public/include/json-header.php: Extended 'find_triggerable_for_task' to include supported repetition types in

return value.

  • public/include/manifest-generator.php: Added logic to include supported repetition types in manifest.
  • public/privileged-api/add-build-requests.php: Extended API to support 'paired-parallel' repetition type.
  • public/privileged-api/create-analysis-task.php: Extended API to support 'paired-parallel' repetition type.
  • public/privileged-api/create-test-group.php: Extended API to support 'paired-parallel' repetition type.
  • public/v3/commit-set-range-bisector.js:

(CommitSetRangeBisector._closestCommitSetsToBisectingCommitByTime): Fix a bug that error is raise when there is
no middle commit set in a range.

  • public/v3/components/custom-configuration-test-group-form.js: Added code to update supported repetition types

on test config change.
(CustomConfigurationTestGroupForm.prototype.startTesting):
(CustomConfigurationTestGroupForm.prototype.didConstructShadowTree):

  • public/v3/components/customizable-test-group-form.js:

(CustomizableTestGroupForm.prototype.startTesting):

  • public/v3/components/repetition-type-selection.js: Added a new model that stores repetition types information

for each (platform, test) pair.
(RepetitionTypeSelection):
(RepetitionTypeSelection.prototype.didConstructShadowTree):
(RepetitionTypeSelection.prototype.get selectedRepetitionType):
(RepetitionTypeSelection.prototype.set selectedRepetitionType):
(RepetitionTypeSelection.prototype.set disabled):
(RepetitionTypeSelection.prototype.setTestAndPlatform):
(RepetitionTypeSelection.prototype.labelForRepetitionType):
(RepetitionTypeSelection.prototype.render):
(RepetitionTypeSelection.prototype._renderRepetitionTypeList):
(RepetitionTypeSelection.htmlTemplate):

  • public/v3/components/test-group-form.js: Adopt 'repetition-type-selection'.

(TestGroupForm.prototype.setTestAndPlatform):
(TestGroupForm.prototype.updateWithTestGroup):
(TestGroupForm.prototype.startTesting):

  • public/v3/index.html:
  • public/v3/models/manifest.js: Pass 'supportedRepetitionTypes' and 'id' for TriggerableConfiguration.

(Manifest.reset):
(Manifest._didFetchManifest):
(Manifest):

  • public/v3/models/test-group.js: Updated logic to share retry logic of 'alternating' test group with 'paired-parallel'

test group.
(TestGroup.prototype.async scheduleMoreRequestsOrClearFlag):

  • public/v3/models/triggerable.js: Added TriggerableConfiguration model.

Added code to creat TriggerableConfiguration in 'Triggerable' constructor.
(Triggerable):
(Triggerable.findByTestConfiguration):
(prototype.get triggerable):
(prototype.get supportedRepetitionTypes):
(findByTestAndPlatform):

  • public/v3/pages/analysis-task-page.js: Added code to update repetition type in the UI based on (test, platform) pair.

(AnalysisTaskResultsPane.prototype.setTestGroups):
(AnalysisTaskTestGroupPane.prototype._renderCurrentTestGroup):
(AnalysisTaskTestGroupPane.prototype._renderTestGroupForm):

  • public/v3/pages/chart-pane.js: Adopt 'repetition-type-selection'.

(ChartPane.prototype.didConstructShadowTree):
(ChartPane.prototype.async _analyzeRange):
(ChartPane.prototype._renderActionToolbar):

  • server-tests/api-manifest-tests.js:
  • server-tests/api-update-triggerable-tests.js: Added and updated unit tests.

(updateWithMacWebKitRepositoryGroups):

  • server-tests/api-upload-root-tests.js: Updated unit tests.
  • server-tests/privileged-api-add-build-requests-tests.js: Added and updated unit tests.

(async addTriggerableAndCreateTask):

  • server-tests/privileged-api-create-analysis-task-tests.js: Added and updated unit tests.
  • server-tests/privileged-api-create-test-group-tests.js: Added and updated unit tests.
  • server-tests/privileged-api-update-test-group-tests.js: Updated unit tests.

(async addTriggerableAndCreateTask):

  • server-tests/resources/mock-data.js:

(MockData.someTestConfigurationId):
(MockData.otherTestConfigurationId):
(MockData.addMockConfiguration):
(MockData.set mockTestSyncConfigWithSingleBuilder):
(MockData.mockTestSyncConfigWithPatchAcceptingBuilder):
(MockData.mockTestSyncConfigWithTwoBuilders):

  • server-tests/tools-sync-buildbot-integration-tests.js: Added and updated unit tests.
  • tools/js/buildbot-syncer.js: Added code to update supported repetition types on triggerable updates.

Update configuration match code to only scheduler build requests the repetition types of which are both
supported by builder and triggerable configuration.
(BuildbotSyncer):
(BuildbotSyncer.prototype.addTestConfiguration):
(BuildbotSyncer.prototype.matchesConfiguration):
(BuildbotSyncer._loadConfig):

  • tools/js/buildbot-triggerable.js:

(BuildbotTriggerable.prototype.updateTriggerable):
(BuildbotTriggerable.prototype.async syncOnce): Move the code that fetches all related test groups before
invoking 'BuildbotTriggerable._validateRequests' which needs repetition types stored in test group in
'BuildbotSyncer.matchesConfiguration'.

  • tools/js/v3-models.js:
  • unit-tests/buildbot-syncer-tests.js: Added and updated unit tests.

(sampleiOSConfig):
(sampleiOSConfigWithExpansions):
(smallConfiguration):
(smallConfigurationWithCustomRepetitionTypes):
(createSampleBuildRequest):

  • unit-tests/measurement-set-analyzer-tests.js: Updated unit tests.
  • unit-tests/resources/mock-v3-models.js:

(MockModels.inject):

3:19 PM Changeset in webkit [285188] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WTF

[WTF] Minor clean-up for format-related functions
<https://webkit.org/b/232514>

Reviewed by Yusuke Suzuki.

  • wtf/Assertions.cpp:

(WTF::createWithFormatAndArguments):

  • Put WTF_ATTRIBUTE_PRINTF() on its own line to match other functions.

(WTF::vprintf_stderr_with_prefix):
(WTF::vprintf_stderr_with_trailing_newline):

  • Move ALLOW_NONLITERAL_FORMAT_{BEGIN,END} around specific function calls that need them.
3:09 PM Changeset in webkit [285187] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Fails to execute JavaScript when soft stack limit is unlimited
https://bugs.webkit.org/show_bug.cgi?id=232328

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-11-02
Reviewed by Yusuke Suzuki.

Fall back to assuming an 8 MB stack limit when the real limit is unlimited. JSC needs to
have some maximum stack size to work with, and this is as good as any.

  • wtf/StackBounds.cpp:

(WTF::StackBounds::currentThreadStackBoundsInternal):

2:52 PM Changeset in webkit [285186] by don.olmstead@sony.com
  • 20 edits in trunk/Source/WebCore

SVG elements should include SVGElementInlines not ElementInlines
https://bugs.webkit.org/show_bug.cgi?id=232637

Reviewed by Yusuke Suzuki.

Replace usages of ElementInlines.h with SVGElementInlines.h in WebCore/svg. Add
SVGElementInlines.h to files that need them when compiled without unified builds.

  • svg/SVGAElement.cpp:
  • svg/SVGAltGlyphElement.cpp:
  • svg/SVGAnimationElement.cpp:
  • svg/SVGFEImageElement.cpp:
  • svg/SVGFilterPrimitiveStandardAttributes.cpp:
  • svg/SVGFontFaceNameElement.cpp:
  • svg/SVGFontFaceUriElement.cpp:
  • svg/SVGHKernElement.cpp:
  • svg/SVGImageElement.cpp:
  • svg/SVGMaskElement.cpp:
  • svg/SVGPatternElement.cpp:
  • svg/SVGStyleElement.cpp:
  • svg/SVGTRefElement.cpp:
  • svg/SVGTSpanElement.cpp:
  • svg/SVGTextElement.cpp:
  • svg/SVGTextPathElement.cpp:
  • svg/SVGVKernElement.cpp:
  • svg/animation/SVGSMILElement.cpp:
  • svg/properties/SVGAttributeAnimator.cpp:
2:50 PM Changeset in webkit [285185] by don.olmstead@sony.com
  • 3 edits in trunk/Source/WebCore

[MSVC] Remove unused friend class in filter code
https://bugs.webkit.org/show_bug.cgi?id=232636

Reviewed by Yusuke Suzuki.

In r284857 the WTF prefix was removed from ParallelJobs in filter code. During a
non-unified build MSVC thinks that there is a WebCore::ParallelJobs due to a friend
declaration in filter code and fails to build. Remove the friend declaration as they are
not used.

  • platform/graphics/filters/FEGaussianBlur.h:
  • platform/graphics/filters/FETurbulence.h:
2:48 PM Changeset in webkit [285184] by pvollan@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r268421): TestWebKitAPI.WebKit.PreferenceChanges* tests are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=221848
<rdar://problem/70966379>

Reviewed by Brent Fulgham.

After r268421, the preferences are set asynchronously in the WebContent process, which introduced this flakiness.
This patch addresses this by modifying the flaky tests to loop until the preference value is equal to the expected
value.

  • TestWebKitAPI/Tests/WebKit/PreferenceChanges.mm:

(TEST):

2:25 PM Changeset in webkit [285183] by Kocsen Chung
  • 5 edits in branches/safari-612.3.3.1-branch/Source

Cherry-pick r283732. rdar://problem/84944569

Add feature flag for COOP / COEP violation reporting and turn off by default
https://bugs.webkit.org/show_bug.cgi?id=231371

Reviewed by Youenn Fablet.

Add feature flag for COOP / COEP violation reporting and turn off by default since our
implementation doesn't match the latest specification.

Source/WebCore:

  • loader/CrossOriginEmbedderPolicy.cpp: (WebCore::sendCOEPPolicyInheritenceViolation): (WebCore::sendCOEPCORPViolation):
  • loader/CrossOriginOpenerPolicy.cpp: (WebCore::sendViolationReportWhenNavigatingToCOOPResponse): (WebCore::sendViolationReportWhenNavigatingAwayFromCOOPResponse):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

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

2:24 PM Changeset in webkit [285182] by Kocsen Chung
  • 8 edits in branches/safari-612.3.3.1-branch/Source

Versioning.

WebKit-7612.3.3.1.1

2:20 PM Changeset in webkit [285181] by Kocsen Chung
  • 5 edits in branches/safari-612.3.3.0-branch/Source

Cherry-pick r283732. rdar://problem/84944569

Add feature flag for COOP / COEP violation reporting and turn off by default
https://bugs.webkit.org/show_bug.cgi?id=231371

Reviewed by Youenn Fablet.

Add feature flag for COOP / COEP violation reporting and turn off by default since our
implementation doesn't match the latest specification.

Source/WebCore:

  • loader/CrossOriginEmbedderPolicy.cpp: (WebCore::sendCOEPPolicyInheritenceViolation): (WebCore::sendCOEPCORPViolation):
  • loader/CrossOriginOpenerPolicy.cpp: (WebCore::sendViolationReportWhenNavigatingToCOOPResponse): (WebCore::sendViolationReportWhenNavigatingAwayFromCOOPResponse):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

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

2:08 PM Changeset in webkit [285180] by Kocsen Chung
  • 1 copy in branches/safari-612.3.3.1-branch

New branch.

1:44 PM Changeset in webkit [285179] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Crash under WebPage::sendCOEPCORPViolation()
https://bugs.webkit.org/show_bug.cgi?id=232631
<rdar://84919898>

Reviewed by Alex Christensen.

Add missing null checks for the frame after calling WebProcess::singleton().webFrame(frameID).

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::sendCOEPPolicyInheritenceViolation):
(WebKit::WebPage::sendCOEPCORPViolation):
(WebKit::WebPage::sendViolationReportWhenNavigatingToCOOPResponse):
(WebKit::WebPage::sendViolationReportWhenNavigatingAwayFromCOOPResponse):

12:57 PM Changeset in webkit [285178] by commit-queue@webkit.org
  • 27 edits
    7 adds in trunk

[JSC] Implement Temporal.Instant
https://bugs.webkit.org/show_bug.cgi?id=229826

Patch by Philip Chimento <pchimento@igalia.com> on 2021-11-02
Reviewed by Yusuke Suzuki.

JSTests:

  • stress/temporal-instant.js: Added.

(shouldBe):
(shouldNotBe):
(shouldThrow):
(instants.forEach):
(shouldThrow.new.Temporal.Instant):
(const.maxValue.new.Temporal.Instant):
(shouldBe.epoch.subtract):

  • test262/config.yaml: No need to ignore all Temporal.Instant tests anymore, only the ones for the unimplemented methods.

Source/JavaScriptCore:

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/ISO8601.cpp:

(JSC::ISO8601::parseInstant): Add a parsing function for Instant strings

reusing as much as possible from the other parsing functions.

(JSC::ISO8601::ExactTime::fromISOPartsAndOffset): Static method for

creating from ISO calendar components and UTC offset.

(JSC::ISO8601::checkedCastDoubleToInt128): Helper function for checking

whether a double can fit into an int128 without overflow.

(JSC::ISO8601::ExactTime::add const):
(JSC::ISO8601::ExactTime::round):
(JSC::ISO8601::ExactTime::difference const):
(JSC::ISO8601::ExactTime::round const):

  • runtime/ISO8601.h:

(JSC::ISO8601::ExactTime::ExactTime): Add an ExactTime type that wraps

an Int128 and can do the basic operations. This type can be reused in
Temporal.ZonedDateTime.

(JSC::ISO8601::ExactTime::fromEpochSeconds):
(JSC::ISO8601::ExactTime::fromEpochMilliseconds):
(JSC::ISO8601::ExactTime::fromEpochMicroseconds):
(JSC::ISO8601::ExactTime::epochSeconds const):
(JSC::ISO8601::ExactTime::epochMilliseconds const):
(JSC::ISO8601::ExactTime::epochMicroseconds const):
(JSC::ISO8601::ExactTime::epochNanoseconds const):
(JSC::ISO8601::ExactTime::nanosecondsFraction const):
(JSC::ISO8601::ExactTime::asString const):
(JSC::ISO8601::ExactTime::isValid const):
(JSC::ISO8601::ExactTime::operator< const):
(JSC::ISO8601::ExactTime::operator<= const):
(JSC::ISO8601::ExactTime::operator== const):
(JSC::ISO8601::ExactTime::operator!= const):
(JSC::ISO8601::ExactTime::operator>= const):
(JSC::ISO8601::ExactTime::operator> const):

  • runtime/IntlDateTimeFormat.h:
  • runtime/IntlDateTimeFormatPrototype.cpp:

(JSC::IntlDateTimeFormat::handleDateTimeValue): Add a minimal

implementation of the HandleDateTimeValue abstract op from the
Temporal specification, only covering Temporal.Instant.

(JSC::JSC_DEFINE_HOST_FUNCTION): Use it in the existing

Intl.DateTimeFormat methods.

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::createFrom): Add an overload that takes an Int128.

  • runtime/JSBigInt.h: Remove declaration for nonexistent toUint64Heap().
  • runtime/JSDateMath.cpp: Move timeToMS() into WTF.
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildrenImpl):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::instantStructure):

  • runtime/TemporalDuration.cpp:

(JSC::TemporalDuration::toLimitedDuration): Added.

  • runtime/TemporalDuration.h:
  • runtime/TemporalInstant.cpp: Added.

(JSC::TemporalInstant::createStructure):
(JSC::TemporalInstant::TemporalInstant):
(JSC::TemporalInstant::create):
(JSC::TemporalInstant::tryCreateIfValid):
(JSC::TemporalInstant::toInstant):
(JSC::TemporalInstant::from):
(JSC::TemporalInstant::fromEpochSeconds):
(JSC::TemporalInstant::fromEpochMilliseconds):
(JSC::TemporalInstant::fromEpochMicroseconds):
(JSC::TemporalInstant::fromEpochNanoseconds):
(JSC::TemporalInstant::compare):

  • runtime/TemporalInstant.h: Added.
  • runtime/TemporalInstantConstructor.cpp: Added.

(JSC::TemporalInstantConstructor::create):
(JSC::TemporalInstantConstructor::createStructure):
(JSC::TemporalInstantConstructor::TemporalInstantConstructor):
(JSC::TemporalInstantConstructor::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/TemporalInstantConstructor.h: Added.
  • runtime/TemporalInstantPrototype.cpp: Added.

(JSC::TemporalInstantPrototype::create):
(JSC::TemporalInstantPrototype::createStructure):
(JSC::TemporalInstantPrototype::TemporalInstantPrototype):
(JSC::TemporalInstantPrototype::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSC_DEFINE_CUSTOM_GETTER):

  • runtime/TemporalInstantPrototype.h: Added.
  • runtime/TemporalObject.cpp:

(JSC::createInstantConstructor): Added.
(JSC::formatSecondsStringPart): Added.
(JSC::abs): Added for clarity.
(JSC::roundNumberToIncrement): Add overload for Int128.

  • runtime/TemporalObject.h:
  • runtime/VM.cpp:
  • runtime/VM.h:

Source/WTF:

  • wtf/CheckedArithmetic.h: Don't use builtin operations if int128 is being emulated using WTF::Int128. Also work around Clang/Linux bug where builtin_mul_overflow() doesn't work on int128. See https://bugs.llvm.org/show_bug.cgi?id=16404
  • wtf/DateMath.h:

(WTF::timeToMS): Moved from JSDateMath.h.

12:42 PM Changeset in webkit [285177] by sihui_liu@apple.com
  • 6 edits in trunk/Source/WebKit

Terminate unresponsive network process by crashing it
https://bugs.webkit.org/show_bug.cgi?id=232603

Reviewed by Chris Dumez.

UI process currently kills network process when it does not respond message in some time (network process being
unresponsive). We've found one common case where network process becomes unresponsive is that it is blocked by
some slow operation on the main thread (like file operation in rdar://84511633). To understand what the
operations are and make a fix, we now ask network process to crash itself on IPC thread. In this way, we can get
crash report that includes the call stack of the main thread. To avoid generating too many crash reports, we
only send the crash message to network process when it becomes unresponsive multiple times in a short time
period.

  • Platform/IPC/Connection.cpp:

(IPC::terminateDueToIPCTerminateMessage):
(IPC::Connection::processIncomingMessage):

  • Scripts/webkit/model.py:
  • Scripts/webkit/tests/MessageNames.cpp:

(IPC::description):
(IPC::receiverName):
(IPC::isValidMessageName):

  • Scripts/webkit/tests/MessageNames.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::shouldTerminateNetworkProcessBySendingMessage):
(WebKit::NetworkProcessProxy::didBecomeUnresponsive):

12:38 PM Changeset in webkit [285176] by Russell Epstein
  • 8 edits in branches/safari-612.3.3.0-branch/Source

Versioning.

WebKit 7612.3.3.0.1

12:35 PM Changeset in webkit [285175] by Jonathan Bedard
  • 7 edits in trunk/Tools

[webkitscmpy] Reduce autoinstalls on import
https://bugs.webkit.org/show_bug.cgi?id=232574
<rdar://problem/84894275>

Reviewed by Stephanie Lewis.

  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Remove whichcraft (webkitcorepy registers it).
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py: Remove unused webkitscmpy imports.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py: Remote unused webkitcorepy import.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py: Move whichcraft to function.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py: Move jinja2 to function.
  • Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py: Move fasteners, xmltodict import to functions.

Canonical link: https://commits.webkit.org/243809@main

12:31 PM Changeset in webkit [285174] by Russell Epstein
  • 5 edits in branches/safari-612-branch/Source

Cherry-pick r283732. rdar://problem/84349027

Add feature flag for COOP / COEP violation reporting and turn off by default
https://bugs.webkit.org/show_bug.cgi?id=231371

Reviewed by Youenn Fablet.

Add feature flag for COOP / COEP violation reporting and turn off by default since our
implementation doesn't match the latest specification.

Source/WebCore:

  • loader/CrossOriginEmbedderPolicy.cpp: (WebCore::sendCOEPPolicyInheritenceViolation): (WebCore::sendCOEPCORPViolation):
  • loader/CrossOriginOpenerPolicy.cpp: (WebCore::sendViolationReportWhenNavigatingToCOOPResponse): (WebCore::sendViolationReportWhenNavigatingAwayFromCOOPResponse):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

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

12:26 PM Changeset in webkit [285173] by Ross Kirsling
  • 3 edits in trunk/Source/JavaScriptCore

[JSC][LLInt] Reverse unintended effects of r285152
https://bugs.webkit.org/show_bug.cgi?id=232633

Reviewed by Saam Barati.

The previous patch was not intended to change the generated assembly whatsoever,
but it turns out that 3-argument syntax produces, e.g. vsub instead of sub on x86.

As such, this patch does away with the 3-arg cases and merely clarifies names as rhs, lhs across the board.

(Also: Fix a line from the previous patch where a macro was not referring to a passed label properly.)

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
12:20 PM Changeset in webkit [285172] by Russell Epstein
  • 1 copy in branches/safari-612.3.3.0-branch

New branch.

12:02 PM Changeset in webkit [285171] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Provide bidi properties when constructing TextRun
https://bugs.webkit.org/show_bug.cgi?id=232632

Reviewed by Alan Bujtas.

Enable correct painting of bidi text runs.

  • layout/integration/InlineIteratorBoxModernPath.h:

(WebCore::InlineIterator::BoxModernPath::createTextRun const):
(WebCore::InlineIterator::BoxModernPath::renderText const):
(WebCore::InlineIterator::BoxModernPath::direction const):

11:36 AM Changeset in webkit [285170] by Kate Cheney
  • 12 edits in trunk

PCM: Safari on iOS and macOS are not sending ad click attribution reports for Private Click Measurement
https://bugs.webkit.org/show_bug.cgi?id=228104
<rdar://problem/80991209>

Reviewed by John Wilander.

Source/WebCore:

No new tests. Several existing tests would timeout with the removal of
m_firePendingAttributionRequestsTimer.startOneShot(m_isRunningTest ? 0_s : seconds)
if the fix wasn't in place.

  • loader/PrivateClickMeasurement.cpp:

(WebCore::randomlyBetweenTwentyFourAndFortyEightHours):
(WebCore::PrivateClickMeasurement::attributeAndGetEarliestTimeToSend):

  • loader/PrivateClickMeasurement.h:

Source/WebKit:

firePendingAttributionRequests() was sometimes scheduling the next timer
fire to be the raw time value instead of the difference between now
and the scheduled send time. This was resulting in some reports not being
sent within the 24-48 hour range.

To test this, this patch removes the immediate timer fire for testing
and instead sets the earliest time to send values to both be 1 second.
This will test that the proper timer gets set to send both reports.

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:

(WebKit::PCM::Database::attributePrivateClickMeasurement):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::startTimer):
(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::randomlyBetweenFifteenAndThirtyMinutes const):
(WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests):
In the case of both times being past due to report, schedule one for
15 - 30 minutes later.

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h:
  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.cpp:

(WebKit::PCM::Store::attributePrivateClickMeasurement):

  • NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:

(TestWebKitAPI::TEST):

11:34 AM Changeset in webkit [285169] by commit-queue@webkit.org
  • 22 edits in trunk

AX: WebKit needs to include NSAccessibilityChildrenInNavigationOrderAttribute in accessibilityAttributeNames
https://bugs.webkit.org/show_bug.cgi?id=232595

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-11-02
Reviewed by Andres Gonzalez.

This patch adds NSAccessibilityChildrenInNavigationOrderAttribute
(a.k.a. AXChildrenInNavigationOrder) to
WebAccessibilityObjectWrapperMac::accessibilityAttributeNames. The Mac
wrapper supported this attribute prior to this patch, but we didn't
advertise that we supported it because we didn't include it in our
exported attribute names.

Source/WebCore:

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

Add NSAccessibilityChildrenInNavigationOrderAttribute to list of base
supported attributes.

LayoutTests:

  • accessibility/image-link-expected.txt:
  • accessibility/image-map2-expected.txt:
  • accessibility/internal-link-anchors2-expected.txt:
  • accessibility/mac/aria-columnrowheaders-expected.txt:
  • accessibility/mac/bounds-for-range-expected.txt:
  • accessibility/mac/document-attributes-expected.txt:
  • accessibility/mac/document-links-expected.txt:
  • accessibility/mac/internal-link-anchors-expected.txt:
  • accessibility/math-multiscript-attributes-expected.txt:
  • accessibility/table-attributes-expected.txt:
  • accessibility/table-cell-spans-expected.txt:
  • accessibility/table-cells-expected.txt:
  • accessibility/table-detection-expected.txt:
  • accessibility/table-one-cell-expected.txt:
  • accessibility/table-sections-expected.txt:
  • accessibility/table-with-rules-expected.txt:
  • accessibility/transformed-element-expected.txt:
  • platform/mac/accessibility/lists-expected.txt:
  • platform/mac/accessibility/parent-delete-expected.txt:

Add expected AXChildrenInNavigationOrder attribute output.

10:50 AM Changeset in webkit [285168] by timothy_horton@apple.com
  • 8 edits in trunk/Tools

dumpAsText() tests don't get the ref-test treatment when using --self-compare-with-header
https://bugs.webkit.org/show_bug.cgi?id=232611

Reviewed by Jonathan Bedard.

One oversight in r285132: a test can disable pixel dumping by calling
dumpAsText(). This causes --self-compare-with-header to fall over because
it expects every test to have pixel results (and that is the whole point).

Add an un-overrideable --force-dump-pixels TestCommand argument,
and adopt it for self-comparison tests.

  • Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:

(SingleTestRunner._run_self_comparison_test):

  • Scripts/webkitpy/port/driver.py:

(DriverInput.init):
(DriverInput.repr):
(Driver._command_from_driver_input):

  • TestRunnerShared/TestCommand.cpp:

(WTR::parseInputLine):

  • TestRunnerShared/TestCommand.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::runTest):

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::dumpResults):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/TestInvocation.h:
10:25 AM Changeset in webkit [285167] by sbarati@apple.com
  • 4 edits
    1 add in trunk

EnumeratorGetByVal for IndexedMode+OwnStructureMode doesn't always recover the property name
https://bugs.webkit.org/show_bug.cgi?id=231321
<rdar://problem/84211697>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/enumerator-get-by-val-needs-to-recover-property-name.js: Added.

Source/JavaScriptCore:

When running an EnumeratorGetByVal in IndexedMode+OwnStructureMode, we may
go to the slow path. However, we were incorrectly going to the slow path
before recovering the actual property name. Instead, we were passing in
the integer index value to the get by val.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileEnumeratorGetByVal):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

10:11 AM Changeset in webkit [285166] by Kate Cheney
  • 5 edits in trunk/LayoutTests

Followup fix to https://bugs.webkit.org/show_bug.cgi?id=231928

Unreviewed. Update test expectations now that we report HTTP status
code in console messages.

  • http/tests/app-privacy-report/app-attribution-preflight-async-expected.txt:
  • http/tests/app-privacy-report/app-attribution-preflight-sync-expected.txt:
  • http/tests/app-privacy-report/user-attribution-preflight-async-expected.txt:
  • http/tests/app-privacy-report/user-attribution-preflight-sync-expected.txt:
10:09 AM Changeset in webkit [285165] by Simon Fraser
  • 5 edits in trunk/Source/WebKit

Revert the wheel event coalescing added in r277587
https://bugs.webkit.org/show_bug.cgi?id=232602
<rdar://84908023>

Reviewed by Wenson Hsieh.

This wheel event coalescing was added to allow the tail end of momentum scrolls on
120Hz devices to fall back to 60fps for power reasons. However, the OS does this for
us, so we don't need to do our own coalescing.

  • Shared/WebWheelEventCoalescer.cpp:

(WebKit::WebWheelEventCoalescer::shouldDispatchEvent):
(WebKit::WebWheelEventCoalescer::isMomentumPhaseEvent): Deleted.

  • Shared/WebWheelEventCoalescer.h:

(WebKit::WebWheelEventCoalescer::shouldCoalesceEventsDuringDeceleration const): Deleted.
(WebKit::WebWheelEventCoalescer::setShouldCoalesceEventsDuringDeceleration): Deleted.
(): Deleted.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::wheelEventCoalescer):
(WebKit::WebPageProxy::windowScreenDidChange):
(WebKit::WebPageProxy::shouldCoalesceWheelEventsDuringDeceleration const): Deleted.

  • UIProcess/WebPageProxy.h:
10:01 AM Changeset in webkit [285164] by Patrick Angle
  • 7 edits in trunk/Source

WebDriver: [Cocoa] support acceptInsecureCerts capability
https://bugs.webkit.org/show_bug.cgi?id=231789

Reviewed by BJ Burg.

Add necessary plumbing to support the acceptInsecureCerts WebDriver capability.

Source/JavaScriptCore:

  • inspector/remote/RemoteInspectorConstants.h:
  • inspector/remote/cocoa/RemoteInspectorCocoa.mm:

(Inspector::RemoteInspector::receivedAutomationSessionRequestMessage):

Source/WebKit:

  • UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:
  • UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.mm:

(-[_WKAutomationSessionConfiguration init]):
(-[_WKAutomationSessionConfiguration copyWithZone:]):

  • UIProcess/Cocoa/AutomationClient.mm:

(WebKit::AutomationClient::requestAutomationSession):

9:37 AM Changeset in webkit [285163] by Kate Cheney
  • 7 edits in trunk

https://bugs.webkit.org/show_bug.cgi?id=232593
Remove isAppInitiated from _WKSessionState

Reviewed by Brent Fulgham.

Source/WebKit:

After https://bugs.webkit.org/show_bug.cgi?id=232486 we no longer need
the isAppInitiated value on _WKSessionState. It will be set
automatically when session state is retrieved.

No new tests. Confirmed by existing RestoreFromSessionState* API
tests.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _restoreSessionState:andNavigate:]):

  • UIProcess/API/Cocoa/_WKSessionState.h:
  • UIProcess/API/Cocoa/_WKSessionState.mm:

(-[_WKSessionState _sessionStateWithAppInitiatedValue]): Deleted.

  • UIProcess/API/Cocoa/_WKSessionStateInternal.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/AppPrivacyReport.mm:
9:01 AM Changeset in webkit [285162] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Add support for IFC preferred width computation
https://bugs.webkit.org/show_bug.cgi?id=232621

Reviewed by Alan Bujtas.

The functionality is behind a #define and not enabled yet.

  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):

Return the cached value if it exists.

  • layout/formattingContexts/inline/InlineFormattingContext.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::computeIntrinsicWidthConstraints):

Interface with IFC.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::computeAndSetLineLayoutPath):

Factor into a function.

(WebCore::RenderBlockFlow::layoutInlineChildren):
(WebCore::RenderBlockFlow::computeInlinePreferredLogicalWidths const):
(WebCore::RenderBlockFlow::tryComputePreferredWidthsUsingModernPath):

Test if we the content can use the IFC preferred width computation. This way the
feature can be enabled incrementally.

  • rendering/RenderBlockFlow.h:
8:59 AM Changeset in webkit [285161] by Chris Lord
  • 9 edits in trunk/Source/WebCore

[GTK][WPE] Use the display refresh to drive scrolling animations (async scroll)
https://bugs.webkit.org/show_bug.cgi?id=232432

Reviewed by Simon Fraser.

Implement missing API in nicosia async scroll path to have scroll
animations driven by the display refresh instead of a 60Hz timer.

No new tests, covered by existing tests.

  • page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp:

(WebCore::ScrollingCoordinatorNicosia::didCompleteRenderingUpdate):
(WebCore::ScrollingCoordinatorNicosia::hasNodeWithAnimatedScrollChanged):

  • page/scrolling/nicosia/ScrollingCoordinatorNicosia.h:
  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeFrameScrollingNodeNicosia::serviceScrollAnimation):

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.h:
  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::serviceScrollAnimation):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.h:
  • page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.cpp:

(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::startAnimationCallback):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::stopAnimationCallback):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::serviceScrollAnimation):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::animationTimerFired): Deleted.

  • page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.h:
8:56 AM Changeset in webkit [285160] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Line should keep track of whether the content needs visual reordering
https://bugs.webkit.org/show_bug.cgi?id=232601

Reviewed by Antti Koivisto.

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::initialize):
(WebCore::Layout::Line::append):

  • layout/formattingContexts/inline/InlineLine.h:

(WebCore::Layout::Line::contentNeedsBidiReordering const):

8:42 AM Changeset in webkit [285159] by Chris Dumez
  • 9 edits in trunk/Source

Use higher QoS for WheelEvent and DisplayWasRefreshed IPCs
https://bugs.webkit.org/show_bug.cgi?id=232458
<rdar://82657744>

Reviewed by Simon Fraser.

Source/WebKit:

Use higher QoS for WheelEvent and DisplayWasRefreshed IPCs since those are high priority. The
UIProcess's main thread has high UserInteractive QoS but the IPC thread has a lower QoS by default.

We cannot raise the QoS of the IPC thread without regressing some performance benchmarks since not
all IPC is high priority.

Making this change helps with responsiveness under heavy load scenarios.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::sendMessage):

  • Platform/IPC/Connection.h:

(IPC::Connection::send):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::sendWheelEvent):

  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::notifyObserversDisplayWasRefreshed):

Source/WTF:

Add dispatchWithQOS() function to WorkQueue to dispatch a task with a given QoS.

  • wtf/WorkQueue.cpp:

(WTF::WorkQueueBase::dispatchWithQOS):

  • wtf/WorkQueue.h:
  • wtf/cocoa/WorkQueueCocoa.cpp:

(WTF::WorkQueueBase::dispatchWithQOS):

8:11 AM Changeset in webkit [285158] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Generalize pull-request title generation.
https://bugs.webkit.org/show_bug.cgi?id=232463
<rdar://problem/84784354>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py:

(PullRequest.title_for): Compute pull-request title for a set of commits.
(PullRequest.main): Generalize pull-request title generation.

7:56 AM Changeset in webkit [285157] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Pass in the visual order list to display box construction
https://bugs.webkit.org/show_bug.cgi?id=232600

Reviewed by Antti Koivisto.

In this patch we compute the visual order for the bidi runs if needed. This visual order is then passed
in to the display box builder so that the final display boxes are constructed in the right order (horizontal positions are not yet adjusted).

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineContent):

  • layout/formattingContexts/inline/InlineLine.h:

(WebCore::Layout::Line::contentNeedsBidiReordering const):

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::layoutInlineContent):

  • layout/formattingContexts/inline/InlineLineBuilder.h:
6:56 AM Changeset in webkit [285156] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Use the isLineSpanningInlineBoxStart line run type to update spanning inline box geometry
https://bugs.webkit.org/show_bug.cgi?id=232578

Reviewed by Antti Koivisto.

Now that we have dedicated LineSpanningInlineBoxStart line run type, let's use it to update the associated inline box geometry.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::build):
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineContent): Move the update logic over here from the createBoxesAndUpdateGeometryForLineSpanningInlineBoxes loop.
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineSpanningInlineBoxes): Deleted.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.h:
1:47 AM Changeset in webkit [285155] by commit-queue@webkit.org
  • 19 edits
    4 adds in trunk

[GTK][WPE] Support setting status code and getting HTTP method in custom URI scheme handlers
https://bugs.webkit.org/show_bug.cgi?id=231880

Patch by Zixing Liu <liushuyu011@gmail.com> on 2021-11-02
Reviewed by Carlos Garcia Campos.

Source/WebKit:

  • SourcesGTK.txt: Added WebKitURISchemeResponse.cpp
  • SourcesWPE.txt: Added WebKitURISchemeResponse.cpp
  • UIProcess/API/glib/WebKitURISchemeRequest.cpp:

(webkit_uri_scheme_request_get_http_method): Added new API function
(webkit_uri_request_finish_with_response): Added new API function

  • UIProcess/API/glib/WebKitURISchemeRequestPrivate.h: Added.
  • UIProcess/API/glib/WebKitURISchemeResponse.cpp: Added.

(webkit_uri_scheme_response_class_init): Added init function for the new type
(webkit_uri_scheme_response_new): Added new API function
(webkit_uri_scheme_response_set_status): Added new API function
(webkit_uri_scheme_response_set_content_type): Added new API function

  • UIProcess/API/glib/WebKitURISchemeResponsePrivate.h: Copied from Source/WebKit/UIProcess/API/glib/WebKitURISchemeRequestPrivate.h.
  • UIProcess/API/gtk/WebKitAutocleanups.h: Register clean-up function for WebkitURISchemeResponse
  • UIProcess/API/gtk/WebKitURISchemeRequest.h: Added function prototype for

webkit_uri_scheme_request_get_http_method

  • UIProcess/API/gtk/WebKitURISchemeResponse.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Added new symbols and new types
  • UIProcess/API/gtk/webkit2.h: Include a new header: WebKitURISchemeResponse.h
  • UIProcess/API/wpe/WebKitURISchemeRequest.h: Added function prototype for

webkit_uri_scheme_request_get_http_method

  • UIProcess/API/gtk/WebKitURISchemeResponse.h: Added.
  • UIProcess/API/wpe/webkit.h: Include a new header: WebKitURISchemeResponse.h
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt: Added new symbols and new types

Tools:

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:

(testWebContextURIScheme): Added tests to test new public APIs for WebKitGtk

Nov 1, 2021:

11:56 PM Changeset in webkit [285154] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Remove some unused Heap fields.
https://bugs.webkit.org/show_bug.cgi?id=232604

Reviewed by Yusuke Suzuki.

  • heap/Heap.cpp:

(JSC::Heap::notifyThreadStopping):

  • heap/Heap.h:
9:55 PM Changeset in webkit [285153] by Russell Epstein
  • 8 edits in branches/safari-612-branch/Source

Versioning.

WebKit-7612.3.4

8:42 PM Changeset in webkit [285152] by Ross Kirsling
  • 3 edits in trunk/Source/JavaScriptCore

[JSC][LLInt] Non-commutative binops are hard to reason about when operands are labelled in reverse
https://bugs.webkit.org/show_bug.cgi?id=232598

Reviewed by Saam Barati.

In offlineasm, OP a, b, c is c = a OP b but OP a, b is b = b OP a.

This can make identifiers like left and right quite confusing --
simple cases like subd left, right are already misleading, while OpDiv literally
passes its RHS to a macro as left and then checks left for division by zero.
It becomes difficult to keep this all in one's brain without rewriting it on paper.

This patch may not constitute a "complete solution", but it at least makes our naming honest:

  1. Use 3-argument syntax (as left, right, result) whenever possible.
  2. When not possible (e.g. because bsubio isn't flexible about its arguments or because x86 doesn't have 3-argument shift operations), then say rhs, lhs explicitly.
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
8:25 PM Changeset in webkit [285151] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

[Curl] Fix -Wreorder-ctor in CurlRequest
https://bugs.webkit.org/show_bug.cgi?id=232591

Reviewed by Ross Kirsling.

Reorder member initializer list in CurlRequest::CurlRequest to follow the ordering of
members in its declaration.

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::CurlRequest):

7:30 PM Changeset in webkit [285150] by Fujii Hironori
  • 2 edits in trunk/Tools

ImageDiff.cpp(74): warning C4477: 'fprintf' : format string '%lu' requires an argument of type 'unsigned long', but variadic argument 2 has type 'size_t'
https://bugs.webkit.org/show_bug.cgi?id=232596

Reviewed by Don Olmstead.

Since r284764, MSVC reports the following warning and a suggestion.

Tools\ImageDiff\ImageDiff.cpp(74): warning C4477: 'fprintf' : format string '%lu' requires an argument of type 'unsigned long', but variadic argument 2 has type 'size_t'
Tools\ImageDiff\ImageDiff.cpp(74): note: consider using '%zu' in the format string

  • ImageDiff/ImageDiff.cpp:

(processImages): Use %zu for size_t.

6:14 PM Changeset in webkit [285149] by ysuzuki@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

[JSC] LLIntCallee should have two replacements
https://bugs.webkit.org/show_bug.cgi?id=228552
rdar://81217357

Reviewed by Saam Barati.

LLIntCallee can be used for signaling memory and bounds-checking memory.
Thus it should have two replacements for each mode.

  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::work):

  • wasm/WasmCallee.h:

(JSC::Wasm::Callee::setOSREntryCallee):

  • wasm/WasmOMGForOSREntryPlan.cpp:

(JSC::Wasm::OMGForOSREntryPlan::work):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):

  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::updateCallSitesToCallUs):

  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::WASM_SLOW_PATH_DECL):

6:06 PM Changeset in webkit [285148] by beidson@apple.com
  • 2 edits in trunk/Source/WebKitLegacy/mac

Make WebChromeClient's m_webView pointer weak.
https://bugs.webkit.org/show_bug.cgi?id=232588

Reviewed by David Kilzer.

  • WebCoreSupport/WebChromeClient.h:
4:56 PM Changeset in webkit [285147] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

[AX] Fix signature of childrenChanged when !ENABLE(ACCESSIBILITY)
https://bugs.webkit.org/show_bug.cgi?id=232590
<rdar://problem/84904540>

Unreviewed build fix.

In r285092 the signature of childrenChanged went from AXCoreObject* to AccessibilityObject*
but wasn't updated when accessibility is disabled.

  • accessibility/AXObjectCache.h:

(WebCore::AXObjectCache::checkedStateChanged):
(WebCore::AXObjectCache::childrenChanged):

4:50 PM Changeset in webkit [285146] by don.olmstead@sony.com
  • 5 edits in trunk

[Curl] Explicitly disable libcurl's internal cookie support
https://bugs.webkit.org/show_bug.cgi?id=232586

Reviewed by Ross Kirsling.

.:

Setting CURLOPT_COOKIEFILE to NULL to disable the cookie engine was not added till 7.77.0
so require that version or later.

  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

Explicitly disable the cookie engine inside curl.

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::CurlHandle):

4:33 PM Changeset in webkit [285145] by commit-queue@webkit.org
  • 122 edits in trunk

[WebInspector][CORS] Show HTTP status code in CORS messages.
https://bugs.webkit.org/show_bug.cgi?id=231928

LayoutTests/imported/w3c:

Patch by Michael[tm] Smith <sideshowbarker (Michael[tm] Smith)> on 2021-11-01
Reviewed by Darin Adler

Update tests with CORS messages, by adding the status code.

  • web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-data-url-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox_032-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub-expected.txt:
  • web-platform-tests/referrer-policy/generic/sandboxed-iframe-with-opaque-origin-expected.txt:
  • web-platform-tests/workers/modules/dedicated-worker-import-data-url-cross-origin-expected.txt:
  • web-platform-tests/worklets/audio-worklet-credentials.https-expected.txt:
  • web-platform-tests/worklets/audio-worklet-import.https-expected.txt:
  • web-platform-tests/worklets/audio-worklet-referrer.https-expected.txt:

Source/WebCore:

Patch by Michael Smith <sideshowbarker (Michael[tm] Smith)> on 2021-11-01
Reviewed by Darin Adler

Make the HTTP status be included in all CORS messages that might
get logged to the Inspector console when a 4xx or 5xx error occurs.
That means these:

  • Failed to load resource: Origin foo is not allowed by

Access-Control-Allow-Origin

  • Failed to load resource: Preflight response is not successful

The change makes those messages read as follows (in the case of,
for example, a 500 error):

  • Failed to load resource: Origin foo is not allowed by

Access-Control-Allow-Origin. Status code: 500

  • Failed to load resource: Preflight response is not successful.

Status code: 500

Tests: Updates 100+ existing tests, by changing expected messages.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::passesAccessControlCheck):
(WebCore::validatePreflightResponse):

Source/WebKit:

Patch by Michael[tm] Smith <sideshowbarker (Michael[tm] Smith)> on 2021-11-01
Reviewed by Darin Adler

Make the HTTP status be included in all CORS messages that might
get logged to the Inspector console when a 4xx or 5xx error occurs.
That means these:

  • Failed to load resource: Origin foo is not allowed by

Access-Control-Allow-Origin

  • Failed to load resource: Preflight response is not successful

The change makes those messages read as follows (in the case of,
for example, a 500 error):

  • Failed to load resource: Origin foo is not allowed by

Access-Control-Allow-Origin. Status code: 500

  • Failed to load resource: Preflight response is not successful.

Status code: 500

Tests: Updates 100+ existing tests, by changing expected messages.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::willPerformHTTPRedirection):

LayoutTests:

Patch by Michael Smith <sideshowbarker (Michael[tm] Smith)> on 2021-11-01
Reviewed by Darin Adler

Update tests with CORS messages, by adding the status code.

  • http/tests/eventsource/eventsource-cors-basic-expected.txt:
  • http/tests/loading/cross-origin-XHR-willLoadRequest-expected.txt:
  • http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt:
  • http/tests/security/cached-cross-origin-preloaded-css-stylesheet-expected.txt:
  • http/tests/security/cached-cross-origin-preloading-css-stylesheet-expected.txt:
  • http/tests/security/cannot-read-cssrules-expected.txt:
  • http/tests/security/cannot-read-cssrules-redirect-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-expected.txt:
  • http/tests/security/cookie-module-import-propagate-expected.txt:
  • http/tests/security/cross-origin-cached-images-expected.txt:
  • http/tests/security/cross-origin-cached-resource-expected.txt:
  • http/tests/security/cross-origin-cached-scripts-expected.txt:
  • http/tests/security/cross-origin-cached-scripts-parallel-expected.txt:
  • http/tests/security/img-with-failed-cors-check-fails-to-load-expected.txt:
  • http/tests/security/import-module-crossorigin-loads-error-expected.txt:
  • http/tests/security/import-module-crossorigin-loads-error-src-expected.txt:
  • http/tests/security/import-script-crossorigin-loads-error-expected.txt:
  • http/tests/security/isolatedWorld/cross-origin-xhr-expected.txt:
  • http/tests/security/load-image-after-redirection-2-expected.txt:
  • http/tests/security/load-image-after-redirection-expected.txt:
  • http/tests/security/script-with-failed-cors-check-fails-to-load-expected.txt:
  • http/tests/security/shape-image-cors-redirect-error-message-logging-1-expected.txt:
  • http/tests/security/shape-image-cors-redirect-error-message-logging-2-expected.txt:
  • http/tests/security/shape-image-cors-redirect-error-message-logging-3-expected.txt:
  • http/tests/security/text-track-crossorigin-expected.txt:
  • http/tests/security/video-cross-origin-accessfailure-expected.txt:
  • http/tests/security/video-poster-cross-origin-crash-expected.txt:
  • http/tests/security/video-poster-cross-origin-crash2-expected.txt:
  • http/tests/subresource-integrity/sri-fetch-expected.txt:
  • http/tests/subresource-integrity/sri-fetch-worker-expected.txt:
  • http/tests/subresource-integrity/sri-module-expected.txt:
  • http/tests/subresource-integrity/sri-script-expected.txt:
  • http/tests/subresource-integrity/sri-style-expected.txt:
  • http/tests/workers/service/service-worker-crossorigin-fetch-expected.txt:
  • http/tests/workers/service/serviceworkerclients-claim.https-expected.txt:
  • http/tests/workers/service/shift-reload-navigation-expected.txt:
  • http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt:
  • http/tests/xmlhttprequest/access-control-and-redirects-expected.txt:
  • http/tests/xmlhttprequest/access-control-basic-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-basic-denied-preflight-cache-expected.txt:
  • http/tests/xmlhttprequest/access-control-basic-get-fail-non-simple-expected.txt:
  • http/tests/xmlhttprequest/access-control-basic-post-fail-non-simple-content-type-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-async-not-supported-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • http/tests/xmlhttprequest/access-control-preflight-sync-not-supported-expected.txt:
  • http/tests/xmlhttprequest/access-control-repeated-failed-preflight-crash-expected.txt:
  • http/tests/xmlhttprequest/access-control-sandboxed-iframe-denied-expected.txt:
  • http/tests/xmlhttprequest/access-control-sandboxed-iframe-denied-without-wildcard-expected.txt:
  • http/tests/xmlhttprequest/cross-origin-no-credential-prompt-expected.txt:
  • http/tests/xmlhttprequest/cross-site-denied-response-expected.txt:
  • http/tests/xmlhttprequest/cross-site-denied-response-sync-2-expected.txt:
  • http/tests/xmlhttprequest/cross-site-denied-response-sync-expected.txt:
  • http/tests/xmlhttprequest/onerror-event-expected.txt:
  • http/tests/xmlhttprequest/origin-allow-list-https-expected.txt:
  • http/tests/xmlhttprequest/origin-allow-list-ip-addresses-with-subdomains-expected.txt:
  • http/tests/xmlhttprequest/origin-allow-list-removal-expected.txt:
  • http/tests/xmlhttprequest/origin-exact-matching-expected.txt:
  • http/tests/xmlhttprequest/post-blob-content-type-async-expected.txt:
  • http/tests/xmlhttprequest/post-blob-content-type-sync-expected.txt:
  • http/tests/xmlhttprequest/redirect-cross-origin-2-expected.txt:
  • http/tests/xmlhttprequest/redirect-cross-origin-expected.txt:
  • http/tests/xmlhttprequest/redirect-cross-origin-post-expected.txt:
  • http/tests/xmlhttprequest/redirect-cross-origin-post-sync-expected.txt:
  • http/tests/xmlhttprequest/redirect-cross-origin-sync-expected.txt:
  • http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt:
  • http/tests/xmlhttprequest/simple-cross-origin-denied-events-expected.txt:
  • http/tests/xmlhttprequest/simple-cross-origin-denied-events-post-expected.txt:
  • http/tests/xmlhttprequest/simple-cross-origin-denied-events-post-sync-expected.txt:
  • http/tests/xmlhttprequest/simple-cross-origin-denied-events-sync-expected.txt:
  • http/tests/xmlhttprequest/simple-cross-origin-progress-events-expected.txt:
  • http/tests/xmlhttprequest/upload-request-error-event-order-expected.txt:
  • http/tests/xmlhttprequest/workers/access-control-basic-get-fail-non-simple-expected.txt:
  • http/tests/xmlhttprequest/xmlhttprequest-sync-no-progress-events-expected.txt:
  • http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect-expected.txt:
  • http/wpt/resource-timing/rt-resource-errors-expected.txt:
  • http/wpt/webaudio/audioworklet-addModule-cors.sub.https-expected.txt:
  • platform/glib/http/tests/xmlhttprequest/simple-cross-origin-denied-events-post-expected.txt:
  • platform/gtk/http/tests/security/video-cross-origin-accessfailure-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker-expected.txt:
  • platform/ios/http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/access-control-and-redirects-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/post-blob-content-type-async-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/post-blob-content-type-sync-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/redirect-cross-origin-post-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/simple-cross-origin-denied-events-post-expected.txt:
  • platform/mac-wk1/http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-none.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-require-corp.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-none.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-require-corp.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker-expected.txt:
  • platform/win/http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt:
  • platform/win/http/tests/xmlhttprequest/access-control-and-redirects-expected.txt:
  • platform/win/http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • platform/win/http/tests/xmlhttprequest/redirect-cross-origin-post-expected.txt:
  • platform/win/http/tests/xmlhttprequest/redirect-cross-origin-tripmine-expected.txt:
  • platform/win/http/tests/xmlhttprequest/simple-cross-origin-denied-events-post-expected.txt:
  • platform/win/http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect-expected.txt:
  • platform/wincairo-wk1/http/tests/xmlhttprequest/redirect-cross-origin-post-expected.txt:
  • platform/wincairo-wk1/http/tests/xmlhttprequest/simple-cross-origin-denied-events-post-expected.txt:
  • platform/wincairo/http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect-expected.txt:
4:29 PM Changeset in webkit [285144] by ddkilzer@apple.com
  • 2 edits in trunk

Add ddkilzer's GitHub name to contributors.json
<https://webkit.org/b/232587>

Reviewed by Jonathan Bedard.

  • metadata/contributors.json:
4:21 PM Changeset in webkit [285143] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[CMake] Can't stat Source/WebCore/Modules/webgpu: No such file or directory
https://bugs.webkit.org/show_bug.cgi?id=232583

Reviewed by Konstantin Tokarev.

r285096 removed WebCore/Modules/webgpu directory.

  • CMakeLists.txt: Removed Modules/webgpu directory from

WebCore_IDL_INCLUDES and WebCore_PRIVATE_INCLUDE_DIRECTORIES.

  • PlatformMac.cmake:
4:13 PM Changeset in webkit [285142] by Jonathan Bedard
  • 5 edits in trunk/Tools

[webkitscmpy] Only respect the latest review
https://bugs.webkit.org/show_bug.cgi?id=231987
<rdar://problem/84434991>

Reviewed by Dewei Zhu.

GitHub will report the entire history of a review, we should only
respect the latest review state.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.PRGenerator.reviewers):

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py:

(TestNetworkPullRequestGitHub.test_approved_edits):

4:05 PM Changeset in webkit [285141] by mmaxfield@apple.com
  • 4 edits
    2 moves in trunk/Source/WebCore

Rename GPUDevice to GPUPrewarming because it conflicts with WebGPU's GPUDevice
https://bugs.webkit.org/show_bug.cgi?id=232549

Reviewed by Tim Horton.

We should have called it GPUPrewarming from the beginning, because that's what it does.

No new tests because there is no behavior change.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/ProcessWarming.cpp:
  • platform/graphics/gpu/GPUPrewarming.h: Renamed from Source/WebCore/platform/graphics/gpu/GPUDevice.h.
  • platform/graphics/gpu/cocoa/GPUPrewarmingMetal.mm: Renamed from Source/WebCore/platform/graphics/gpu/cocoa/GPUDeviceMetal.mm.
3:50 PM Changeset in webkit [285140] by Russell Epstein
  • 1 copy in tags/Safari-613.1.6.6

Tag Safari-613.1.6.6.

3:28 PM Changeset in webkit [285139] by Russell Epstein
  • 8 edits in branches/safari-613.1.6-branch/Source

Versioning.

WebKit-7613.1.6.6

3:27 PM Changeset in webkit [285138] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

Avoid heap-allocating ImportanceAssertion
https://bugs.webkit.org/show_bug.cgi?id=232579

Reviewed by Alex Christensen.

Avoid heap-allocating ImportanceAssertion since this is just a wrapper around a
mach_port.

Also update the ImportanceAssertion destructor to null out the mach port as
hardening given <rdar://75139294>.

  • Platform/IPC/Decoder.cpp:

(IPC::Decoder::setImportanceAssertion):

  • Platform/IPC/Decoder.h:
  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::Connection::receiveSourceEventHandler):

  • Platform/IPC/cocoa/ImportanceAssertion.h:

(IPC::ImportanceAssertion::ImportanceAssertion):
(IPC::ImportanceAssertion::operator=):
(IPC::ImportanceAssertion::~ImportanceAssertion):

3:15 PM Changeset in webkit [285137] by Sam Sneddon
  • 4 edits in trunk/Tools

Improve LayoutTestFinder test coverage
https://bugs.webkit.org/show_bug.cgi?id=232576

Reviewed by Jonathan Bedard.

Some of these are largely copied from layout_tests/run_webkit_tests_integrationtest.py, but
in unit test form for the test finder.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_finder_legacy_unittest.py:

(LayoutTestFinderTests.init):
(LayoutTestFinderTests):
(LayoutTestFinderTests.setUp):
(LayoutTestFinderTests.tearDown):
(LayoutTestFinderTests.test_find_no_paths_specified):
(LayoutTestFinderTests.test_find_no_paths_sorted):
(LayoutTestFinderTests.test_find_all_no_paths):
(LayoutTestFinderTests.test_includes_other_platforms):
(LayoutTestFinderTests.test_find_one_test):
(LayoutTestFinderTests.test_find_platform):
(LayoutTestFinderTests.test_find_platform_self):
(LayoutTestFinderTests.test_find_platform_other):
(LayoutTestFinderTests.test_find_platform_specific):
(LayoutTestFinderTests.test_find_platform_specific_directory):
(LayoutTestFinderTests.test_find_directory_includes_platform_specific):
(LayoutTestFinderTests.test_find_glob):
(LayoutTestFinderTests.test_find_glob_mixed_file_type_sorted):
(LayoutTestFinderTests.test_find_glob_directory):
(LayoutTestFinderTests.test_find_glob_directory_b):
(LayoutTestFinderTests.test_find_glob_directory_e):
(LayoutTestFinderTests.test_find_directory):
(LayoutTestFinderTests.test_find_directory_trailing_slash):
(LayoutTestFinderTests.test_find_directory_star):
(LayoutTestFinderTests.test_preserves_order):
(LayoutTestFinderTests.test_preserves_order_multiple_times):
(LayoutTestFinderTests.test_preserves_order_directories):
(LayoutTestFinderTests.test_preserves_order_mixed_file_type):
(LayoutTestFinderTests.test_preserves_order_mixed_file_type_b):
(LayoutTestFinderTests.test_find_directory_multiple_times):
(LayoutTestFinderTests.test_no_reference):
(LayoutTestFinderTests.test_glob_no_references):
(LayoutTestFinderTests.test_find_with_skipped_directories):
(LayoutTestFinderTests.test_find_with_skipped_directories_2):
(LayoutTestFinderTests.test_is_test_file):
(LayoutTestFinderTests.test_is_w3c_resource_file):
(LayoutTestFinderTests.make_finder): Deleted.

  • Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:

(RunTest.setUp): Re-enable tests on Python 3, as this now works
(RunTest.test_child_processes_min): Also ignore tests in platform/

  • Scripts/webkitpy/port/test.py:
3:09 PM Changeset in webkit [285136] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Stop measuring text while collecting inline items when content needs bidi split
https://bugs.webkit.org/show_bug.cgi?id=232571

Reviewed by Antti Koivisto.

When we know we are going to do bidi processing, these inline item width results will most likely become stale at breakAndComputeBidiLevels.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::breakAndComputeBidiLevels):
(WebCore::Layout::InlineItemsBuilder::handleTextContent):
(WebCore::Layout::InlineItemsBuilder::enterBidiContext):
(WebCore::Layout::InlineItemsBuilder::exitBidiContext):
(WebCore::Layout::InlineItemsBuilder::buildPreviousTextContent):

  • layout/formattingContexts/inline/InlineItemsBuilder.h:

(WebCore::Layout::InlineItemsBuilder::isBiDiContent const):

3:09 PM Changeset in webkit [285135] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS-only ] media/track/track-element-load-event.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=232585.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:04 PM Changeset in webkit [285134] by Nikos Mouchtaris
  • 4 edits
    4 moves
    9 adds in trunk/LayoutTests

Add platform test expectations for imported/w3c/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-001.html
https://bugs.webkit.org/show_bug.cgi?id=232504

Reviewed by Myles C. Maxfield.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-001-expected.txt: Added.
  • platform/mac/TestExpectations:
2:58 PM Changeset in webkit [285133] by Jenner@apple.com
  • 2 edits in trunk

Add my GitHub name (robert-jenner) to contributors.json
https://bugs.webkit.org/show_bug.cgi?id=232581

Reviewed by Jonathan Bedard.

  • metadata/contributors.json:
2:30 PM Changeset in webkit [285132] by timothy_horton@apple.com
  • 9 edits in trunk/Tools

Add a run-webkit-tests mode to A/B test a given feature
https://bugs.webkit.org/show_bug.cgi?id=232553

Reviewed by Jonathan Bedard.

Add the argument --self-compare-with-header to run-webkit-tests, which
can be used to test the impact of a given feature (or set of features;
it accepts the standard test features header format).

When tests are run in this mode, all tests are run in the ref-test
style, but with the expected and actual results loading the same
test file (ignoring the usual -expected.html or whatever); they differ
only in the set of features/preferences enabled.

This is especially useful for testing the impact of e.g. platform
graphics features, where the difference between the shipping behavior
and in-development behavior is more interesting than whether or not
it actually makes the tests, as written, fail.

  • Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:

(SingleTestRunner):
(SingleTestRunner._run_comparison_test):
Add the comparison test runner, and prefer it if requested.

One note here: the run with the options derived from the given header is
considered the "actual" result and the default configuration the "expected".

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):

  • Scripts/webkitpy/port/driver.py:

(DriverInput.init):
(DriverInput.repr):
(Driver._command_from_driver_input):
Pass the comparison test header along to the test runner.

Also, fix a longstanding error where --dump-jsconsolelog-in-stderr
could get inserted immediately after --pixel-test, causing the test runner
to consume it as the expected image hash! And leave a comment so nobody
else has to debug this again...

  • TestRunnerShared/TestCommand.cpp:

(WTR::parseInputLine):

  • TestRunnerShared/TestCommand.h:
  • TestRunnerShared/TestFeatures.cpp:

(WTR::parseTestHeaderString):
(WTR::parseTestHeader):
(WTR::featureDefaultsFromComparisonTestHeader):
Factor out the parsing of the part of the test header inside the [ ],
since we use this format for the value of --self-compare-with-header as well.

  • TestRunnerShared/TestFeatures.h:
  • WebKitTestRunner/Options.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::testOptionsForTest const):
Merge the comparison header's options in to the test options before
the test's own header, so that the comparison header wins.

2:24 PM Changeset in webkit [285131] by Jonathan Bedard
  • 2 edits in trunk/Tools

webkitpy: Remove obsolete port name
https://bugs.webkit.org/show_bug.cgi?id=169302
<rdar://problem/30953024>

Reviewed by Alex Christensen.

Removing a temporary workaround from r213654.

  • Scripts/webkitpy/common/config/ports.py:

(DeprecatedPort.port): Remove mapping from 'ios' to 'ios-device.'

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

[macOS] Opening local html files is failing
https://bugs.webkit.org/show_bug.cgi?id=232572
<rdar://81330442>

Reviewed by Brent Fulgham.

Source/WebKit:

On some macOS versions, opening local html files is failing. In order for the WebContent process
to successfully issue the file extension to the Networking process, the flags for the extension
in the WebContent process must include the user intent flag when the extension is issued with an
audit token.

  • Shared/Cocoa/SandboxExtensionCocoa.mm:

(WebKit::SandboxExtensionImpl::sandboxExtensionForType):

Source/WTF:

Declare sandbox flag.

  • wtf/spi/darwin/SandboxSPI.h:
1:54 PM Changeset in webkit [285129] by Beth Dakin
  • 2 edits in trunk

Add my GitHub name to contributors.json
https://bugs.webkit.org/show_bug.cgi?id=232495

Reviewed by Alexey Proskuryakov.

  • metadata/contributors.json:
1:33 PM Changeset in webkit [285128] by Fujii Hironori
  • 2 edits in trunk/Tools

TestWTF.WTF_CompactUniquePtrTuple.Subclassing is randomly failing on WinCairo tester bots
https://bugs.webkit.org/show_bug.cgi?id=232556

Reviewed by Yusuke Suzuki.

"EXPECT_NE(oldPointer, a.pointer())" of line 241 was randomly
failing on WinCairo tester bots. This seems a simple mistake of
the test case. 'oldPointer' should be updated before destructing
the old value.

  • TestWebKitAPI/Tests/WTF/CompactUniquePtrTuple.cpp:

(WTF_CompactUniquePtrTuple::Subclassing):

1:32 PM Changeset in webkit [285127] by Fujii Hironori
  • 3 edits in trunk/Source/WebKit

[WinCairo] Enable gpu_process_canvas_rendering and gpu_process_webgl by default
https://bugs.webkit.org/show_bug.cgi?id=232555

Reviewed by Don Olmstead.

They can be disabled by the registry.

reg add HKEY_CURRENT_USER\Software\WebKit /v gpu_process_canvas_rendering /t REG_DWORD /d 0 /f
reg add HKEY_CURRENT_USER\Software\WebKit /v gpu_process_webgl /t REG_DWORD /d 0 /f

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultUseGPUProcessForCanvasRenderingEnabled):
(WebKit::defaultUseGPUProcessForWebGLEnabled):

  • Shared/win/WebPreferencesDefaultValuesWin.cpp:

(WebKit::isFeatureFlagEnabled):

1:27 PM Changeset in webkit [285126] by Russell Epstein
  • 1 copy in tags/Safari-613.1.6.5

Tag Safari-613.1.6.5.

1:24 PM Changeset in webkit [285125] by Fujii Hironori
  • 3 edits in trunk/Source/WebKit

HashMap<GraphicsContextGLIdentifier, IPC::ScopedActiveMessageReceiveQueue<RemoteGraphicsContextGL>>::get can't compile
https://bugs.webkit.org/show_bug.cgi?id=232554

Reviewed by Kimmo Kinnunen.

Because IPC::ScopedActiveMessageReceiveQueue didn't have own
HashTraits, it used GenericHashTraits. So, HashMap::get tried to
return PeekType, that was ScopedActiveMessageReceiveQueue. But, it
couldn't construct ScopedActiveMessageReceiveQueue from "const
ScopedActiveMessageReceiveQueue&".

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::findRemoteGraphicsContextGL):
Use get() instead of find().

  • Platform/IPC/ScopedActiveMessageReceiveQueue.h: Added HashTraits for it.
1:16 PM Changeset in webkit [285124] by Russell Epstein
  • 8 edits in branches/safari-613.1.6-branch/Source

Versioning.

WebKit-7613.1.6.5

1:10 PM Changeset in webkit [285123] by sbarati@apple.com
  • 3 edits
    1 add in trunk

ArrayBuffer species watchpoint being invalidated doesn't mean it's not an ArrayBuffer constructor from the same global object
https://bugs.webkit.org/show_bug.cgi?id=231322
<rdar://problem/84212078>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/array-buffer-species-watchpoint-should-not-dictate-if-constructor-is-correct.js: Added.

(main.async v23):
(main):

Source/JavaScriptCore:

We were relying on the watchpoint to tell us if the Array species watchpoint
for 'constructor' is set to the right value. However, the watchpoint being
fired doesn't guarantee that it won't be the right value. For example, we
might not be able to install the watchpoint because the replacement watchpoint
may already be fired.

  • runtime/JSArrayBufferPrototype.cpp:

(JSC::arrayBufferSpeciesConstructorSlow):

1:08 PM Changeset in webkit [285122] by BJ Burg
  • 2 edits in trunk

Add bburg's GitHub username to contributors.json.

Unreviewed.

  • metadata/contributors.json:

Also, canonicalize a recent change.

12:31 PM Changeset in webkit [285121] by beidson@apple.com
  • 23 edits in trunk

webpushd: Add mock in-memory registration, and the WKWebsiteDataStore SPI to manage them
https://bugs.webkit.org/show_bug.cgi?id=232539

Reviewed by Alex Christensen.

Source/WebKit:

Covered by API test.

The old SPI to ask the client if notifications should be allowed will remain.

Assuming the client okays notifications, in the case of built-in notifications, the *actual*
registration interaction with the system will take place as an additional step in webpushd

This patch:

  • Adds in-memory notification registration for webpushd
  • Adds SPI to WKWebsiteDataStore to manage registrations
  • Tests the SPI
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deletePushAndNotificationRegistration):
(WebKit::NetworkProcess::getOriginsWithPushAndNotificationPermissions):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::notificationManager):

  • NetworkProcess/Notifications/NetworkNotificationManager.cpp:

(WebKit::NetworkNotificationManager::requestSystemNotificationPermission):
(WebKit::NetworkNotificationManager::deletePushAndNotificationRegistration):
(WebKit::NetworkNotificationManager::getOriginsWithPushAndNotificationPermissions):
(WebKit::ReplyCaller<bool>::callReply):
(WebKit::ReplyCaller<Vector<String>::callReply):

  • NetworkProcess/Notifications/NetworkNotificationManager.h:
  • Shared/API/APISecurityOrigin.h:

(API::SecurityOrigin::create):

  • Shared/Notifications/NotificationManagerMessageHandler.h:
  • Shared/Notifications/NotificationManagerMessageHandler.messages.in:
  • Shared/WebPushDaemonConstants.h:

(WebKit::WebPushD::messageTypeSendsReply):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _deletePushAndNotificationRegistration:completionHandler:]):
(-[WKWebsiteDataStore _getOriginsWithPushAndNotificationPermissions:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::deletePushAndNotificationRegistration):
(WebKit::NetworkProcessProxy::getOriginsWithPushAndNotificationPermissions):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Notifications/WebNotificationManagerMessageHandler.cpp:

(WebKit::WebNotificationManagerMessageHandler::requestSystemNotificationPermission):

  • UIProcess/Notifications/WebNotificationManagerMessageHandler.h:
  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:

(WebKit::NotificationPermissionRequestManager::startRequest):

  • webpushd/WebPushDaemon.h:
  • webpushd/WebPushDaemon.mm:

(WebPushD::MessageInfo::getOriginsWithPushAndNotificationPermissions::encodeReply):
(WebPushD::MessageInfo::deletePushAndNotificationRegistration::encodeReply):
(WebPushD::MessageInfo::requestSystemNotificationPermission::encodeReply):
(WebPushD::Daemon::decodeAndHandleMessage):
(WebPushD::Daemon::requestSystemNotificationPermission):
(WebPushD::Daemon::getOriginsWithPushAndNotificationPermissions):
(WebPushD::Daemon::deletePushAndNotificationRegistration):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:

(-[NotificationPermissionDelegate _webView:requestNotificationPermissionForSecurityOrigin:decisionHandler:]):
(-[NotificationPermissionDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TestWebKitAPI::then):

12:22 PM Changeset in webkit [285120] by Devin Rousso
  • 4 edits in trunk

[ iOS15 EWS ] TestWebKitAPI.CSSViewportUnits.SameUnobscuredSizeOverrides flaky fails on EWS
https://bugs.webkit.org/show_bug.cgi?id=232158
<rdar://problem/84555218>

Reviewed by Megan Gardner.

Source/WebCore:

Tests: CSSViewportUnits.AllSame

CSSViewportUnits.EmptyUnobscuredSizeOverrides
CSSViewportUnits.SameUnobscuredSizeOverrides
CSSViewportUnits.DifferentUnobscuredSizeOverrides

  • page/FrameView.cpp:

(WebCore::FrameView::sizeForCSSDynamicViewportUnits const):
This should use unobscuredContentRectIncludingScrollbars to match DOMWindow::inner{width,height}.
I think I accidentally left in the old code when I was testing some other configurations
while working on r284628.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm:

(TEST.CSSViewportUnits.AllSame):
(TEST.CSSViewportUnits.EmptyUnobscuredSizeOverrides):
(TEST.CSSViewportUnits.SameUnobscuredSizeOverrides):
(TEST.CSSViewportUnits.DifferentUnobscuredSizeOverrides):

12:22 PM Changeset in webkit [285119] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Start using ubidi to find bidi boundaries
https://bugs.webkit.org/show_bug.cgi?id=232552

Reviewed by Antti Koivisto.

In this patch, we start using ubidi to find the bidi boundaries in the paragraph content.
We also set the bidi levels on the associated inline item range. Later we'll be using these levels
to compute the visual order (after line breaking).
(see breakAndComputeBidiLevels for details)

  • layout/formattingContexts/inline/InlineItem.h:

(WebCore::Layout::InlineItem::setBidiLevel):

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::breakAndComputeBidiLevels):

  • layout/formattingContexts/inline/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::splitAt):

  • layout/formattingContexts/inline/InlineTextItem.h:
12:21 PM Changeset in webkit [285118] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Crash under HIDDevice::HIDDevice()
https://bugs.webkit.org/show_bug.cgi?id=232567
<rdar://79414185>

Reviewed by Simon Fraser.

Make sure we null check values returned by IOHIDDeviceGetProperty() before calling
CFNumberGetValue() on them.

  • platform/mac/HIDDevice.cpp:

(WebCore::getDevicePropertyAsInt):
(WebCore::HIDDevice::HIDDevice):

11:01 AM Changeset in webkit [285117] by rmorisset@apple.com
  • 8 edits
    5 adds in trunk

JSGenericTypedArrayView<Adaptor>::set crashes if the length + objectOffset is > UINT32_MAX
https://bugs.webkit.org/show_bug.cgi?id=231975
rdar://84402043

Reviewed by Yusuke Suzuki.

JSTests:

  • regress-84402043 is the testcase that revealed the problem.
  • typed-array-set-large(-offset) test the same function, in the typed-array to typed-array case
  • typed-array-large-slice tests the only caller that passes a non-0 objectOffset, and found other issues with it
  • typed-array-large-oob-eventually-not.js is just another test of the Wasm4GB change that I had forgotten to commit
  • stress/regress-84402043.js: Added.
  • stress/typed-array-large-oob-eventually-not.js: Added.

(test):

  • stress/typed-array-large-slice.js: Added.

(expect):

  • stress/typed-array-set-large-offset.js: Added.
  • stress/typed-array-set-large.js: Added.

Source/JavaScriptCore:

UINT_MAX (and anything above it) is not a valid array index, so we cannot use JSObject::get(JSGlobalObject*, unsigned) with an index that big.
This was pointed by Yusuke in his review of my recent patch that introduced the problem (https://bugs.webkit.org/show_bug.cgi?id=229353#c21),
but I misunderstood the code and thought we could never get values that big at that point, thus only putting a RELEASE_ASSERT.
In this patch I instead apply his original suggestion to have a first loop using the (fast) JSObject::get(),
and a second loop for any large indices, using a slower but safe code path.

I also fixed an unrelated bug I noticed in Clobberize/AbstractInterpreter while testing the rest of the patch:
they were not aware that NewTypedArray can take a Int52RepUse child.

Finally, while trying to properly test this change, I discovered that genericTypedArrayViewProtoFuncSlice
(which is the only caller of JSGenericTypedArrayView<Adaptor>::set which passes it a non-0 objectOffset)
was still using unsigned everywhere instead of size_t, and that the same was true of all other functions in the same file.
So I fixed it in the same patch.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • runtime/JSArrayBufferConstructor.cpp:

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

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::constructGenericTypedArrayViewImpl):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::set):

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::argumentClampedIndexFromStartOrEnd):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncCopyWithin):
(JSC::genericTypedArrayViewProtoFuncIncludes):
(JSC::genericTypedArrayViewProtoFuncIndexOf):
(JSC::genericTypedArrayViewProtoFuncJoin):
(JSC::genericTypedArrayViewProtoFuncFill):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):

10:50 AM Changeset in webkit [285116] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

GPU process WebKit logging is not initialised
https://bugs.webkit.org/show_bug.cgi?id=232563

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-11-01
Reviewed by Chris Dumez.

The file was not including LogInitialization.h.
"using namespace WebCore" caused
WebKit::logChannels() to mean WebCore::logChannels().

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

10:45 AM Changeset in webkit [285115] by sihui_liu@apple.com
  • 7 edits in trunk/Source/WebKit

Increase responsiveness timeout for network process
https://bugs.webkit.org/show_bug.cgi?id=232505

Reviewed by Chris Dumez.

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::AuxiliaryProcessProxy):

  • UIProcess/AuxiliaryProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::NetworkProcessProxy):
(WebKit::NetworkProcessProxy::getNetworkProcessConnection):

  • UIProcess/ResponsivenessTimer.cpp:

(WebKit::ResponsivenessTimer::ResponsivenessTimer):
(WebKit::ResponsivenessTimer::timerFired):
(WebKit::ResponsivenessTimer::start):
(): Deleted.

  • UIProcess/ResponsivenessTimer.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::getNetworkProcessConnection):

10:14 AM Changeset in webkit [285114] by timothy_horton@apple.com
  • 10 edits in trunk/Source

Add a testing preference to replay CG display lists manually
https://bugs.webkit.org/show_bug.cgi?id=232566

Reviewed by Wenson Hsieh.

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):

  • Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:

(WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:

(WebKit::RemoteLayerTreeHost::replayCGDisplayListsIntoBackingStore const):
Plumb the preference through to _setWKContents.

  • UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.h:
  • UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.mm:

(-[WKCompositingLayer _setWKContents:withDisplayList:replayForTesting:]):
(-[WKCompositingLayer drawInContext:]):
(-[WKCompositingLayer _setWKContents:withDisplayList:]): Deleted.
If the preference is set, store the display list instead of setting it on the layer,
and call setNeedsDisplay, and then replay the display list in drawInContext.

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:
10:12 AM Changeset in webkit [285113] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS Debug ] http/wpt/push-api tests are flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=232570

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:04 AM Changeset in webkit [285112] by Chris Dumez
  • 8 edits in trunk

Align XSLTProcessor with Blink and get closer to Gecko in the process
https://bugs.webkit.org/show_bug.cgi?id=232485

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

  • web-platform-tests/dom/idlharness.window-expected.txt:

Source/WebCore:

Align XSLTProcessor with Blink and get closer to Gecko (and the specification [1]) in the process.
The changes include making the parameters mandatory and non-nullable, as well as treating null
as the empty string for some parameters.

[1] https://dom.spec.whatwg.org/#xsltprocessor

No new tests, rebaselined existing test.

  • xml/XSLTProcessor.cpp:

(WebCore::XSLTProcessor::transformToDocument):
(WebCore::XSLTProcessor::transformToFragment):

  • xml/XSLTProcessor.h:

(WebCore::XSLTProcessor::importStylesheet):

  • xml/XSLTProcessor.idl:
9:43 AM Changeset in webkit [285111] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS ] fast/events/ios/viewport-device-width-allows-double-tap-zoom-out.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=232568

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
9:27 AM Changeset in webkit [285110] by Ayumi Kojima
  • 5 edits in trunk/Source

Unreviewed, reverting r285055.

Reverting because this commit may have caused
webgl/1.0.x/conformance/textures/misc/texture-corner-case-
videos.html and webgl/2.0.y/conformance/textures/misc/texture-
corner-case-videos.html to time out

Reverted changeset:

"Avoid sending video data to Web process for
canvas.drawImage(video)"
https://bugs.webkit.org/show_bug.cgi?id=230766
https://commits.webkit.org/r285055

9:23 AM Changeset in webkit [285109] by Simon Fraser
  • 7 edits in trunk/Tools

ImageDiff no longer needs a --tolerance argument, and fix sometimes-black diff images
https://bugs.webkit.org/show_bug.cgi?id=232522

Reviewed by Martin Robinson.

ImageDiff no longer deals with tolerance, so remove --tolerance handling code in ImageDiff
and the driving script.

Also fix an issue where the diff image could be all black pixels even when there was a diff;
we need to ensure that a pixel with any diff is non-zero before scaling, and we need to
ensure that scaling by legacyDistanceMax doesn't overflow.

  • ImageDiff/ImageDiff.cpp:

(processImages):
(main):

  • ImageDiff/PlatformImage.cpp:

(ImageDiff::PlatformImage::difference):

  • ImageDiff/PlatformImage.h:
  • ImageDiff/cg/PlatformImageCG.cpp:

(ImageDiff::PlatformImage::createFromFile):

  • Scripts/webkitpy/port/image_diff.py:

(ImageDiffer.diff_image):
(ImageDiffer._start): No need to restart ImageDiff if the tolerance changed, since
ImageDiff doesn't consult it. Tolerance in the python here just feeds into
the ImageDiffResult.

  • Scripts/webkitpy/port/port_testcase.py:

(PortTestCase.test_diff_image):

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

Addressing post-commit comment (r285093).

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::handleInlineBoxStart):
(WebCore::Layout::InlineItemsBuilder::handleInlineBoxEnd):

8:58 AM Changeset in webkit [285107] by Russell Epstein
  • 8 edits in trunk/Source

Versioning.

WebKit-7613.1.8

8:55 AM Changeset in webkit [285106] by Chris Dumez
  • 3 edits in trunk/LayoutTests

REGRESSION (r283935): fast/css/style-element-process-crash.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=232456
<rdar://problem/84779240>

Reviewed by Wenson Hsieh.

After r283935, focus may happen asynchronously when using autofocus. As a result, we need to
update the test to use waitUntilDone() / notifyDone().

  • fast/css/style-element-process-crash.html:
  • platform/ios-wk2/TestExpectations:
8:52 AM Changeset in webkit [285105] by Russell Epstein
  • 1 copy in branches/safari-613.1.7-branch

New branch.

8:40 AM Changeset in webkit [285104] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Introduce paragraph content building to InlineItemsBuilder::handleTextContent
https://bugs.webkit.org/show_bug.cgi?id=232546

Reviewed by Antti Koivisto.

Let's check for directional control characters in text content and build
the paragraph content accordingly. Now that we've got both the inline box and
the text bidi content (atomic inline level boxes are still missing) breakInlineItemsAtBidiBoundaries
can start calling into ubidi to find content boundaries.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::handleTextContent):
(WebCore::Layout::InlineItemsBuilder::enterBidiContext):
(WebCore::Layout::InlineItemsBuilder::buildPreviousTextContent):

  • layout/formattingContexts/inline/InlineItemsBuilder.h:
  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFontAndText):

7:11 AM Changeset in webkit [285103] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Fix a typo in EWS emails

6:17 AM Changeset in webkit [285102] by ddkilzer@apple.com
  • 4 edits in trunk/Source/ThirdParty/ANGLE

[ANGLE] Enable -Wformat=2 warnings
<https://webkit.org/b/232358>
<rdar://problem/84568935>

Reviewed by Kimmo Kinnunen.

  • Configurations/Base.xcconfig:

(WARNING_CFLAGS):

  • Add -Wformat=2 switch, which includes -Wformat-nonliteral.
  • src/common/angleutils.h:

(FormatStringIntoVector):

  • Move below definition of ANGLE_FORMAT_PRINTF() and add macro to the function declaration to fix -Wformat-nonliteral warning.
  • src/compiler/translator/Common.h:

(sh::str):

  • Make formatStr a constexpr to fix -Wformat-nonliteral warning.
1:42 AM Changeset in webkit [285101] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Fix build with GCC 8.4 on Ubuntu 18.04
https://bugs.webkit.org/show_bug.cgi?id=232305

Patch by Daniel Kolesa <Daniel Kolesa> on 2021-11-01
Reviewed by Adrian Perez de Castro.

Source/WebCore:

Fix build with GCC 8.4 on Ubuntu 18.04

Thes sections of the code trigger an internal compiler error with
GCC 8.4, segfaulting the compiler. This adds a workaround that
makes it work again.

  • Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:

(WebCore::ClipboardItemBindingsDataSource::collectDataForWriting):

Source/WebKit:

Thes sections of the code trigger an internal compiler error with
GCC 8.4, segfaulting the compiler. This adds a workaround that
makes it work again.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):

Oct 31, 2021:

11:20 PM Changeset in webkit [285100] by Antti Koivisto
  • 4 edits in trunk

Fix :host invalidation when combined with pseudo classes in descendant position
https://bugs.webkit.org/show_bug.cgi?id=232544

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-scoping/host-functional-descendant-invalidation-expected.txt:

Source/WebCore:

  • style/RuleSet.cpp:

(WebCore::Style::isHostSelectorMatchingInShadowTree):

Make more readable and accurate.

(WebCore::Style::RuleSet::addRule):

Compute m_hasHostPseudoClassRulesMatchingInShadowTree before bailing out for pseudo elements.

5:56 PM Changeset in webkit [285099] by Fujii Hironori
  • 25 edits
    12 copies
    18 adds in trunk

[WinCairo] New GraphicsLayer for GPU process mode
https://bugs.webkit.org/show_bug.cgi?id=228308

Reviewed by Don Olmstead.

.:

  • Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

  • PlatformWinCairo.cmake:
  • platform/graphics/RemoteGraphicsContextGLProxyBase.cpp:
  • platform/graphics/RemoteGraphicsContextGLProxyBase.h:
  • platform/graphics/wc/RemoteGraphicsContextGLProxyBaseWC.cpp: Added.

(WebCore::RemoteGraphicsContextGLProxyBase::platformInitialize):
(WebCore::RemoteGraphicsContextGLProxyBase::platformLayer const):
(WebCore::RemoteGraphicsContextGLProxyBase::setPlatformLayer):

  • platform/graphics/wc/WCPlatformLayer.h: Added.
  • platform/graphics/win/GraphicsContextWin.cpp:

(WebCore::GraphicsContext::getWindowsContext): DisplayList
GraphicsContext doesn't have a HDC. Do nothing for DisplayList
context.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::paintCurrentFrame):
Paint a frame by using GraphicsContext::drawNativeImage instead of
Cairo API for DisplayList.

Source/WebKit:

Added a new GraphicsLayer implementation GraphicsLayerWC which
transfers GraphicsLayer tree to GPU process and runs the
compositor (TextureMapper) in GPU process.

In GPU process mode, WebGL is run in GPU process. So, the
compositor should be run in GPU process. Otherwise, the output
texture of WebGL has to be transferred from GPU process to the
compositor process (UI process or web process).

Because ANGLE isn't thread-safe, the compositor and WebGL should
be run in the same thread in GPU process.

Enabling gpu_process_webgl also enables GPU process compositing now.

reg add HKEY_CURRENT_USER\Software\WebKit /v gpu_process_webgl /t REG_DWORD /d 1 /f

gpu_process_canvas_rendering can also be enabled.

reg add HKEY_CURRENT_USER\Software\WebKit /v gpu_process_canvas_rendering /t REG_DWORD /d 1 /f

Enabling gpu_process_dom_rendering is still experimental.

reg add HKEY_CURRENT_USER\Software\WebKit /v gpu_process_dom_rendering /t REG_DWORD /d 1 /f

The following commands restore the non-GPU process mode.

reg delete HKEY_CURRENT_USER\Software\WebKit /v gpu_process_canvas_rendering /f
reg delete HKEY_CURRENT_USER\Software\WebKit /v gpu_process_webgl /f
reg delete HKEY_CURRENT_USER\Software\WebKit /v gpu_process_dom_rendering /f

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::createWCLayerTreeHost):
(WebKit::GPUConnectionToWebProcess::releaseWCLayerTreeHost):
(WebKit::GPUConnectionToWebProcess::findRemoteGraphicsContextGL):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/GPUProcess.h:

(WebKit::GPUProcess::sharedSceneContext):

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:

(WebKit::RemoteGraphicsContextGL::platformLayer const):

  • GPUProcess/graphics/ScopedWebGLRenderingResourcesRequest.cpp:

(WebKit::ScopedWebGLRenderingResourcesRequest::scheduleFreeWebGLRenderingResources):

  • GPUProcess/graphics/wc/RemoteWCLayerTreeHost.cpp: Added.

(WebKit::RemoteWCLayerTreeHost::create):
(WebKit::RemoteWCLayerTreeHost::RemoteWCLayerTreeHost):
(WebKit::RemoteWCLayerTreeHost::~RemoteWCLayerTreeHost):
(WebKit::RemoteWCLayerTreeHost::messageSenderConnection const):
(WebKit::RemoteWCLayerTreeHost::messageSenderDestinationID const):
(WebKit::RemoteWCLayerTreeHost::update):

  • GPUProcess/graphics/wc/RemoteWCLayerTreeHost.h: Added.
  • GPUProcess/graphics/wc/RemoteWCLayerTreeHost.messages.in: Added.
  • GPUProcess/graphics/wc/WCScene.cpp: Added.

(WebKit::WCScene::initialize):
(WebKit::WCScene::~WCScene):
(WebKit::WCScene::update):

  • GPUProcess/graphics/wc/WCScene.h: Added.
  • GPUProcess/graphics/wc/WCSceneContext.cpp: Added.

(WebKit::WCSceneContext::WCSceneContext):
(WebKit::WCSceneContext::makeContextCurrent):
(WebKit::WCSceneContext::createTextureMapper):
(WebKit::WCSceneContext::swapBuffers):

  • GPUProcess/graphics/wc/WCSceneContext.h: Added.
  • GPUProcess/graphics/wc/WCSharedSceneContextHolder.h: Added.

(WebKit::WCSharedSceneContextHolder::ensureHolderForWindow):
(WebKit::WCSharedSceneContextHolder::removeHolder):

  • GPUProcess/win/GPUProcessMainWin.cpp:

(WebKit::GPUProcessMain):

  • PlatformWin.cmake:
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):
(conditions_for_header):

  • Shared/DrawingAreaInfo.h:
  • UIProcess/wc/DrawingAreaProxyWC.cpp: Added.

(WebKit::DrawingAreaProxyWC::DrawingAreaProxyWC):
(WebKit::DrawingAreaProxyWC::paint):
(WebKit::DrawingAreaProxyWC::sizeDidChange):
(WebKit::DrawingAreaProxyWC::update):
(WebKit::DrawingAreaProxyWC::enterAcceleratedCompositingMode):
(WebKit::DrawingAreaProxyWC::incorporateUpdate):
(WebKit::DrawingAreaProxyWC::discardBackingStore):

  • UIProcess/wc/DrawingAreaProxyWC.h: Added.
  • UIProcess/win/PageClientImpl.cpp:

(WebKit::PageClientImpl::createDrawingAreaProxy):

  • UIProcess/win/WebView.cpp:

(WebKit::WebView::paint):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::RemoteGraphicsContextGLProxy):

  • WebProcess/GPU/graphics/wc/RemoteWCLayerTreeHostProxy.cpp: Added.

(WebKit::RemoteWCLayerTreeHostProxy::RemoteWCLayerTreeHostProxy):
(WebKit::RemoteWCLayerTreeHostProxy::~RemoteWCLayerTreeHostProxy):
(WebKit::RemoteWCLayerTreeHostProxy::messageSenderConnection const):
(WebKit::RemoteWCLayerTreeHostProxy::ensureGPUProcessConnection):
(WebKit::RemoteWCLayerTreeHostProxy::disconnectGpuProcessIfNeeded):
(WebKit::RemoteWCLayerTreeHostProxy::gpuProcessConnectionDidClose):
(WebKit::RemoteWCLayerTreeHostProxy::messageSenderDestinationID const):
(WebKit::RemoteWCLayerTreeHostProxy::update):
(WebKit::RemoteWCLayerTreeHostProxy::didUpdate):

  • WebProcess/GPU/graphics/wc/RemoteWCLayerTreeHostProxy.h: Added.

(WebKit::RemoteWCLayerTreeHostProxy::wcLayerTreeHostIdentifier const):

  • WebProcess/GPU/graphics/wc/RemoteWCLayerTreeHostProxy.messages.in: Added.
  • WebProcess/GPU/graphics/wc/WCLayerTreeHostIdentifier.h: Added.
  • WebProcess/GPU/graphics/wc/WCPlatformLayerGCGL.h: Added.

(WebKit::WCPlatformLayerGCGL::WCPlatformLayerGCGL):
(WebKit::WCPlatformLayerGCGL::graphicsContextGLIdentifier):

  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::create):
(WebKit::DrawingArea::supportsGPUProcessRendering):

  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::updateGeometry):

  • WebProcess/WebPage/DrawingArea.messages.in:
  • WebProcess/WebPage/wc/DrawingAreaWC.cpp: Added.

(WebKit::DrawingAreaWC::DrawingAreaWC):
(WebKit::DrawingAreaWC::~DrawingAreaWC):
(WebKit::DrawingAreaWC::graphicsLayerFactory):
(WebKit::DrawingAreaWC::updateRootLayers):
(WebKit::DrawingAreaWC::setRootCompositingLayer):
(WebKit::DrawingAreaWC::attachViewOverlayGraphicsLayer):
(WebKit::DrawingAreaWC::setLayerTreeStateIsFrozen):
(WebKit::DrawingAreaWC::updateGeometry):
(WebKit::DrawingAreaWC::setNeedsDisplay):
(WebKit::DrawingAreaWC::setNeedsDisplayInRect):
(WebKit::DrawingAreaWC::scroll):
(WebKit::DrawingAreaWC::triggerRenderingUpdate):
(WebKit::flushLayerImageBuffers):
(WebKit::DrawingAreaWC::isCompositingMode):
(WebKit::DrawingAreaWC::updateRendering):
(WebKit::DrawingAreaWC::sendUpdateAC):
(WebKit::shouldPaintBoundsRect):
(WebKit::DrawingAreaWC::sendUpdateNonAC):
(WebKit::DrawingAreaWC::graphicsLayerAdded):
(WebKit::DrawingAreaWC::graphicsLayerRemoved):
(WebKit::DrawingAreaWC::commitLayerUpateInfo):
(WebKit::DrawingAreaWC::createImageBuffer):
(WebKit::DrawingAreaWC::didUpdate):
(WebKit::DrawingAreaWC::RootLayerClient::RootLayerClient):
(WebKit::DrawingAreaWC::RootLayerClient::paintContents):
(WebKit::DrawingAreaWC::RootLayerClient::deviceScaleFactor const):

  • WebProcess/WebPage/wc/DrawingAreaWC.h: Added.
  • WebProcess/WebPage/wc/GraphicsLayerWC.cpp: Added.

(WebKit::GraphicsLayerWC::GraphicsLayerWC):
(WebKit::GraphicsLayerWC::~GraphicsLayerWC):
(WebKit::GraphicsLayerWC::generateLayerID):
(WebKit::GraphicsLayerWC::primaryLayerID const):
(WebKit::GraphicsLayerWC::setNeedsDisplay):
(WebKit::GraphicsLayerWC::setNeedsDisplayInRect):
(WebKit::GraphicsLayerWC::setContentsNeedsDisplay):
(WebKit::GraphicsLayerWC::setChildren):
(WebKit::GraphicsLayerWC::addChild):
(WebKit::GraphicsLayerWC::addChildAtIndex):
(WebKit::GraphicsLayerWC::addChildBelow):
(WebKit::GraphicsLayerWC::addChildAbove):
(WebKit::GraphicsLayerWC::replaceChild):
(WebKit::GraphicsLayerWC::removeFromParent):
(WebKit::GraphicsLayerWC::setMaskLayer):
(WebKit::GraphicsLayerWC::setReplicatedLayer):
(WebKit::GraphicsLayerWC::setReplicatedByLayer):
(WebKit::GraphicsLayerWC::setPosition):
(WebKit::GraphicsLayerWC::setAnchorPoint):
(WebKit::GraphicsLayerWC::setSize):
(WebKit::GraphicsLayerWC::setBoundsOrigin):
(WebKit::GraphicsLayerWC::setTransform):
(WebKit::GraphicsLayerWC::setChildrenTransform):
(WebKit::GraphicsLayerWC::setPreserves3D):
(WebKit::GraphicsLayerWC::setMasksToBounds):
(WebKit::GraphicsLayerWC::setOpacity):
(WebKit::GraphicsLayerWC::setContentsRect):
(WebKit::GraphicsLayerWC::setContentsClippingRect):
(WebKit::GraphicsLayerWC::setDrawsContent):
(WebKit::GraphicsLayerWC::setContentsVisible):
(WebKit::GraphicsLayerWC::setBackfaceVisibility):
(WebKit::GraphicsLayerWC::setContentsToSolidColor):
(WebKit::GraphicsLayerWC::setContentsToPlatformLayer):
(WebKit::GraphicsLayerWC::usesContentsLayer const):
(WebKit::GraphicsLayerWC::setShowDebugBorder):
(WebKit::GraphicsLayerWC::setDebugBorder):
(WebKit::GraphicsLayerWC::setShowRepaintCounter):
(WebKit::filtersCanBeComposited):
(WebKit::GraphicsLayerWC::setFilters):
(WebKit::GraphicsLayerWC::setBackdropFilters):
(WebKit::GraphicsLayerWC::setBackdropFiltersRect):
(WebKit::GraphicsLayerWC::noteLayerPropertyChanged):
(WebKit::GraphicsLayerWC::flushCompositingState):
(WebKit::GraphicsLayerWC::flushCompositingStateForThisLayerOnly):

  • WebProcess/WebPage/wc/GraphicsLayerWC.h: Added.
  • WebProcess/WebPage/wc/WCBackingStore.h: Added.

(WebKit::WCBackingStore::WCBackingStore):
(WebKit::WCBackingStore::imageBuffer):
(WebKit::WCBackingStore::setImageBuffer):
(WebKit::WCBackingStore::bitmap const):
(WebKit::WCBackingStore::encode const):
(WebKit::WCBackingStore::decode):

  • WebProcess/WebPage/wc/WCLayerFactory.cpp: Added.

(WebKit::WCLayerFactory::WCLayerFactory):
(WebKit::WCLayerFactory::createGraphicsLayer):

  • WebProcess/WebPage/wc/WCLayerFactory.h: Added.
  • WebProcess/WebPage/wc/WCUpateInfo.h: Added.

(WebKit::WCLayerUpateInfo::encode const):
(WebKit::WCLayerUpateInfo::decode):
(WebKit::WCUpateInfo::encode const):
(WebKit::WCUpateInfo::decode):

2:40 PM Changeset in webkit [285098] by Cameron McCormack
  • 14 edits in trunk/Source

Update Web IDL links to new URL
https://bugs.webkit.org/show_bug.cgi?id=232533
<rdar://problem/84842937>

Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

Source/WebCore:

  • Modules/mediastream/OverconstrainedError.idl:
  • bindings/js/JSCallbackData.cpp:
  • bindings/js/JSDOMAbstractOperations.h:
  • bindings/js/JSDOMConvertPromise.h:
  • bindings/scripts/CodeGenerator.pm:
  • bindings/scripts/CodeGeneratorJS.pm:

(AddMapLikeAttributesAndOperationIfNeeded):
(AddSetLikeAttributesAndOperationIfNeeded):
(GenerateGetOwnPropertySlot):
(GenerateGetOwnPropertySlotByIndex):
(GenerateDeletePropertyCommon):
(GenerateDeleteProperty):
(GenerateDeletePropertyByIndex):
(GenerateNamedDeleterDefinition):
(AttributeShouldBeOnInstance):
(OperationShouldBeOnInstance):
(GenerateDictionaryImplementationContent):
(GenerateAttributeSetterBodyDefinition):
(GenerateOperationBodyDefinition):
(GenerateDefaultToJSONOperationDefinition):
(GenerateConstructorHelperMethods):

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/IDLParser.pm:
  • bindings/scripts/preprocess-idls.pl:
  • dom/ExceptionCode.h:
1:31 PM Changeset in webkit [285097] by Fujii Hironori
  • 5 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo/TestExpectations:
  • platform/wincairo/editing/selection/3690703-2-expected.txt:
  • platform/wincairo/editing/selection/3690703-expected.txt:
  • platform/wincairo/editing/selection/3690719-expected.txt:
11:20 AM Changeset in webkit [285096] by mmaxfield@apple.com
  • 1 edit
    1 delete in trunk/Source/WebCore

Remove some straggling files after r280467
https://bugs.webkit.org/show_bug.cgi?id=232541

Reviewed by Sam Weinig.

Somehow I must have missed some files.

No new tests because there is no behavior change.

  • Modules/webgpu/WHLSL/AST/WHLSLStatement.cpp: Removed.
  • Modules/webgpu/WHLSL/AST/WHLSLStatementList.h: Removed.
  • Modules/webgpu/WHLSL/AST/WHLSLType.cpp: Removed.
  • Modules/webgpu/WHLSL/WHLSLProgram.cpp: Removed.
10:26 AM Changeset in webkit [285095] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Keep track of the text box offset in ubidi's paragraph content
https://bugs.webkit.org/show_bug.cgi?id=232540

Reviewed by Antti Koivisto.

This hashmap helps to map bidi boundary positions back to inline items.

The paragraph content string holds the InlineTextBox content (and injected control characters)
in DOM order. InlineTextItems hold start/end positions relative to their InlineTextBoxes.
We'll use this hashmap to figure out which InlineTextItems need splitting at bidi boundaries.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::handleInlineBox):
(WebCore::Layout::InlineItemsBuilder::enterBidiContext):
(WebCore::Layout::InlineItemsBuilder::exitBidiContext):

  • layout/formattingContexts/inline/InlineItemsBuilder.h:
8:18 AM Changeset in webkit [285094] by Simon Fraser
  • 21 edits in trunk/Source

Scroll animations should run at 120Hz on 120Hz displays
https://bugs.webkit.org/show_bug.cgi?id=232534

Reviewed by Tim Horton.

Source/WebCore:

Scroll animations on the scrolling thread were driven by a 60Hz timer in
ScrollingTreeScrollingNodeDelegateMac. Replace that with a mechanism that drives them from
ThreadedScrollingTree::displayDidRefreshOnScrollingThread(), which is called at the maximum
display refresh frequency.

We leverage startAnimationCallback/stopAnimationCallback which update the HashSet of
animating nodes on scrolling tree, and iterate this set in the callback to service the
animations.

Change some ScrollingTree terminology from "AnimatedScroll" to "ScrollAnimation" to indicate
that they are about all kinds of scroll animations (e.g. rubberbanding), not just animated
scrolls.

A side effect of removing the ScrollingTreeScrollingNodeDelegateMac was that there was no
code path that triggered continual "displayDidRefresh" notifications (which originate in the
UI process). We need something to keep the displayDidRefresh notifications coming. To fix
this, have ScrollingCoordinatorMac call scheduleRenderingUpdate() when an animation starts,
and in each rendering update while there are active animations. This doesn't trigger
additional rendering updates; these will happen anyway as a side effect of scrolling tree
scrolls bouncing to the main thread. Also worth noting is that the scrolling thread will get
120Hz updates, even if we're only triggering main thread rendering updates, because of
existing WebPageProxy hasActiveAnimatedScroll state.

Exercised by existing tests.

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::isScrollAnimationInProgressForNode):
(WebCore::ScrollingTree::setScrollAnimationInProgressForNode):
(WebCore::ScrollingTree::hasNodeWithActiveScrollAnimations):
(WebCore::ScrollingTree::nodesWithActiveScrollAnimations):
(WebCore::ScrollingTree::isAnimatedScrollInProgressForNode): Deleted.
(WebCore::ScrollingTree::setAnimatedScrollInProgressForNode): Deleted.
(WebCore::ScrollingTree::hasNodeWithActiveAnimatedScroll): Deleted.

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::willStartAnimatedScroll):
(WebCore::ScrollingTreeScrollingNode::didStopAnimatedScroll):
(WebCore::ScrollingTreeScrollingNode::setScrollAnimationInProgress):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/ScrollingTreeScrollingNodeDelegate.h:
  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::scrollingThreadIsActive):
(WebCore::ThreadedScrollingTree::serviceScrollAnimations):
(WebCore::ThreadedScrollingTree::displayDidRefreshOnScrollingThread):

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

(WebCore::ScrollingCoordinatorMac::didCompleteRenderingUpdate):
(WebCore::ScrollingCoordinatorMac::hasNodeWithAnimatedScrollChanged):

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::startAnimatedScrollToPosition):
(WebCore::ScrollingTreeFrameScrollingNodeMac::serviceScrollAnimation):
(WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged):

  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:

(WebCore::ScrollingTreeOverflowScrollingNodeMac::serviceScrollAnimation):

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::createTimer):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::startAnimationCallback):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::stopAnimationCallback):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::serviceScrollAnimation):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::scrollControllerAnimationTimerFired): Deleted.

  • page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.cpp:

(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::animationTimerFired):
(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::serviceScrollAnimation):

  • page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.h:

Source/WebKit:

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationScrollingCoordinator.mm:

(WebKit::TiledCoreAnimationScrollingCoordinator::hasNodeWithAnimatedScrollChanged):

7:25 AM Changeset in webkit [285093] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Add unicode-bidi control characters
https://bugs.webkit.org/show_bug.cgi?id=232538

Reviewed by Antti Koivisto.

This is preparation for injecting entering/exiting control characters into the paragraph string used by ubidi.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::handleInlineBox):
(WebCore::Layout::InlineItemsBuilder::enterBidiContext):
(WebCore::Layout::InlineItemsBuilder::exitBidiContext):

  • layout/formattingContexts/inline/InlineItemsBuilder.h:
6:41 AM Changeset in webkit [285092] by Andres Gonzalez
  • 15 edits in trunk/Source/WebCore

Move handling of ChildrenChanged notifications out of the AccessibilityObjects into AXObjectCache.
https://bugs.webkit.org/show_bug.cgi?id=232503
<rdar://problem/84820154>

Reviewed by Chris Fleizach.

ChildrenChanged notifications were handled in
AXObjectCache::performDeferredCacheUpdate by calling into an AX object
method. While in principle this may seem as a good design, it obscures
significantly what exactly happens in response to a notification. This
is aggravated by the fact that the object's handlers may call back into
the AXObjectCache to post or further defer notifications to platform
clients.
This patch atempts to straightline this flow by handling the
ChildrenChanged notifications in AXObjectCache.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::textChanged):
(WebCore::AXObjectCache::handleChildrenChanged):
The name indicates that this is the actual handler for the notification
as opposed as the other childrenChanged(...) methods that just queue
the notifications for a later time.

(WebCore::AXObjectCache::childrenChanged):
(WebCore::AXObjectCache::notificationPostTimerFired):
(WebCore::AXObjectCache::handleAriaRoleChanged):
(WebCore::AXObjectCache::recomputeIsIgnored):
(WebCore::AXObjectCache::performDeferredCacheUpdate):

  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityMenuList.cpp:

(WebCore::AccessibilityMenuList::childrenChanged):
Deleted, now handled in AXObjectCache::handleChildrenChanged.

  • accessibility/AccessibilityMenuList.h:
  • accessibility/AccessibilityMenuListPopup.cpp:

(WebCore::AccessibilityMenuListPopup::handleChildrenChanged):
(WebCore::AccessibilityMenuListPopup::childrenChanged):
Renamed handleChildrenChanged. It is the only AXObject subclass that
still has this method to update its children. It does not post or
schedule any platform client notification.

  • accessibility/AccessibilityMenuListPopup.h:
  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::updateAccessibilityRole):
(WebCore::AccessibilityNodeObject::childrenChanged): Deleted.

  • accessibility/AccessibilityNodeObject.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::hasIgnoredValueChanged):
(WebCore::AccessibilityObject::notifyIfIgnoredValueChanged):
Renamed hasIgnoredValueChanged since the actual notifications are posted
in AXObjectCache.

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::updateAccessibilityRole):

  • accessibility/AccessibilityObjectInterface.h:

Several methods can now be removed from the AXCoreObject interface since
they are internal to the AXObject class hierarchy.

  • accessibility/AccessibilityTable.cpp:

(WebCore::AccessibilityTable::addChildren):

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

Now able to delete several unnecessary methods from the isolated objects.
(WebCore::AXIsolatedObject::childrenChanged): Deleted.
(WebCore::AXIsolatedObject::updateAccessibilityRole): Deleted.
(WebCore::AXIsolatedObject::lastKnownIsIgnoredValue): Deleted.
(WebCore::AXIsolatedObject::setLastKnownIsIgnoredValue): Deleted.
(WebCore::AXIsolatedObject::notifyIfIgnoredValueChanged): Deleted.

  • accessibility/isolatedtree/AXIsolatedObject.h:
1:49 AM Changeset in webkit [285091] by Cameron McCormack
  • 2 edits in trunk/Source/WebCore

Change some bitwise OR operators to logical OR
https://bugs.webkit.org/show_bug.cgi?id=232537
<rdar://problem/84845378>

Reviewed by Alexey Proskuryakov.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::translate):
(WebCore::CanvasRenderingContext2DBase::transform):
(WebCore::CanvasRenderingContext2DBase::setTransform):
(WebCore::validateRectForCanvas):
(WebCore::CanvasRenderingContext2DBase::canDrawText):

Oct 30, 2021:

8:22 PM Changeset in webkit [285090] by mmaxfield@apple.com
  • 9 edits in trunk/Source

Migrate the first few callers from ImageBuffer::truncatedLogicalSize() to ImageBuffer::logicalSize()
https://bugs.webkit.org/show_bug.cgi?id=232528

Reviewed by Tim Horton.

Source/WebCore:

These are the callers which seem obviously correct to migrate from truncatedLogicalSize() to logicalSize(),
because these are the callers that immediately cast the result to FloatSize. That means, before this patch,
these callers are going from float -> int -> float.

This patch is the fourth step in https://bugs.webkit.org/show_bug.cgi?id=225377. There is no situation where
truncating the logical size is meaningful - we either want the float logical size, or we want the physical
number of texels in the image (which is the logical size, times the resolution, rounded up to an int size).
Eventually, we should move all callers off of truncatedLogicalSize() and on to either logicalSize() or
a yet-to-be-written physicalSize()/texelCount()/bikeshedName().

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawImageBuffer):
(WebCore::GraphicsContext::drawConsumingImageBuffer):

  • platform/graphics/displaylists/DisplayListImageBuffer.h:

(WebCore::DisplayList::ImageBuffer::ImageBuffer):

  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::platformApplySoftware):

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::platformApplySoftware):

  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::allocateBackingStoreIfNeeded):

  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::buildPattern):

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):

8:19 PM Changeset in webkit [285089] by Wenson Hsieh
  • 13 edits
    2 adds in trunk

Layer tree should not be stuck in frozen state after explicitly stopping a page load
https://bugs.webkit.org/show_bug.cgi?id=232532
rdar://84522357

Reviewed by Tim Horton.

Source/WebCore:

Add WEBCORE_EXPORT to a method. See WebKit/ChangeLog for more details.

Test: http/tests/navigation/unfreeze-layer-tree-after-stopping-load.html

  • loader/FrameLoader.h:

Source/WebKit:

From diagnostic logs gathered in rdar://84522357, it's apparently possible for the layer tree to be stuck in a
state where it's indefinitely frozen after the user explicitly stops the page load (e.g. by tapping on the "x"
button in Safari). Specifically, these logs indicate that the PageTransition layer tree freeze reason may
persist even after the user has canceled the load, leading to situations where content may be visible but
unresponsive.

From code inspection, this may happen for multiple reasons, one of which is that a media element has incremented
the load event delay count, which in turn prevents us from transitioning to completed state inside
FrameLoader::checkLoadCompleteForThisFrame(). It's unknown whether this (in particular) is the cause of
unresponsiveness observed by the reporter of rdar://84522357, but we can at least use this in order to come up
with a layout test; to mitigate all instances where the PageTransition reason may persist after the load has
been stopped, we make WebPage::stopLoading() complete the page transition (thereby lifting the freeze reason)
if needed.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::stopLoading):

Tools:

Add support for TestRunner.stopLoading(), which immediately stops the page load, emulating what would normally
happen if the user taps or clicks the "x" button to cancel loading in Safari. See the layout test for more
details.

  • DumpRenderTree/TestRunner.cpp:

(stopLoadingCallback):
(TestRunner::staticFunctions):

  • DumpRenderTree/TestRunner.h:
  • DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::stopLoading):

  • DumpRenderTree/win/TestRunnerWin.cpp:

(TestRunner::stopLoading):

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

(WTR::TestRunner::stopLoading):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:

LayoutTests:

Add a test that verifies that a requestAnimationFrame() callback fires even after stopping page load. This
test fails without the fix in this patch, since the layer tree ends up in a permanently frozen state.

  • http/tests/navigation/unfreeze-layer-tree-after-stopping-load-expected.txt: Added.
  • http/tests/navigation/unfreeze-layer-tree-after-stopping-load.html: Added.
7:37 PM Changeset in webkit [285088] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebKit

Web process shouldn't crash if ImageBuffer::ensureBackendCreated() fails
https://bugs.webkit.org/show_bug.cgi?id=232520
<rdar://problem/84829717>

Reviewed by Simon Fraser.

Guard against the possibility of it returning null.

No new tests because there shouldn't be any behavior change after https://bugs.webkit.org/show_bug.cgi?id=232470.
It's still good to do this, though, to be defensive.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::encode const):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::createImageBufferBackendHandle):

7:24 PM Changeset in webkit [285087] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

[GPU Process] Small ImageBuffers cause the web process to crash
https://bugs.webkit.org/show_bug.cgi?id=232470
<rdar://problem/84626560>

Reviewed by Tim Horton.

Source/WebKit:

The problem is when the (floating point) size < 1x1, but the size*resolution is >= 1x1.
In this situation, calculateSafeBackendSize() is correctly determining that this
isn't a zero-sized ImageBuffer, but when we go to actually pass the size to the GPU
process, we call this:

IntSize logicalSize() const override { return IntSize(m_parameters.logicalSize); }

So, the logical size gets truncated down to 0, and then the GPU process fails to allocate
the ImageBuffer, and then the web process blocks on the GPU process indefinitely, and then
eventually times out and then crashes. I'm going to deal with that last step (the crash
itself) in a secondary patch - if the web process doesn't hear from the GPU process, it
shouldn't crash.

This patch simply exposes a floatLogicalSize() function on ImageBuffer, so we can get
the full-fidelity logical size to pass that to the GPU process.

Test: compositing/device-pixel-image-buffer-hidpi.html

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createRemoteImageBuffer):

LayoutTests:

  • compositing/device-pixel-image-buffer-hidpi-expected.html: Added.
  • compositing/device-pixel-image-buffer-hidpi.html: Added.
6:24 PM Changeset in webkit [285086] by Chris Dumez
  • 7 edits in trunk

Improve error handling in sendWithAsyncReply()
https://bugs.webkit.org/show_bug.cgi?id=232508

Reviewed by Darin Adler.

Source/WebKit:

  • Platform/IPC/Connection.cpp:

(IPC::Connection::invalidate):
We stop delivering messages as soon as |m_valid| becomes false. It is
thus a good idea to cancel any pending async reply handlers as soon
as we set m_isValid to false. We were doing it correctly in connectionDidClose()
but not in invalidate(). The Connection destructor would eventually call
the async reply handlers. However, I have noticed when investigating a leak
that this may delay the calling of the reply handler for a long time if
something keeps the Connection alive (or forever in case of a leak).

  • Platform/IPC/Connection.h:

(IPC::Connection::sendWithAsyncReply):
Return early if the connection is no longer valid and call the
completion handler right away (but asynchronously). Previously,
we'd register the async reply handler and then the call to
sendMessage() would fail.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _getContentsAsStringWithCompletionHandlerKeepIPCConnectionAliveForTesting:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

Add helper SPI for API test.

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm:

(TEST):

6:18 PM Changeset in webkit [285085] by Chris Dumez
  • 4 edits in trunk

[ BigSur wk2 Debug arm64 ] webaudio/AudioBufferSource/audiobuffersource-playbackrate.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=232500
<rdar://problem/84816843>

Reviewed by Eric Carlson.

Source/WebCore:

The call to HashSet::remove() may cause a memory allocation so we need to extend the scope of the
DisableMallocRestrictionsForCurrentThreadScope to avoid assertion hits in debug builds.

No new tests, unskipped existing test.

  • Modules/webaudio/AudioSummingJunction.cpp:

(WebCore::AudioSummingJunction::removeOutput):

LayoutTests:

Unskip test that is no longer crashing.

  • platform/mac-wk2/TestExpectations:
3:58 PM Changeset in webkit [285084] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk

Selection extend() should trigger exception with no ranges
https://bugs.webkit.org/show_bug.cgi?id=232420

Patch by Brandon Stewart <Brandon> on 2021-10-30
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Verify extend() will throw an exception when the Selection object
contains no Range objects. Chrome and Firefox will also throw an
exception in this scenario.

https://w3c.github.io/selection-api/#dom-selection-extend

  • web-platform-tests/selection/extend-exception-expected.txt: Added.
  • web-platform-tests/selection/extend-exception.html: Added.

Source/WebCore:

The 'extend' method in the Selection API should throw an exception upon
being called if there are no ranges present in the Selection object.

https://w3c.github.io/selection-api/#dom-selection-extend

Test: imported/w3c/web-platform-tests/selection/extend-exception.html

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::extend):

LayoutTests:

Resolve errors in test cases introduced by new exception being thrown by extend()
when no ranges are present.

  • editing/execCommand/null_calc_primitive_value_for_css_property.html:
  • editing/execCommand/transpose-backslash-with-euc.html:
  • editing/inserting/insert-html-crash-02.html:
  • editing/selection/DOMSelection-crossing-document-expected.txt:
  • editing/selection/DOMSelection-crossing-document.html:
12:57 PM Changeset in webkit [285083] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Add bidi level to InlineDisplay::Box
https://bugs.webkit.org/show_bug.cgi?id=232531

Reviewed by Antti Koivisto.

InlineItem -> Line::Run -> InlineDisplay::Box.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::build):
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineContent):
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineSpanningInlineBoxes):

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::m_bidiLevel):
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::Run::expand):

  • layout/formattingContexts/inline/InlineLine.h:

(WebCore::Layout::Line::Run::bidiLevel const):

  • layout/formattingContexts/inline/display/InlineDisplayBox.h:

(WebCore::InlineDisplay::Box::Box):
(WebCore::InlineDisplay::Box::bidiLevel const):

  • layout/integration/InlineIteratorBoxModernPath.h:

(WebCore::InlineIterator::BoxModernPath::bidiLevel const):

  • layout/integration/LayoutIntegrationPagination.cpp:

(WebCore::LayoutIntegration::makeAdjustedContent):

10:26 AM Changeset in webkit [285082] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Add skeleton implementation for bidi content handling
https://bugs.webkit.org/show_bug.cgi?id=232524

Reviewed by Antti Koivisto.

Add dedicated functions for inline content types that need separate bidi handling (text vs. inline box vs. atomic etc).

  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::collectContentIfNeeded):

  • layout/formattingContexts/inline/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::addInlineItems):
(WebCore::Layout::InlineFormattingState::addInlineItem): Deleted.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::build):
(WebCore::Layout::InlineItemsBuilder::collectInlineItems):
(WebCore::Layout::InlineItemsBuilder::breakInlineItemsAtBidiBoundaries):
(WebCore::Layout::InlineItemsBuilder::handleTextContent):
(WebCore::Layout::InlineItemsBuilder::handleInlineBox):
(WebCore::Layout::InlineItemsBuilder::handleInlineLevelBox):
(WebCore::Layout::InlineItemsBuilder::createAndAppendTextItems): Deleted.

  • layout/formattingContexts/inline/InlineItemsBuilder.h:

(WebCore::Layout::InlineItemsBuilder::root const):
(WebCore::Layout::InlineItemsBuilder::formattingState const): Deleted.

10:09 AM Changeset in webkit [285081] by Sam Sneddon
  • 5 edits in trunk/Tools

Ensure we stop LayoutTest servers without them becoming zombies
https://bugs.webkit.org/show_bug.cgi?id=225189
<rdar://problem/77604119>

Reviewed by Jonathan Bedard.

Also increase the polling frequency in HttpServerBase._wait_for_action, as this is a major
source of delay when running run-webkit-tests --dry-run due to the number of servers we're
starting nowadays.

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

(MockProcess.init): Rename self.returncode to _returncode
(MockProcess.returncode): returncode should be None if process is still running

  • Scripts/webkitpy/layout_tests/servers/http_server.py:

(Lighttpd._spawn_process): Store Popen object
(Lighttpd._check_and_kill): Skip "kill" if process has returned
(Lighttpd._is_server_running_on_all_ports): Correctly raise ServerError if it has returned

  • Scripts/webkitpy/layout_tests/servers/http_server_base.py:

(HttpServerBase.start): Change polling frequency for cygwin from 0.1Hz to default
(HttpServerBase._wait_for_action): Increase default polling frequency to 10Hz from 1Hz

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:

(WebPlatformTestServer._stop_running_server): Poll first so we don't have zombies keeping references to pipes

9:08 AM Changeset in webkit [285080] by Kate Cheney
  • 5 edits in trunk

[iOS 15] Loads after WKWebView session restore are marked as app-initiated
https://bugs.webkit.org/show_bug.cgi?id=232486
<rdar://problem/84811692>

Reviewed by Brent Fulgham.

Source/WebKit:

Return app initiated value in the page's SessionState so it can be restored
by third party apps using the [WKWebView setInteractionState] API.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::sessionState const):

  • UIProcess/mac/LegacySessionStateCoding.cpp:

(WebKit::encodeLegacySessionState):
(WebKit::decodeLegacySessionState):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/AppPrivacyReport.mm:
6:44 AM Changeset in webkit [285079] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] InlineItem should not cross bidi level boundary
https://bugs.webkit.org/show_bug.cgi?id=232509

Reviewed by Antti Koivisto.

Every inline item has a bidi level even when the content is not considered strictly as bidi (i.e. we don't call into ubidi to figure level information).

  • layout/formattingContexts/inline/InlineItem.h:

(WebCore::Layout::InlineItem::bidiLevel const):
(WebCore::Layout::InlineItem::InlineItem):

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::createAndAppendTextItems):

  • layout/formattingContexts/inline/InlineSoftLineBreakItem.h:

(WebCore::Layout::InlineSoftLineBreakItem::createSoftLineBreakItem):
(WebCore::Layout::InlineSoftLineBreakItem::InlineSoftLineBreakItem):

  • layout/formattingContexts/inline/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::InlineTextItem):
(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):

  • layout/formattingContexts/inline/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::createWhitespaceItem):
(WebCore::Layout::InlineTextItem::createNonWhitespaceItem):
(WebCore::Layout::InlineTextItem::createEmptyItem):

Oct 29, 2021:

11:48 PM Changeset in webkit [285078] by ysuzuki@apple.com
  • 21 edits in trunk/Source/JavaScriptCore

[JSC] Having StructureStubInfo and CallLinkInfo via FixedVector for Baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=232521

Reviewed by Saam Barati.

We know # of StructureStubInfo and # of CallLinkInfo after compiling Baseline JIT code.
So when installing a code into CodeBlock, we do not need to use Bag<>. Instead we can just
use FixedVector to allocate these instances.

We keep FixedVector<StructureStubInfo> and FixedVector<CallLinkInfo> in JITData for Baseline JIT.
And moving Bag<StructureStubInfo> and Bag<CallLinkInfo> to DFG::CommonData when they are instantiated
for DFG / FTL codes.

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::CallLinkInfo): Deleted.

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::CallLinkInfo):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::setupWithUnlinkedBaselineCode):
(JSC::CodeBlock::~CodeBlock):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::finalizeJITInlineCaches):
(JSC::CodeBlock::getICStatusMap):
(JSC::CodeBlock::findStubInfo):
(JSC::CodeBlock::getCallLinkInfoForBytecodeIndex):
(JSC::CodeBlock::resetJITData):
(JSC::CodeBlock::stronglyVisitStrongReferences):
(JSC::CodeBlock::jettison):
(JSC::CodeBlock::findPC):
(JSC::CodeBlock::addOptimizingStubInfo): Deleted.
(JSC::CodeBlock::addCallLinkInfo): Deleted.

  • bytecode/CodeBlock.h:
  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::StructureStubInfo): Deleted.

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::StructureStubInfo):

  • dfg/DFGCommonData.h:

(JSC::DFG::CommonData::addCallLinkInfo):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileDeleteById):
(JSC::DFG::SpeculativeJIT::compileDeleteByVal):
(JSC::DFG::SpeculativeJIT::compileInById):
(JSC::DFG::SpeculativeJIT::compileInByVal):
(JSC::DFG::SpeculativeJIT::compileHasPrivate):
(JSC::DFG::SpeculativeJIT::compileGetPrivateNameByVal):
(JSC::DFG::SpeculativeJIT::compilePutPrivateName):
(JSC::DFG::SpeculativeJIT::compileCheckPrivateBrand):
(JSC::DFG::SpeculativeJIT::compileSetPrivateBrand):
(JSC::DFG::SpeculativeJIT::compileInstanceOfForCells):
(JSC::DFG::SpeculativeJIT::cachedPutById):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compileGetByVal):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compileGetByVal):
(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::getPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::compilePrivateBrandAccess):
(JSC::FTL::DFG::LowerDFGToB3::compilePutPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::cachedPutById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByValImpl):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileDelBy):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • jit/BaselineJITCode.h:
  • jit/JIT.cpp:

(JSC::JIT::addUnlinkedCallLinkInfo):
(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITCall.cpp:

(JSC::JIT::compileOpCall):
(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
(JSC::JITGetByIdWithThisGenerator::JITGetByIdWithThisGenerator):
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):
(JSC::JITDelByValGenerator::JITDelByValGenerator):
(JSC::JITDelByIdGenerator::JITDelByIdGenerator):
(JSC::JITInByValGenerator::JITInByValGenerator):
(JSC::JITInByIdGenerator::JITInByIdGenerator):
(JSC::JITInstanceOfGenerator::JITInstanceOfGenerator):
(JSC::JITGetByValGenerator::JITGetByValGenerator):
(JSC::JITPutByValGenerator::JITPutByValGenerator):
(JSC::JITPrivateBrandAccessGenerator::JITPrivateBrandAccessGenerator):

  • jit/JITInlineCacheGenerator.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_instanceof):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_instanceof):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emit_op_enumerator_get_by_val):

11:28 PM Changeset in webkit [285077] by Lauro Moura
  • 5 edits in trunk/Source/WebKit

[GLIB][SOUP] Unify memoryPressureMonitorDisabled implementation
https://bugs.webkit.org/show_bug.cgi?id=232519

Reviewed by Carlos Garcia Campos.

Covered by existing tests.

Follow up the fix of r285062, to avoid having two copies of
the same function around.

  • UIProcess/glib/WebProcessPoolGLib.cpp:

(WebKit::WebProcessPool::platformInitialize):
(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::memoryPressureMonitorDisabled): Deleted.

  • UIProcess/linux/MemoryPressureMonitor.cpp:

(WebKit::MemoryPressureMonitor::disabled):

  • UIProcess/linux/MemoryPressureMonitor.h:
  • UIProcess/soup/WebProcessPoolSoup.cpp:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::memoryPressureMonitorDisabledSoup): Deleted.

10:25 PM Changeset in webkit [285076] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Move InlineTextItem construction to InlineItemsBuilder
https://bugs.webkit.org/show_bug.cgi?id=232498

Reviewed by Antti Koivisto.

This is in preparation for adding bidi support.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::moveToNextNonWhitespacePosition):
(WebCore::Layout::moveToNextBreakablePosition):
(WebCore::Layout::InlineItemsBuilder::build):
(WebCore::Layout::InlineItemsBuilder::createAndAppendTextItems):

  • layout/formattingContexts/inline/InlineItemsBuilder.h:
  • layout/formattingContexts/inline/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::InlineTextItem):
(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):
(): Deleted.
(WebCore::Layout::moveToNextNonWhitespacePosition): Deleted.
(WebCore::Layout::moveToNextBreakablePosition): Deleted.
(WebCore::Layout::InlineTextItem::createAndAppendTextItems): Deleted.

  • layout/formattingContexts/inline/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::InlineTextItem): Deleted.
(WebCore::Layout::InlineTextItem::left const): Deleted.
(WebCore::Layout::InlineTextItem::right const): Deleted.

10:11 PM Changeset in webkit [285075] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

Unreviewed, reduce # of iterations in stress/validate-int-52-ai-state.js due to Debug timeout

  • stress/validate-int-52-ai-state.js:
9:19 PM Changeset in webkit [285074] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

Unreviewed, skip stress/unlinked-code-block-destructor.js when it is debug build

The bug was not related to Debug build. And it is timing out on Debug build due to
heavy test load.

  • stress/unlinked-code-block-destructor.js:
9:10 PM Changeset in webkit [285073] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

Unreviewed, reduce # of iteration since it is timing out on Debug JSC bot

  • stress/put-private-name-ic-write-barrier.js:

(PutPrivateNameIC):

7:45 PM Changeset in webkit [285072] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Add release logging of display list size to CGDisplayListImageBufferBackend
https://bugs.webkit.org/show_bug.cgi?id=232496

Reviewed by Wenson Hsieh.

No new tests, just new logging.

  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp:

(WebKit::CGDisplayListImageBufferBackend::createImageBufferBackendHandle const):

7:44 PM Changeset in webkit [285071] by mmaxfield@apple.com
  • 25 edits in trunk/Source

Rename ImageBuffer.logicalSize to ImageBuffer.truncatedLogicalSize
https://bugs.webkit.org/show_bug.cgi?id=232515
<rdar://problem/84829689>

Reviewed by Tim Horton.

Source/WebCore:

This is a purely mechanical change, and is the first step in
https://bugs.webkit.org/show_bug.cgi?id=225377. Once we have both logicalSize()
and truncatedLogicalSize(), we can start migrating callers to the correct one
and away from the trucated one.

I did this rename by adding truncatedImageSize, and then temporarily renaming
logicalSize() to some dummy value - to force compilation failures at every call
to logicalSize(). Then, once compiling found all the call sites, I renamed it
back to just logicalSize().

No new tests because there is no behavior change.

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::dumpImageBitmap):

  • html/CanvasBase.cpp:

(WebCore::CanvasBase::setImageBuffer const):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::toMediaSample):

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createPromise):

  • html/ImageBitmapBacking.cpp:

(WebCore::ImageBitmapBacking::width const):
(WebCore::ImageBitmapBacking::height const):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::putImageData):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer):

  • page/PageColorSampler.cpp:

(WebCore::sampleColor):

  • platform/graphics/ConcreteImageBuffer.h:
  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawImageBuffer):
(WebCore::GraphicsContext::drawConsumingImageBuffer):

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ScratchBuffer::WTF_REQUIRES_LOCK):

  • platform/graphics/displaylists/DisplayListImageBuffer.h:

(WebCore::DisplayList::ImageBuffer::ImageBuffer):

  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::platformApplySoftware):

  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::platformApplySoftware):

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::platformApplySoftware):

  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::allocateBackingStoreIfNeeded):

  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::buildPattern):

Source/WebKit:

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::getShareableBitmapForImageBufferWithQualifiedIdentifier):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::createRemoteImageBuffer):

7:08 PM Changeset in webkit [285070] by ysuzuki@apple.com
  • 17 edits in trunk/Source

[JSC] Clean up Baseline StructureStubInfo management
https://bugs.webkit.org/show_bug.cgi?id=232513

Reviewed by Saam Barati.

Source/JavaScriptCore:

  1. We should keep Generator::m_stubInfo nullptr. And we add some assertions about it since it should not be allocated and used.
  2. We found that propertyIsInt32 for op_get_by_val and op_put_by_val is not appropriately configured for UnlinkedStructureStubInfo (it was accidentally set for the above wasted StructureStubInfo). This patch attaches that information.
  3. We keep UnlinkedStructureStubInfo in a FixedVector in BaselineJITCode. While we need to keep pointer identity while compiling Baseline JIT, after that, we no longer need to keep that since these pointers are not embedded into JIT code. This patch allocates UnlinkedStructureStubInfo via SegmentedVector during compilation to keep pointer identity, but when finalizing, we allocate FixedVector and copy the above content to that to keep memory as small as possible. We should do similar thing to UnlinkedCallLinkInfo, StructureStubInfo etc. for baseline, but this should be done in a separate patch.
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::setupWithUnlinkedBaselineCode):
(JSC::CodeBlock::addOptimizingStubInfo):
(JSC::CodeBlock::addStubInfo): Deleted.

  • bytecode/CodeBlock.h:
  • bytecode/PutKind.h:
  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::initializeFromUnlinkedStructureStubInfo):

  • bytecode/StructureStubInfo.h:
  • jit/BaselineJITCode.h:
  • jit/JIT.cpp:

(JSC::JIT::addUnlinkedStructureStubInfo):
(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITCall.cpp:

(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
(JSC::JITInlineCacheGenerator::finalize):
(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITByIdGenerator::finalize):
(JSC::JITGetByIdGenerator::generateFastPath):
(JSC::JITGetByIdWithThisGenerator::JITGetByIdWithThisGenerator):
(JSC::JITGetByIdWithThisGenerator::generateFastPath):
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):
(JSC::JITPutByIdGenerator::generateFastPath):
(JSC::JITDelByValGenerator::JITDelByValGenerator):
(JSC::JITDelByValGenerator::generateFastPath):
(JSC::JITDelByValGenerator::finalize):
(JSC::JITDelByIdGenerator::JITDelByIdGenerator):
(JSC::JITDelByIdGenerator::generateFastPath):
(JSC::JITDelByIdGenerator::finalize):
(JSC::JITInByValGenerator::JITInByValGenerator):
(JSC::JITInByValGenerator::generateFastPath):
(JSC::JITInByValGenerator::finalize):
(JSC::JITInByIdGenerator::generateFastPath):
(JSC::JITInstanceOfGenerator::JITInstanceOfGenerator):
(JSC::JITInstanceOfGenerator::generateFastPath):
(JSC::JITInstanceOfGenerator::finalize):
(JSC::JITGetByValGenerator::JITGetByValGenerator):
(JSC::JITGetByValGenerator::generateFastPath):
(JSC::JITGetByValGenerator::finalize):
(JSC::JITPutByValGenerator::JITPutByValGenerator):
(JSC::JITPutByValGenerator::generateFastPath):
(JSC::JITPutByValGenerator::finalize):
(JSC::JITPrivateBrandAccessGenerator::JITPrivateBrandAccessGenerator):
(JSC::JITPrivateBrandAccessGenerator::generateFastPath):
(JSC::JITPrivateBrandAccessGenerator::finalize):
(JSC::garbageStubInfo): Deleted.

  • jit/JITInlineCacheGenerator.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_instanceof):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_instanceof):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::generateGetByValSlowCase):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emit_op_enumerator_get_by_val):

Source/WTF:

  • wtf/SegmentedVector.h:
6:44 PM Changeset in webkit [285069] by Jean-Yves Avenard
  • 10 edits in trunk/Source/WebCore

Have PlatformMediaResourceClient use SharedBuffer
https://bugs.webkit.org/show_bug.cgi?id=232422
rdar://84558835

Reviewed by Alex Christensen.

When playing a non-mse media element, the download gets controlled by a
MediaResource into a WebCoreNSURLSession to be used by the media framework.
The data got copied at least three times along the way due to the
multi-threaded nature of the framework and the need for thread
safety.
The situation was made worse when the content server didn't support
range-request: as a RangeResponseGenerator is then used by the
WebCoreNSURLSession which downloads the entire media to be played and
keep it in memory.

By modifying the various actors between a MediaResource and WebCoreNSURLSession
to use SharedBuffers ; we can remove most copies and allocation.
This also completely eliminates the need for new memory buffer allocations and
copies by the RangeResponseGenerator object.

With WK2 and the GPU process, it allows for the memory to be allocated once
and only be assigned to the content process by using SharedMemory wrapped
in a SharedBuffer.

In the future, by refactoring CachedRawResourceClient to use SharedBuffers,
we could remove further allocation/copies. We could likely get the data from the
network process all the way to the final client in the GPU process without
a single copy. This is tracked in bug 232424.

No change in observable behaviour. Covered by all the existing media tests.

  • platform/SharedBuffer.cpp:

(WebCore::SharedBufferDataView::size const):
(WebCore::SharedBufferDataView::trim): Add ability to trim a SharedBufferDataView.
This allows to avoid having to copy into a new buffer.
(WebCore::SharedBufferDataView::createSharedBuffer const): Cross declarations
makes it difficult to add a new SharedBuffer constructor that would take a
SharedBufferDataView.

  • platform/SharedBuffer.h: Add new methods.
  • platform/cocoa/SharedBufferCocoa.mm: Update to allow for end trimming

information.
(-[WebCoreSharedBufferData initWithDataSegment:position:endTrim:]):
(-[WebCoreSharedBufferData length]):
(WebCore::SharedBuffer::DataSegment::createNSData const):
(WebCore::SharedBufferDataView::createNSData const):
(-[WebCoreSharedBufferData initWithDataSegment:position:]): Deleted.

  • platform/graphics/PlatformMediaResourceLoader.h:

(WebCore::PlatformMediaResourceClient::dataReceived): Add a new API using
a SharedBuffer. We keep the old one taking a pointer/size due to a WebKit
implementation details which allows us to save an intermediary allocation/copy
when used with SharedMemory.

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

(WebCore::PlatformResourceMediaLoader::dataReceived):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(CachedResourceStreamingClient::dataReceived): Update to use SharedBuffer.

  • platform/network/cocoa/RangeResponseGenerator.mm:

(WebCore::RangeResponseGenerator::giveResponseToTaskIfBytesInRangeReceived):

  • platform/network/cocoa/WebCoreNSURLSession.h: Change prototypes.

Fly-by fix, property countOfBytesReceived needed to be atomic.

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(WebCore::WebCoreNSURLSessionDataTaskClient::dataReceived):
(-[WebCoreNSURLSessionDataTask resource:receivedData:]):
(-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:completionHandler:]):

6:29 PM Changeset in webkit [285068] by Kate Cheney
  • 5 edits in trunk/Source

Crash setting up AVCaptureSession
https://bugs.webkit.org/show_bug.cgi?id=232507
<rdar://problem/84820282>

Reviewed by Jer Noble.

Source/WebCore:

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::setupSession):

Source/WebKit:

  • GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm:

(WebKit::GPUConnectionToWebProcess::setTCCIdentity):

6:29 PM Changeset in webkit [285067] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Gardening timeouts affected by xhtml mimetype misdetection

Unreviewed test gardening.

  • platform/glib/TestExpectations:
5:48 PM Changeset in webkit [285066] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

[GTK] Layout Tests for experimental <attachment> element are failing since added
https://bugs.webkit.org/show_bug.cgi?id=141699

Mark the tests that rely on the attachment element as skipped for
glib platforms, as it is not standard nor supported on that platform.

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-10-29

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
5:46 PM Changeset in webkit [285065] by dbezhetskov
  • 12 edits
    1 add in trunk

[WASM-Function-References] Add support for (ref.null heaptype)
https://bugs.webkit.org/show_bug.cgi?id=229707

Reviewed by Yusuke Suzuki.

JSTests:

Added spec tests for (ref.null $t) : https://github.com/WebAssembly/function-references/blob/master/test/core/ref_null.wast.

  • wasm.yaml:
  • wasm/function-references-spec-tests/call_ref.wast.js:
  • wasm/function-references-spec-tests/ref_null.wast.js: Added.

Source/JavaScriptCore:

Added support for (ref.null $t) from the typed function references proposal:
https://github.com/WebAssembly/function-references/blob/master/proposals/function-references/Overview.md#optional-references.
Since now we can have null references I've also updated call_ref implementation to check the target reference for null.
According to the spec (https://github.com/WebAssembly/function-references/blob/master/proposals/function-references/Overview.md#functions)
we must trap on null.

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::addCallRef):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addCallRef):

  • wasm/WasmExceptionType.h:
  • wasm/WasmFormat.h:

(JSC::Wasm::isTypeIndexHeapType):

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/WasmParser.h:

(JSC::Wasm::Parser<SuccessType>::parseHeapType):
(JSC::Wasm::Parser<SuccessType>::parseValueType):

  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseInitExpr):

  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::doWasmCallRef):

5:35 PM Changeset in webkit [285064] by Kocsen Chung
  • 1 copy in tags/Safari-612.3.3

Tag Safari-612.3.3.

5:08 PM Changeset in webkit [285063] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS macOS ] imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-021.html and flex-aspect-ratio-022.html are failing after reverting r284440, r284397, and r284359.
https://bugs.webkit.org/show_bug.cgi?id=232518

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
4:48 PM Changeset in webkit [285062] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix WPE build after r285047
https://bugs.webkit.org/show_bug.cgi?id=232462

  • UIProcess/soup/WebProcessPoolSoup.cpp:

(WebKit::memoryPressureMonitorDisabledSoup):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::memoryPressureMonitorDisabled): Deleted.

4:29 PM Changeset in webkit [285061] by stephan.szabo@sony.com
  • 2 edits in trunk/Tools

[PlayStation] Build fix after r285020
https://bugs.webkit.org/show_bug.cgi?id=232494

Unreviewed temporary Build Fix

Remove test that requires unsupported WTF::FileSystem functions.

  • TestWebKitAPI/PlatformPlayStation.cmake:
4:24 PM Changeset in webkit [285060] by achristensen@apple.com
  • 2 edits in trunk/Tools

Revert r285034
webkit.org/b/232166

The test still times out in EWS.

  • TestWebKitAPI/Tests/WebKitCocoa/AppPrivacyReport.mm:
4:17 PM Changeset in webkit [285059] by achristensen@apple.com
  • 6 edits in trunk

Unreviewed, reverting r284917.
Source/WebCore/PAL:

Likely caused significant performance regression

Reverted changeset:

"Remove properties set by NSURLProtocol on NSURLRequest before
serializing"
https://bugs.webkit.org/show_bug.cgi?id=232332
https://commits.webkit.org/r284917

Source/WebKit:

<rdar://84807461>

Likely caused significant performance regression

Reverted changeset:

"Remove properties set by NSURLProtocol on NSURLRequest before
serializing"
https://bugs.webkit.org/show_bug.cgi?id=232332
https://commits.webkit.org/r284917

Tools:

Likely caused significant performance regression

Reverted changeset:

"Remove properties set by NSURLProtocol on NSURLRequest before
serializing"
https://bugs.webkit.org/show_bug.cgi?id=232332
https://commits.webkit.org/r284917

3:21 PM Changeset in webkit [285058] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix AppleWin build after r285051

https://bugs.webkit.org/show_bug.cgi?id=232462

  • DumpRenderTree/CMakeLists.txt:
3:06 PM Changeset in webkit [285057] by achristensen@apple.com
  • 2 edits in trunk/Tools

[ Monterey iOS15 ] TestWebKitAPI.URLSchemeHandler.Ranges is a constant timeout
https://bugs.webkit.org/show_bug.cgi?id=231394

Reviewed by Jer Noble.

For some reason, AVFoundation used to play videos from custom schemes when you respond to range requests with 1 fewer byte than requested.
They stopped successfully playing videos in such circumstances, which is fine. I had accidentally done that in my test.
When I respond properly, the test starts passing again.

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
2:48 PM Changeset in webkit [285056] by commit-queue@webkit.org
  • 5 edits in trunk

Add last modified and creation time to +[_WKWebAuthenticationPanel getAllLocalAuthenticatorCredentials]
https://bugs.webkit.org/show_bug.cgi?id=232390
<rdar://problem/84689277>

Patch by John Pascoe <J Pascoe> on 2021-10-29
Reviewed by Darin Adler.

Source/WebKit:

This change adds new fields to returned credentials useful for providing context about them, namely
when they were created and last modified.

  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(getAllLocalAuthenticatorCredentialsImpl):

Tools:

These fields (creation time and last modified) are useful for providing context about credentials.
The modifications to the tests verify they are properly added.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

2:45 PM Changeset in webkit [285055] by Cameron McCormack
  • 5 edits in trunk/Source

Source/WebCore:
Avoid sending video data to Web process for canvas.drawImage(video)
https://bugs.webkit.org/show_bug.cgi?id=230766
<rdar://problem/83576009>

Reviewed by Simon Fraser.

Using nativeImageForCurrentTime() to get the image to paint on to the
canvas results in a ShareableBitmap being created to send to the
Web process, the identifier for which we then send back to the GPU
process for the drawImage() call. But if we use
paintCurrentFrameInContext(), this uses the PaintFrameForMedia
message, which just sends the MediaPlayer ID and avoids the bitmap
creation.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::drawImage):

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::isRemote const):

Source/WebKit:
Avoid sending video data to Web process for canvas.drawImage(video).
https://bugs.webkit.org/show_bug.cgi?id=230766
<rdar://problem/83576009>

Reviewed by Simon Fraser.

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
2:42 PM Changeset in webkit [285054] by Antti Koivisto
  • 5 edits in trunk

Allow :is/:where after all pseudo elements
https://bugs.webkit.org/show_bug.cgi?id=232434

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-scoping/slotted-parsing-expected.txt:

Source/WebCore:

Any subselectors that are not legal in the context will be removed by the forgiving parsing.
This matches the behavior in other engines and the discussion in https://github.com/w3c/csswg-drafts/issues/5093.

The validity check is moved from the compound selector level to the simple selector level. This way if we are
inside forgiving selector list parsing, it can recover and continue.

  • css/parser/CSSSelectorParser.cpp:

(WebCore::isLogicalCombinationPseudoClass):
(WebCore::isPseudoClassValidAfterPseudoElement):
(WebCore::isSimpleSelectorValidAfterPseudoElement):

:is(), :where(), and so on are always legal but their content is necessarily not.

(WebCore::CSSSelectorParser::consumeCompoundSelector):

Set the preceding pseudo-element as parser state.

(WebCore::CSSSelectorParser::consumeSimpleSelector):

Check if the pseudo-class or pseudo-element is valid immediately after consuming it.

(WebCore::CSSSelectorParser::consumePseudo):

Disallow nesting in all cases.

(WebCore::CSSSelectorParser::DisallowPseudoElementsScope::DisallowPseudoElementsScope): Deleted.
(WebCore::CSSSelectorParser::DisallowPseudoElementsScope::~DisallowPseudoElementsScope): Deleted.

Just use SetForScope.

  • css/parser/CSSSelectorParser.h:
2:31 PM Changeset in webkit [285053] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix internal macOS build after r285047
https://bugs.webkit.org/show_bug.cgi?id=232462

  • Modules/OSX.modulemap:
2:15 PM Changeset in webkit [285052] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKitLegacy/mac

Fix internal macOS build after r285047
https://bugs.webkit.org/show_bug.cgi?id=232462

  • MigrateHeaders.make:
2:11 PM Changeset in webkit [285051] by achristensen@apple.com
  • 2 edits
    1 delete in trunk/Tools

Fix macOS clean build after r285047
https://bugs.webkit.org/show_bug.cgi?id=232462

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • DumpRenderTree/TestNetscapePlugIn: Removed.
2:09 PM Changeset in webkit [285050] by Alan Bujtas
  • 4 edits
    2 adds in trunk/Source/WebCore

[LFC][IFC] Introduce InlineItemsBuilder
https://bugs.webkit.org/show_bug.cgi?id=232487

Reviewed by Antti Koivisto.

This builder is going to be used for constructing bidi compatible inline items.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::collectContentIfNeeded):

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp: Added.

(WebCore::Layout::InlineItemsBuilder::InlineItemsBuilder):
(WebCore::Layout::InlineItemsBuilder::build):

  • layout/formattingContexts/inline/InlineItemsBuilder.h: Added.

(WebCore::Layout::InlineItemsBuilder::root const):
(WebCore::Layout::InlineItemsBuilder::formattingState const):

2:08 PM Changeset in webkit [285049] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebKitLegacy/mac

[WebKitLegacy] Enable -Wformat=2 warnings
<https://webkit.org/b/232333>
<rdar://problem/84681560>

Reviewed by Darin Adler.

  • Configurations/Base.xcconfig:

(WARNING_CFLAGS):

  • Replace -Wformat-security with -Wformat=2, which enables more warnings like -Wformat-nonliteral.
  • Misc/WebLocalizableStringsInternal.h:

(WebLocalizedStringInternal):

  • Add NS_FORMAT_ARGUMENT() macro to fix -Wformat-nonliteral warnings.
1:54 PM Changeset in webkit [285048] by Darin Adler
  • 15 edits in trunk/Source

Create constants for all special frame names used in anchor target attribute values and elsewhere
https://bugs.webkit.org/show_bug.cgi?id=232488

Reviewed by Anders Carlsson.

Source/WebCore:

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick): Use isBlankTargetFrameName.

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submit): Ditto.

  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::openURLExternally): Use
blankTargetFrameName and selfTargetFrameName.

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::navigate): Ditto.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadURLIntoChildFrame): Use selfTargetFrameName.
(WebCore::FrameLoader::loadURL): Use selfTargetFrameName and blankTargetFrameName.
(WebCore::FrameLoader::loadPostRequest): Use blankTargetFrameName.
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy): Ditto.
(WebCore::createWindow): Use isBlankTargetFrameName.

  • loader/NavigationScheduler.cpp:

(WebCore::NavigationScheduler::scheduleLocationChange): Use selfTargetFrameName.

  • mathml/MathMLElement.cpp:

(WebCore::MathMLElement::defaultEventHandler): Use selfTargetFrameName.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::createWindow): Use selfTargetFrameName.
(WebCore::DOMWindow::open): Use isTopTargetFrameName and isParentTargetFrameName.

  • page/FrameTree.cpp:

(WebCore::FrameTree::uniqueChildName const): Use isBlankTargetFrameName.
(WebCore::FrameTree::find const): Use isSelfTargetFrameName, isTopTargetFrameName,
isParentTargetFrameName, and isBlankTargetFrameName.
(WebCore::blankTargetFrameName): Added.
(WebCore::selfTargetFrameName): Added.
(WebCore::isBlankTargetFrameName): Added.
(WebCore::isParentTargetFrameName): Added.
(WebCore::isSelfTargetFrameName): Added.
(WebCore::isTopTargetFrameName): Added.

  • page/FrameTree.h: Add declarations.
  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::defaultEventHandler): Use blankTargetFrameName.

Source/WTF:

  • wtf/Forward.h: Declare ASCIILiteral.
  • wtf/text/ASCIILiteral.h: Update for above.
1:33 PM Changeset in webkit [285047] by achristensen@apple.com
  • 96 edits
    95 deletes in trunk/Source

Remove code inside ENABLE(NETSCAPE_PLUGIN_API)
https://bugs.webkit.org/show_bug.cgi?id=232462

Reviewed by Anders Carlsson.

Source/WebCore:

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::ScriptController):
(WebCore::ScriptController::clearScriptObjects):
(WebCore::ScriptController::windowScriptNPObject): Deleted.

  • bindings/js/ScriptController.h:
  • bindings/js/ScriptControllerMac.mm:

(WebCore::ScriptController::createScriptInstanceForWidget):

  • bridge/NP_jsobject.cpp: Removed.
  • bridge/NP_jsobject.h: Removed.
  • bridge/c/CRuntimeObject.cpp: Removed.
  • bridge/c/CRuntimeObject.h: Removed.
  • bridge/c/c_class.cpp: Removed.
  • bridge/c/c_class.h: Removed.
  • bridge/c/c_instance.cpp: Removed.
  • bridge/c/c_instance.h: Removed.
  • bridge/c/c_runtime.cpp: Removed.
  • bridge/c/c_runtime.h: Removed.
  • bridge/c/c_utility.cpp: Removed.
  • bridge/c/c_utility.h: Removed.
  • bridge/npruntime.cpp: Removed.
  • bridge/npruntime_impl.h: Removed.
  • bridge/npruntime_internal.h: Removed.
  • bridge/npruntime_priv.h: Removed.
  • html/HTMLPlugInElement.cpp:
  • page/Frame.cpp:
  • plugins/npapi.h: Removed.
  • plugins/npfunctions.h: Removed.
  • plugins/npruntime.h: Removed.
  • plugins/nptypes.h: Removed.

Source/WebKit:

  • Configurations/PluginService.xcconfig:
  • Configurations/WebKit.xcconfig:
  • DerivedSources.make:
  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::removeDataRecords):
(WebKit::ResourceLoadStatisticsStore::shouldRemoveDataRecords const):

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

(WebKit::WebResourceLoadStatisticsStore::monitoredDataTypes):

  • PlatformMac.cmake:
  • PluginProcess/EntryPoint/Cocoa/XPCService/PluginService.Info.plist: Removed.
  • PluginProcess/EntryPoint/Cocoa/XPCService/PluginServiceEntryPoint.mm: Removed.
  • PluginProcess/PluginControllerProxy.cpp: Removed.
  • PluginProcess/PluginControllerProxy.h: Removed.
  • PluginProcess/PluginControllerProxy.messages.in: Removed.
  • PluginProcess/PluginCreationParameters.cpp: Removed.
  • PluginProcess/PluginCreationParameters.h: Removed.
  • PluginProcess/PluginProcess.cpp: Removed.
  • PluginProcess/PluginProcess.h: Removed.
  • PluginProcess/PluginProcess.messages.in: Removed.
  • PluginProcess/WebProcessConnection.cpp: Removed.
  • PluginProcess/WebProcessConnection.h: Removed.
  • PluginProcess/WebProcessConnection.messages.in: Removed.
  • PluginProcess/mac/PluginControllerProxyMac.mm: Removed.
  • PluginProcess/mac/PluginProcessMac.mm: Removed.
  • PluginProcess/mac/PluginProcessShim.h: Removed.
  • PluginProcess/mac/PluginProcessShim.mm: Removed.
  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in: Removed.
  • Resources/PlugInSandboxProfiles/cn.microdone.cmb.safari.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.apple.BocomSubmitCtrl.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.apple.NPSafeInput.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.apple.NPSafeSubmit.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.apple.QuickTime Plugin.plugin.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.apple.appstore.CodeRedeemerNetscapePlugin.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.apple.ist.ds.appleconnect.webplugin.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.cfca.npSecEditCtl.MAC.BOC.plugin.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.cisco.webex.plugin.gpc64.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.cmbchina.CMBSecurity.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.ftsafe.NPAPI-Core-Safe-SoftKeybaord.plugin.rfc1034identifier.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.google.googletalkbrowserplugin.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.google.o1dbrowserplugin.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.macromedia.Flash Player ESR.plugin.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.macromedia.Flash Player.plugin.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.microsoft.SilverlightPlugin.sb: Removed.
  • Resources/PlugInSandboxProfiles/com.oracle.java.JavaAppletPlugin.sb: Removed.
  • Shared/API/c/WKPluginInformation.cpp:

(WKPluginInformationBundleIdentifierKey):
(WKPluginInformationBundleVersionKey):
(WKPluginInformationBundleShortVersionKey):
(WKPluginInformationPathKey):
(WKPluginInformationDisplayNameKey):
(WKPluginInformationDefaultLoadPolicyKey):
(WKPluginInformationUpdatePastLastBlockedVersionIsKnownAvailableKey):
(WKPluginInformationHasSandboxProfileKey):
(WKPluginInformationFrameURLKey):
(WKPluginInformationMIMETypeKey):
(WKPluginInformationPageURLKey):
(WKPluginInformationPluginspageAttributeURLKey):
(WKPluginInformationPluginURLKey):
(WKPlugInInformationReplacementObscuredKey):

  • Shared/Plugins/NPIdentifierData.cpp: Removed.
  • Shared/Plugins/NPIdentifierData.h: Removed.
  • Shared/Plugins/NPObjectMessageReceiver.cpp: Removed.
  • Shared/Plugins/NPObjectMessageReceiver.h: Removed.
  • Shared/Plugins/NPObjectMessageReceiver.messages.in: Removed.
  • Shared/Plugins/NPObjectProxy.cpp: Removed.
  • Shared/Plugins/NPObjectProxy.h: Removed.
  • Shared/Plugins/NPRemoteObjectMap.cpp: Removed.
  • Shared/Plugins/NPRemoteObjectMap.h: Removed.
  • Shared/Plugins/NPVariantData.cpp: Removed.
  • Shared/Plugins/NPVariantData.h: Removed.
  • Shared/Plugins/Netscape/NetscapePluginModule.cpp: Removed.
  • Shared/Plugins/Netscape/NetscapePluginModule.h: Removed.
  • Shared/Plugins/Netscape/PluginInformation.cpp: Removed.
  • Shared/Plugins/Netscape/PluginInformation.h: Removed.
  • Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm: Removed.
  • Shared/Plugins/Netscape/mac/PluginInformationMac.mm: Removed.
  • Shared/Plugins/PluginModuleInfo.h: Removed.
  • Shared/Plugins/PluginProcessAttributes.h: Removed.
  • Shared/Plugins/PluginProcessCreationParameters.cpp: Removed.
  • Shared/Plugins/PluginProcessCreationParameters.h: Removed.
  • Shared/Plugins/PluginQuirks.h: Removed.
  • Shared/Plugins/mac/PluginComplexTextInputState.h: Removed.
  • Shared/Plugins/mac/PluginSandboxProfile.h: Removed.
  • Shared/Plugins/mac/PluginSandboxProfile.mm: Removed.
  • Shared/WebProcessCreationParameters.h:
  • Shared/WebsiteData/WebsiteData.cpp:

(WebKit::WebsiteData::encode const):
(WebKit::WebsiteData::decode):
(WebKit::WebsiteData::ownerProcess):
(WebKit::WebsiteData::isolatedCopy const):

  • Shared/WebsiteData/WebsiteData.h:
  • Shared/WebsiteData/WebsiteDataType.h:
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/APILoaderClient.h:
  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::contentRuleListNotification):
(API::NavigationClient::didFailToInitializePlugIn): Deleted.
(API::NavigationClient::didBlockInsecurePluginVersion): Deleted.
(API::NavigationClient::decidePolicyForPluginLoad): Deleted.

  • UIProcess/API/APIUIClient.h:

(API::UIClient::mouseDidMoveOverElement):
(API::UIClient::unavailablePluginButtonClicked): Deleted.

  • UIProcess/API/C/WKAPICast.h:

(WebKit::toWKPluginLoadPolicy): Deleted.
(WebKit::toWKPluginLoadClientPolicy): Deleted.
(WebKit::toPluginModuleLoadPolicy): Deleted.
(WebKit::toPluginLoadClientPolicy): Deleted.

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetAdditionalPluginsDirectory):
(WKContextRefreshPlugIns):
(WKContextAddSupportedPlugin):
(WKContextClearSupportedPlugins):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetPluginSandboxProfilesEnabledForAllPlugins):

  • UIProcess/API/C/mac/WKContextPrivateMac.mm:

(WKContextCopyPlugInInfoForBundleIdentifier):
(WKContextGetInfoForInstalledPlugIns):

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setExperimentalPlugInSandboxProfilesEnabled:]):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _pluginProcessCount]):

  • UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:

(WebKit::toWebsiteDataType):
(WebKit::toWKWebsiteDataTypes):

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::getLaunchOptions):

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::toWKPlugInUnavailabilityReason): Deleted.
(WebKit::UIDelegate::UIClient::unavailablePluginButtonClicked): Deleted.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::updateProcessSuppressionState):

  • UIProcess/Cocoa/WebViewImpl.h:

(WebKit::WebViewImpl::pluginComplexTextInputState const): Deleted.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::disableComplexTextInputIfNecessary):
(WebKit::WebViewImpl::handlePluginComplexTextInputKeyDown):
(WebKit::WebViewImpl::tryHandlePluginComplexTextInputKeyDown):
(WebKit::WebViewImpl::tryPostProcessPluginComplexTextInputKeyDown):
(WebKit::WebViewImpl::setPluginComplexTextInputState): Deleted.
(WebKit::WebViewImpl::setPluginComplexTextInputStateAndIdentifier): Deleted.

  • UIProcess/Launcher/ProcessLauncher.h:
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::serviceName):

  • UIProcess/PageClient.h:
  • UIProcess/Plugins/PluginInfoStore.cpp: Removed.
  • UIProcess/Plugins/PluginInfoStore.h: Removed.
  • UIProcess/Plugins/PluginProcessManager.cpp: Removed.
  • UIProcess/Plugins/PluginProcessManager.h: Removed.
  • UIProcess/Plugins/PluginProcessProxy.cpp: Removed.
  • UIProcess/Plugins/PluginProcessProxy.h: Removed.
  • UIProcess/Plugins/PluginProcessProxy.messages.in: Removed.
  • UIProcess/Plugins/mac/PluginInfoStoreMac.mm: Removed.
  • UIProcess/Plugins/mac/PluginProcessManagerMac.mm: Removed.
  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm: Removed.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::canShowMIMEType):
(WebKit::WebPageProxy::findPlugin): Deleted.
(WebKit::WebPageProxy::unavailablePluginButtonClicked): Deleted.
(WebKit::WebPageProxy::didFailToInitializePlugin): Deleted.
(WebKit::WebPageProxy::didBlockInsecurePluginVersion): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::sendMemoryPressureEvent):
(WebKit::WebProcessPool::addSupportedPlugin):
(WebKit::WebProcessPool::clearSupportedPlugins):
(WebKit::WebProcessPool::setAdditionalPluginsDirectory): Deleted.
(WebKit::WebProcessPool::refreshPlugins): Deleted.

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getPlugins): Deleted.
(WebKit::WebProcessProxy::getPluginProcessConnection): Deleted.

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • UIProcess/WebsiteData/WebsiteDataRecord.cpp:

(WebKit::WebsiteDataRecord::topPrivatelyControlledDomain):
(WebKit::WebsiteDataRecord::isolatedCopy const):
(WebKit::WebsiteDataRecord::addPluginDataHostName): Deleted.

  • UIProcess/WebsiteData/WebsiteDataRecord.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::plugins const): Deleted.

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::setPluginComplexTextInputState): Deleted.

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::setPluginComplexTextInputState): Deleted.

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::setPluginComplexTextInputState): Deleted.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Plugins/Netscape/JSNPMethod.cpp: Removed.
  • WebProcess/Plugins/Netscape/JSNPMethod.h: Removed.
  • WebProcess/Plugins/Netscape/JSNPObject.cpp: Removed.
  • WebProcess/Plugins/Netscape/JSNPObject.h: Removed.
  • WebProcess/Plugins/Netscape/NPJSObject.cpp: Removed.
  • WebProcess/Plugins/Netscape/NPJSObject.h: Removed.
  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: Removed.
  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h: Removed.
  • WebProcess/Plugins/Netscape/NPRuntimeUtilities.cpp: Removed.
  • WebProcess/Plugins/Netscape/NPRuntimeUtilities.h: Removed.
  • WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: Removed.
  • WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.h: Removed.
  • WebProcess/Plugins/Netscape/NetscapePlugin.cpp: Removed.
  • WebProcess/Plugins/Netscape/NetscapePlugin.h: Removed.
  • WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: Removed.
  • WebProcess/Plugins/Netscape/NetscapePluginStream.h: Removed.
  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm: Removed.
  • WebProcess/Plugins/Netscape/mac/PluginProxyMac.mm: Removed.
  • WebProcess/Plugins/PluginController.h:
  • WebProcess/Plugins/PluginProcessConnection.cpp: Removed.
  • WebProcess/Plugins/PluginProcessConnection.h: Removed.
  • WebProcess/Plugins/PluginProcessConnection.messages.in: Removed.
  • WebProcess/Plugins/PluginProcessConnectionManager.cpp: Removed.
  • WebProcess/Plugins/PluginProcessConnectionManager.h: Removed.
  • WebProcess/Plugins/PluginProcessConnectionManager.messages.in: Removed.
  • WebProcess/Plugins/PluginProxy.cpp: Removed.
  • WebProcess/Plugins/PluginProxy.h: Removed.
  • WebProcess/Plugins/PluginProxy.messages.in: Removed.
  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::Stream::didFinishLoading):
(WebKit::PluginView::destroyPluginAndReset):
(WebKit::PluginView::didFailToInitializePlugin):
(WebKit::PluginView::scriptObject):
(WebKit::PluginView::pageMutedStateDidChange):
(WebKit::PluginView::windowScriptNPObject): Deleted.
(WebKit::PluginView::pluginElementNPObject): Deleted.
(WebKit::PluginView::evaluate): Deleted.
(WebKit::PluginView::setPluginIsPlayingAudio): Deleted.
(WebKit::PluginView::isMuted const): Deleted.
(WebKit::PluginView::setComplexTextInputState): Deleted.

  • WebProcess/Plugins/PluginView.h:
  • WebProcess/Plugins/WebPluginInfoProvider.cpp:

(WebKit::WebPluginInfoProvider::refreshPlugins):
(WebKit::WebPluginInfoProvider::pluginInfo):
(WebKit::WebPluginInfoProvider::populatePluginCache): Deleted.

  • WebProcess/Plugins/WebPluginInfoProvider.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::unavailablePluginButtonClicked const):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::createPlugin):
(WebKit::WebPage::canPluginHandleResponse):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess):
(WebKit::WebProcess::initializeConnection):
(WebKit::WebProcess::refreshPlugins):
(WebKit::WebProcess::pluginProcessConnectionManager): Deleted.

  • WebProcess/WebProcess.h:

Source/WebKitLegacy:

  • PlatformMac.cmake:
  • WebKitLegacy.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

  • Plugins/Hosted/HostedNetscapePluginStream.h: Removed.
  • Plugins/Hosted/HostedNetscapePluginStream.mm: Removed.
  • Plugins/Hosted/NetscapePluginHostManager.h: Removed.
  • Plugins/Hosted/NetscapePluginHostManager.mm: Removed.
  • Plugins/Hosted/NetscapePluginHostProxy.h: Removed.
  • Plugins/Hosted/NetscapePluginHostProxy.mm: Removed.
  • Plugins/Hosted/NetscapePluginInstanceProxy.h: Removed.
  • Plugins/Hosted/NetscapePluginInstanceProxy.mm: Removed.
  • Plugins/Hosted/ProxyInstance.h: Removed.
  • Plugins/Hosted/ProxyInstance.mm: Removed.
  • Plugins/Hosted/ProxyRuntimeObject.h: Removed.
  • Plugins/Hosted/ProxyRuntimeObject.mm: Removed.
  • Plugins/Hosted/WebHostedNetscapePluginView.h: Removed.
  • Plugins/Hosted/WebHostedNetscapePluginView.mm: Removed.
  • Plugins/Hosted/WebKitPluginAgent.defs: Removed.
  • Plugins/Hosted/WebKitPluginAgentReply.defs: Removed.
  • Plugins/Hosted/WebKitPluginClient.defs: Removed.
  • Plugins/Hosted/WebKitPluginHost.defs: Removed.
  • Plugins/Hosted/WebKitPluginHostTypes.defs: Removed.
  • Plugins/Hosted/WebKitPluginHostTypes.h: Removed.
  • Plugins/Hosted/WebTextInputWindowController.h: Removed.
  • Plugins/Hosted/WebTextInputWindowController.m: Removed.
  • Plugins/WebBaseNetscapePluginView.h: Removed.
  • Plugins/WebBaseNetscapePluginView.mm: Removed.
  • Plugins/WebBasePluginPackage.h:
  • Plugins/WebBasePluginPackage.mm:

(+[WebBasePluginPackage pluginWithPath:]):

  • Plugins/WebNetscapePluginEventHandler.h: Removed.
  • Plugins/WebNetscapePluginEventHandler.mm: Removed.
  • Plugins/WebNetscapePluginEventHandlerCocoa.h: Removed.
  • Plugins/WebNetscapePluginEventHandlerCocoa.mm: Removed.
  • Plugins/WebNetscapePluginPackage.h: Removed.
  • Plugins/WebNetscapePluginPackage.mm: Removed.
  • Plugins/WebNetscapePluginStream.h: Removed.
  • Plugins/WebNetscapePluginStream.mm: Removed.
  • Plugins/WebNetscapePluginView.h: Removed.
  • Plugins/WebNetscapePluginView.mm: Removed.
  • Plugins/WebPluginController.mm:

(-[WebPluginController destroyPlugin:]):
(-[WebPluginController destroyAllPlugins]):

  • Plugins/WebPluginDatabase.mm:

(PluginPackageCandidates::update):
(-[WebPluginDatabase removePluginInstanceViewsFor:]):
(-[WebPluginDatabase destroyAllPluginInstanceViews]):

  • Plugins/WebPluginRequest.h: Removed.
  • Plugins/WebPluginRequest.m: Removed.
  • Plugins/npapi.mm: Removed.
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::createWindow):

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::dispatchCreatePage):
(WebFrameLoaderClient::createPlugin):
(WebFrameLoaderClient::redirectDataToPlugin):
(NetscapePluginWidget::NetscapePluginWidget): Deleted.
(NetscapePluginWidget::platformLayer const): Deleted.
(NetscapePluginWidget::getFormValue): Deleted.
(NetscapePluginWidget::handleEvent): Deleted.
(NetscapePluginWidget::clipRectChanged): Deleted.
(NetscapePluginWidget::notifyWidget): Deleted.

  • WebView/WebFrame.mm:

(-[WebFrame _recursive_resumeNullEventsForAllNetscapePlugins]): Deleted.
(-[WebFrame _recursive_pauseNullEventsForAllNetscapePlugins]): Deleted.

  • WebView/WebFramePrivate.h:
  • WebView/WebHTMLView.mm:

(needsCursorRectsSupportAtPoint):
(-[WebHTMLView viewWillMoveToHostWindow:]):
(-[WebHTMLView viewDidMoveToHostWindow]):
(-[WebHTMLView _web_makePluginSubviewsPerformSelector:withObject:]): Deleted.
(-[WebHTMLView _pauseNullEventsForAllNetscapePlugins]): Deleted.
(-[WebHTMLView _resumeNullEventsForAllNetscapePlugins]): Deleted.

  • WebView/WebHTMLViewPrivate.h:
  • WebView/WebView.mm:

Source/WTF:

It is not used anywhere since https://trac.webkit.org/changeset/285003/webkit

  • wtf/PlatformEnable.h:
  • wtf/PlatformEnableCocoa.h:
1:30 PM Changeset in webkit [285046] by Ayumi Kojima
  • 15 edits in trunk/Source

Unreviewed, reverting r285038.

Reverting the commit because it broke the open source test
runs and also caused an impanct on EWS queues

Reverted changeset:

"Create constants for all special frame names used in anchor
target attribute values and elsewhere"
https://bugs.webkit.org/show_bug.cgi?id=232488
https://commits.webkit.org/r285038

1:17 PM Changeset in webkit [285045] by ysuzuki@apple.com
  • 21 edits in trunk

Unreviewed, revert r284440, r284397, r284359

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/parsing/flex-basis-computed-expected.txt:
  • web-platform-tests/css/css-flexbox/parsing/flex-basis-valid-expected.txt:
  • web-platform-tests/css/css-flexbox/parsing/flex-shorthand-expected.txt:

Source/WebCore:

r284359 causes Twitter using CPU 100%.
We reverted r284440 and r284397 too since they rely on r284359 change.

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::init):

  • css/CSSProperties.json:
  • css/LengthFunctions.cpp:

(WebCore::valueForLength):
(WebCore::floatValueForLength):

  • css/LengthFunctions.h:

(WebCore::minimumValueForLength):

  • css/calc/CSSCalcValue.cpp:

(WebCore::createCSS):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeFlexBasis):
(WebCore::CSSPropertyParser::consumeFlex):

  • platform/Length.cpp:

(WebCore::operator<<):

  • platform/Length.h:

(WebCore::Length::initialize):
(WebCore::Length::isContent const): Deleted.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeReplacedLogicalWidthUsing const):

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeMainAxisExtentForChild):
(WebCore::RenderFlexibleBox::childMainSizeIsDefinite):
(WebCore::RenderFlexibleBox::childHasComputableAspectRatioAndCrossSizeIsConsideredDefinite):
(WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild):
(WebCore::RenderFlexibleBox::computeFlexItemMinMaxSizes):
(WebCore::RenderFlexibleBox::constructFlexItem):
(WebCore::RenderFlexibleBox::layoutAndPlaceChildren):
(WebCore::RenderFlexibleBox::applyStretchAlignmentToChild):
(WebCore::ScopedUnboundedBoxWithFlexBasisAsChildMainSize::ScopedUnboundedBoxWithFlexBasisAsChildMainSize): Deleted.
(WebCore::ScopedUnboundedBoxWithFlexBasisAsChildMainSize::~ScopedUnboundedBoxWithFlexBasisAsChildMainSize): Deleted.
(WebCore::RenderFlexibleBox::computeFlexBaseSizeForChild): Deleted.

  • rendering/RenderFlexibleBox.h:
  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertLengthSizing):

Source/WebKit:

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Length>::encode):
(IPC::ArgumentCoder<Length>::decode):

LayoutTests:

12:28 PM Changeset in webkit [285044] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebCore/PAL

Cherry-pick r284494. rdar://problem/84816590

REGRESSION (r284220): [PAL] TCCSPI.h should be a project header, not a private header
<https://webkit.org/b/231977>
<rdar://problem/84425384>

Reviewed by Wenson Hsieh.

  • PAL.xcodeproj/project.pbxproj:
  • Change TCCSPI.h from a private header to a project header. PAL uses a build phase script to install its headers.

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

12:02 PM Changeset in webkit [285043] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ BigSur wk1 Debug arm64 ] inspector/audit/run-accessibility.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=232322

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
11:29 AM Changeset in webkit [285042] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ BigSur wk2 Debug arm64 ] webaudio/AudioBufferSource/audiobuffersource-playbackrate.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=232500.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:53 AM Changeset in webkit [285041] by sihui_liu@apple.com
  • 25 edits in trunk

Release FileSystemStorageHandle when it is not in use
https://bugs.webkit.org/show_bug.cgi?id=232363

Reviewed by Youenn Fablet.

Source/WebCore:

When FileSystemHandle is destroyed, its corresponding FileSystemStorageHandle should be destroyed as it will
not be used any more. Also, stop creating a new FileSystemHandle or FileSystemSyncAccessHandle if context
already stops.

  • Modules/filesystemaccess/FileSystemDirectoryHandle.cpp:

(WebCore::FileSystemDirectoryHandle::create):
(WebCore::FileSystemDirectoryHandle::FileSystemDirectoryHandle):
(WebCore::FileSystemDirectoryHandle::getFileHandle):
(WebCore::FileSystemDirectoryHandle::getDirectoryHandle):
(WebCore::FileSystemDirectoryHandle::getHandle):

  • Modules/filesystemaccess/FileSystemDirectoryHandle.h:
  • Modules/filesystemaccess/FileSystemFileHandle.cpp:

(WebCore::FileSystemFileHandle::create):
(WebCore::FileSystemFileHandle::FileSystemFileHandle):
(WebCore::FileSystemFileHandle::createSyncAccessHandle):

  • Modules/filesystemaccess/FileSystemFileHandle.h:
  • Modules/filesystemaccess/FileSystemHandle.cpp:

(WebCore::FileSystemHandle::FileSystemHandle):

  • Modules/filesystemaccess/FileSystemHandle.h:
  • Modules/filesystemaccess/FileSystemStorageConnection.h:
  • Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:

(WebCore::FileSystemSyncAccessHandle::create):
(WebCore::FileSystemSyncAccessHandle::FileSystemSyncAccessHandle):

  • Modules/filesystemaccess/FileSystemSyncAccessHandle.h:
  • Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp:

(WebCore::WorkerFileSystemStorageConnection::closeHandle):

  • Modules/filesystemaccess/WorkerFileSystemStorageConnection.h:
  • Modules/storage/StorageManager.cpp:

(WebCore::StorageManager::fileSystemAccessGetDirectory):

Source/WebKit:

  • NetworkProcess/storage/FileSystemStorageHandle.cpp:

(WebKit::FileSystemStorageHandle::close):

  • NetworkProcess/storage/FileSystemStorageHandle.h:
  • NetworkProcess/storage/FileSystemStorageManager.cpp:

(WebKit::FileSystemStorageManager::closeHandle):
(WebKit::FileSystemStorageManager::connectionClosed):

  • NetworkProcess/storage/FileSystemStorageManager.h:
  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::closeHandle):

  • NetworkProcess/storage/NetworkStorageManager.h:
  • NetworkProcess/storage/NetworkStorageManager.messages.in:
  • WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp:

(WebKit::WebFileSystemStorageConnection::closeHandle):

  • WebProcess/WebCoreSupport/WebFileSystemStorageConnection.h:

LayoutTests:

  • storage/filesystemaccess/resources/sync-access-handle-basics.js:

(getDirectory): clean up existing file before test.

10:47 AM Changeset in webkit [285040] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

Layout test http/tests/websocket/tests/hybi/send-object-tostring-check.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=176030

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:41 AM Changeset in webkit [285039] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ BigSur Debug wk2 arm64 EWS-only ] media/media-source/media-source-istypesupported-case-sensitive.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=232497.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:27 AM Changeset in webkit [285038] by Darin Adler
  • 15 edits in trunk/Source

Create constants for all special frame names used in anchor target attribute values and elsewhere
https://bugs.webkit.org/show_bug.cgi?id=232488

Reviewed by Anders Carlsson.

Source/WebCore:

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick): Use isBlankTargetFrameName.

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submit): Ditto.

  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::openURLExternally): Use
blankTargetFrameName and selfTargetFrameName.

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::navigate): Ditto.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadURLIntoChildFrame): Use selfTargetFrameName.
(WebCore::FrameLoader::loadURL): Use selfTargetFrameName and blankTargetFrameName.
(WebCore::FrameLoader::loadPostRequest): Use blankTargetFrameName.
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy): Ditto.
(WebCore::createWindow): Use isBlankTargetFrameName.

  • loader/NavigationScheduler.cpp:

(WebCore::NavigationScheduler::scheduleLocationChange): Use selfTargetFrameName.

  • mathml/MathMLElement.cpp:

(WebCore::MathMLElement::defaultEventHandler): Use selfTargetFrameName.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::createWindow): Use selfTargetFrameName.
(WebCore::DOMWindow::open): Use isTopTargetFrameName and isParentTargetFrameName.

  • page/FrameTree.cpp:

(WebCore::FrameTree::uniqueChildName const): Use isBlankTargetFrameName.
(WebCore::FrameTree::find const): Use isSelfTargetFrameName, isTopTargetFrameName,
isParentTargetFrameName, and isBlankTargetFrameName.
(WebCore::blankTargetFrameName): Added.
(WebCore::selfTargetFrameName): Added.
(WebCore::isBlankTargetFrameName): Added.
(WebCore::isParentTargetFrameName): Added.
(WebCore::isSelfTargetFrameName): Added.
(WebCore::isTopTargetFrameName): Added.

  • page/FrameTree.h: Add declarations.
  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::defaultEventHandler): Use blankTargetFrameName.

Source/WTF:

  • wtf/Forward.h: Declare ASCIILiteral.
  • wtf/text/ASCIILiteral.h: Update for above.
10:20 AM Changeset in webkit [285037] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ BigSur Debug wk2 arm64 EWS ] webrtc/video-receivers.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=232492.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:17 AM Changeset in webkit [285036] by sbarati@apple.com
  • 2 edits in trunk/Source/WTF

Disable ENABLE_JIT on arm64_32
https://bugs.webkit.org/show_bug.cgi?id=232468

Reviewed by Yusuke Suzuki.

We were disabling JIT via a runtime configuration before since we haven't
yet implemented the JIT on arm64_32. However, not compiling ENABLE(JIT)
code on arm64_32 saves 11MB in the binary size of JavaScriptCore.

In my local compiles, I'm going from 24M to 13M.

  • wtf/PlatformEnable.h:
9:50 AM Changeset in webkit [285035] by Jonathan Bedard
  • 6 edits in trunk/Tools

[webkitscmpy] Assign PR to author
https://bugs.webkit.org/show_bug.cgi?id=232348
<rdar://problem/84685313>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py:

(GitHub.request): Add assignees.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.PRGenerator.create): Assign created PR to it's author.
(GitHub.PRGenerator.update): Assign modified PR to it's editor.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py: Add assignees.
9:48 AM Changeset in webkit [285034] by achristensen@apple.com
  • 2 edits in trunk/Tools

Re-enable two AppPrivacyReport tests
webkit.org/b/232166

I ran them locally on iOS simulator and they ran fine.
They were disabled during a tumultuous time, and the cause of their timeouts is likely resolved.
I'll watch the bots and see if they agree.

  • TestWebKitAPI/Tests/WebKitCocoa/AppPrivacyReport.mm:
9:46 AM Changeset in webkit [285033] by Aditya Keerthi
  • 3 edits
    2 adds in trunk

REGRESSION (r283269) disneyplus.com time remaining bar shows an extra line/bar
https://bugs.webkit.org/show_bug.cgi?id=232461
rdar://84561981

Reviewed by Antti Koivisto.

Source/WebCore:

The "time remaining" bar on disneyplus.com is implemented using a
<progress> element. Some elements, including <progress>, drop their
native appearance depending on which CSS properties are set. For
example, setting a custom background color on a <progress> element
prevents us from drawing the native progress bar. This behavior is
implemented by changing the used value of 'appearance' to 'none'.

Prior to r283269, there was no distinction between the specified and
used value for 'appearance'. The logic to set the used value of
'appearance' to 'none' resulted in the used value being exposed to
the page. In particular, getComputedStyle() returned the used value for
for 'appearance' (rather than the specified value), contrary to the
specification. To fix, r283269 split up the specified value (appearance)
and the used value (effectiveAppearance) into distinct fields in
RenderStyle.

<progress> elements are shadow roots, containing a
'-webkit-progress-inner-element' in their shadow tree. This element has
a '-webkit-appearance: inherit' declaration in the UA stylesheet. The
change in r283269 made it so that the 'none' value obtained as a result
of styling the <progress> is not inherited by
'-webkit-progress-inner-element', as it is not the specified value in
the parent style. Consequently, the '-webkit-progress-inner-element'
has 'appearance: progress-bar', causing a second bar to show up on
disneyplus.com.

To fix, remove the '-webkit-appearance: inherit' declaration for
'-webkit-progress-inner-element' in the UA stylesheet. The declaration
was originally added in r124754, to support the 'AuthorShadowDOM'
feature, but is no longer necessary as it is not possible to attach
a shadow root to <progress> elements. This change ensures that
'-webkit-progress-inner-element' has a specified/used 'appearance: none',
and does not draw an additional progress bar.

Test: fast/dom/HTMLProgressElement/progress-element-styled-drop-appearance.html

  • css/html.css:

(progress::-webkit-progress-inner-element):

LayoutTests:

Added a ref test to verify that the native progress bar is not drawn
when a <progress> element has custom styling.

Thanks to Antti Koivisto for the reduction leading to this test case.

  • fast/dom/HTMLProgressElement/progress-element-styled-drop-appearance-expected.html: Added.
  • fast/dom/HTMLProgressElement/progress-element-styled-drop-appearance.html: Added.
9:22 AM Changeset in webkit [285032] by Antti Koivisto
  • 11 edits in trunk

Make :-webkit-any() a synonym of :is()
https://bugs.webkit.org/show_bug.cgi?id=232482

Reviewed by Simon Fraser.

Source/WebCore:

:-webkit-any() is an obscure obsolete subset version of the standard :is(). It can become a full synonym.
Another obsolete version :matches() is already a full synonym.

The main difference is that :is allows complex selectors and uses forgiving parsing.

  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne const):

  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumePseudo):

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::addPseudoClassType):

LayoutTests:

  • fast/css/pseudo-any-expected.txt:
  • fast/css/pseudo-any.html:
  • fast/dom/SelectorAPI/not-supported-namespace-in-selector-expected.txt:
  • fast/dom/SelectorAPI/not-supported-namespace-in-selector.html:
  • fast/selectors/invalid-functional-pseudo-class-expected.txt:
  • fast/selectors/invalid-functional-pseudo-class.html:
8:52 AM Changeset in webkit [285031] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Enable -Wformat=2 warnings
<https://webkit.org/b/232359>
<rdar://problem/84691442>

Reviewed by Darin Adler.

  • Configurations/Base.xcconfig:

(WARNING_CFLAGS):

  • Add -Wformat=2 switch, which includes -Wformat-nonliteral.
8:47 AM Changeset in webkit [285030] by Ayumi Kojima
  • 25 edits in trunk

Unreviewed, reverting r285007.

Reverting r285007 because it caused storage/filesystemaccess
/sync-access-handle-basics-worker.html to constantly fail.

Reverted changeset:

"Release FileSystemStorageHandle when it is not in use"
https://bugs.webkit.org/show_bug.cgi?id=232363
https://commits.webkit.org/r285007

8:44 AM Changeset in webkit [285029] by Jonathan Bedard
  • 8 edits in trunk/Tools

[webkitscmpy] Add fetch and rebase
https://bugs.webkit.org/show_bug.cgi?id=232447
<rdar://problem/84770221>

Reviewed by Dewei Zhu.

To land commits, we need to be able to rebase a branch against another.
Additionally, when rebasing, we need to discard stale cache bits. This
is also true when pulling and rebasing against main.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.Cache.clear): Clear cache of a specific branch.
(Git.rebase): Rebase a branch on top of another.
(Git.fetch): Fetch specific branch ref.
(Git.pull): Use generalized fetch command, clear cache for updated branch
if that branch is not the default branch.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git.init): Add rebase mock.
(Git.rebase):

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py:

(PullRequest.main): Recompute branch-point after rebase.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(test_rebase):

8:37 AM Changeset in webkit [285028] by Chris Dumez
  • 1 edit
    1 add in trunk/LayoutTests/imported/w3c

[ iOS ] imported/w3c/web-platform-tests/dom/events/scrolling/iframe-chains.html is missing its results
https://bugs.webkit.org/show_bug.cgi?id=232484
<rdar://problem/84809167>

Unreviewed, land expected.txt for new test introduced in r285010 during the WPT resync.

  • web-platform-tests/dom/events/scrolling/iframe-chains-expected.txt: Added.
6:36 AM Changeset in webkit [285027] by youenn@apple.com
  • 22 edits
    1 copy
    2 adds in trunk/Source/WebCore

Ensure synchronized rendering of incoming audio tracks
https://bugs.webkit.org/show_bug.cgi?id=232375

Reviewed by Eric Carlson.

WebRTC incoming audio tracks are guaranteed to be synchronized based on the audio module clock.
Previously, we were mixing all audio tracks together, but we were not handling synchronization of tracks that have the same clock.
This can cause some lower quality audio rendering.
To prevent this, all WebRTC incoming audio tracks are now mixed together in a single track that is then mixed with all other non synchronized tracks.
To do so we introduce IncomingAudioMediaStreamTrackRendererUnit which will receive all incoming audio tracks.
It then sends the mix to the actual AudioMediaStreamTrackRendererUnit.
To ensure tight synchronization, we introduce AudioSampleDataSource::pullAvailableSampleChunk which reads data using the provided timestamp relative to the input offset.
We do a refactoring to make it easy to either use IncomingAudioMediaStreamTrackRendererUnit or AudioMediaStreamTrackRendererUnit by having a base class called BaseAudioMediaStreamTrackRendererUnit.

Manually tested.

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/EmptyClients.cpp:
  • platform/audio/cocoa/AudioSampleDataSource.h:
  • platform/audio/cocoa/AudioSampleDataSource.mm:
  • platform/mediastream/AudioMediaStreamTrackRenderer.cpp:
  • platform/mediastream/AudioMediaStreamTrackRenderer.h:
  • platform/mediastream/AudioTrackPrivateMediaStream.cpp:
  • platform/mediastream/RealtimeIncomingAudioSource.cpp:
  • platform/mediastream/RealtimeIncomingAudioSource.h:
  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.cpp:
  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.h:
  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h:
  • platform/mediastream/cocoa/BaseAudioMediaStreamTrackRendererUnit.h: Added.
  • platform/mediastream/cocoa/IncomingAudioMediaStreamTrackRendererUnit.cpp: Added.
  • platform/mediastream/cocoa/IncomingAudioMediaStreamTrackRendererUnit.h: Added.
  • platform/mediastream/libwebrtc/LibWebRTCAudioModule.cpp:
  • platform/mediastream/libwebrtc/LibWebRTCAudioModule.h:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
6:04 AM Changeset in webkit [285026] by aakash_jain@apple.com
  • 2 edits in trunk

Add Aakash's GitHub username to contributors.json

5:05 AM Changeset in webkit [285025] by Oriol Brufau
  • 2 edits in trunk

Add obrufau's GitHub username to contributors.json

Unreviewed.

  • metadata/contributors.json:
3:59 AM Changeset in webkit [285024] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Fix potential race in AudioMediaStreamTrackRendererCocoa::pushSamples
https://bugs.webkit.org/show_bug.cgi?id=232430

Reviewed by Eric Carlson.

In case we start a AudioMediaStreamTrackRendererCocoa, and we quickly stop it, there may be a time
where we create an AudioSampleDataSource from a background thread, then hop to main thread.
We would then register it to the rendering unit even if the AudioMediaStreamTrackRendererCocoa is cleared.
The AudioSampleDataSource would then be kept registered with no data which would be wasteful in terms of CPU.
To fix this, we keep m_dataSource but introduce a m_registeredDataSource.
m_registeredDataSource is only manipulated in main thread and is the one that is registered/unregistered to the rendering unit.
m_dataSource is only accessed from background thread.

Manually tested and covered by added assertion in AudioMediaStreamTrackRendererCocoa destructor.

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.cpp:

(WebCore::AudioMediaStreamTrackRendererCocoa::~AudioMediaStreamTrackRendererCocoa):
(WebCore::AudioMediaStreamTrackRendererCocoa::clear):
(WebCore::AudioMediaStreamTrackRendererCocoa::setRegisteredDataSource):
(WebCore::AudioMediaStreamTrackRendererCocoa::pushSamples):
(WebCore::pollSamplesCount): Deleted.

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.h:
2:50 AM Changeset in webkit [285023] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

LocalAudioMediaStreamTrackRendererInternalUnit should clip audio data
https://bugs.webkit.org/show_bug.cgi?id=232428

Reviewed by Eric Carlson.

When using a bluetooth speaker, unclipped audio data triggers distortion, contrary to built-in speakers.
To prevent this, we clip audio data just before rendering for float audio samples.

Manually tested.

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp:
2:15 AM Changeset in webkit [285022] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

AudioMediaStreamTrackRendererUnit::render should handle the case of failing to pull samples from the first source
https://bugs.webkit.org/show_bug.cgi?id=232429

Reviewed by Eric Carlson.

In case we fail to pull samples from the first source, we should copy the data of the second source,
and so on until we actually copy data. Then we can start mixing data.
In case all pulls fail, we now output silence.

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:
2:13 AM Changeset in webkit [285021] by Martin Robinson
  • 7 edits in trunk

opacity should flatten when combined with transform-style: preserve-3d
https://bugs.webkit.org/show_bug.cgi?id=73267

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-transforms/preserve-3d-flat-grouping-properties-expected.txt: Update expectations to

show newly passing test.

Source/WebCore:

No new tests. This is covered by the existing WPT test:

  • imported/w3c/web-platform-tests/css/css-transforms/preserve-3d-flat-grouping-properties.html
  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjust const):

LayoutTests:

  • compositing/geometry/preserve-3d-switching-expected.txt:
  • platform/ios/compositing/geometry/preserve-3d-switching-expected.txt:
12:23 AM Changeset in webkit [285020] by Takashi.Komori@sony.com
  • 7 edits
    1 add in trunk

WKAPI does not have any APIs to set cookie path to WKWebsiteDataStoreConfigurationRef
https://bugs.webkit.org/show_bug.cgi?id=232336

Reviewed by Alex Christensen.

Add cookie-path setting API for WKWebasiteDataStoreConfigurationRef.

Source/WebKit:

Test: CookieStorageFile.CustomPath

  • UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:

(WKWebsiteDataStoreConfigurationCopyCookieStorageFile):
(WKWebsiteDataStoreConfigurationSetCookieStorageFile):

  • UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h:
  • UIProcess/WebsiteData/curl/WebsiteDataStoreCurl.cpp:

(WebKit::WebsiteDataStore::platformSetNetworkParameters):

Tools:

  • TestWebKitAPI/PlatformPlayStation.cmake:
  • TestWebKitAPI/PlatformWin.cmake:
  • TestWebKitAPI/Tests/WebKit/CookieStorageFile.cpp: Added.

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST_F):

Note: See TracTimeline for information about the timeline view.