Timeline



Nov 15, 2021:

11:02 PM Changeset in webkit [285853] by ysuzuki@apple.com
  • 77 edits
    1 add in trunk

[libpas] Build and enable libpas on 64bit JSCOnly
https://bugs.webkit.org/show_bug.cgi?id=233097

Reviewed by Filip Pizlo.

This patch makes libpas built on 64bit Linux. And now enabling it on JSCOnly port.
libpas is built in C and tailored to the current clang. It made building libpas on
GCC hard since GCC is stricter on C languages.

  1. C does not handle const variables as constants. So libpas's config is not strictly constant in the C spec, and GCC actually rejects it. To make it built correctly, we need to build them in C++. In this patch, when building libpas via CMake, we build some libpas C files as C++.
  2. GCC C++ does not allow designated initializer for array. We work-around this problem by adding cpp_initialization_t constexpr constructors only when building these headers in C++ compiler.
  3. Atomic operations are using clang extension, so they cannot be built with GCC. This patch adds GCC version of these implementations.
  4. Add PAS_OS(DARWIN) ifdefs for Darwin specific code (e.g. malloc handling).
  5. Add explicit cast / PAS_UNUSED_PARAM since GCC emits warnings
  6. Use (unsigned long long) explicit cast for printing uint64_t via %llx / %llu since uint64_t definition is unsigned long int in GCC (while clang's one is unsigned long long).
  7. Reorder designated initializer for structures since not following to the definition ordering becomes compile error in GCC.
  8. Use uint128_t for pas_pair in GCC to avoid compile error.
  • CMakeLists.txt:
  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/BCompiler.h:
  • bmalloc/BPlatform.h:
  • bmalloc/Heap.cpp:
  • bmalloc/IsoHeapImplInlines.h:

(bmalloc::IsoHeapImpl<Config>::IsoHeapImpl):

  • libpas/src/libpas/bmalloc_heap.c:
  • libpas/src/libpas/bmalloc_heap_config.c:

(bmalloc_heap_config_activate):

  • libpas/src/libpas/bmalloc_heap_inlines.h:
  • libpas/src/libpas/jit_heap.c:
  • libpas/src/libpas/jit_heap_config.c:

(jit_page_header_for_boundary_remote):
(jit_prepare_to_enumerate):

  • libpas/src/libpas/jit_heap_config.h:
  • libpas/src/libpas/pas_basic_heap_config_enumerator_data.c:

(pas_basic_heap_config_enumerator_data_add_page_header_table):

  • libpas/src/libpas/pas_bitfit_page.c:

(pas_bitfit_page_deallocation_did_fail):

  • libpas/src/libpas/pas_bitfit_page_config_kind.c:
  • libpas/src/libpas/pas_bitfit_page_inlines.h:

(pas_bitfit_page_finish_allocation):
(pas_bitfit_page_allocate):
(pas_bitfit_page_deallocate_with_page_impl):

  • libpas/src/libpas/pas_cartesian_tree.h:

(pas_cartesian_tree_construct):

  • libpas/src/libpas/pas_compact_ptr.h:
  • libpas/src/libpas/pas_debug_spectrum.c:

(pas_debug_spectrum_dump):

  • libpas/src/libpas/pas_dyld_state.c:

(pas_dyld_is_libsystem_initialized):

  • libpas/src/libpas/pas_enumerator.c:

(pas_enumerator_record_page_payload_and_meta):

  • libpas/src/libpas/pas_epoch.c:

(pas_get_epoch):

  • libpas/src/libpas/pas_fast_large_free_heap.c:

(get_x_key_callback):
(insert_node):
(dump_heap):
(fast_write_cursor):
(fast_merge):

  • libpas/src/libpas/pas_fast_megapage_cache.c:

(table_set_by_index):

  • libpas/src/libpas/pas_fast_megapage_table.c:

(pas_fast_megapage_table_set_by_index):

  • libpas/src/libpas/pas_fast_megapage_table.h:

(pas_fast_megapage_table::pas_fast_megapage_table):

  • libpas/src/libpas/pas_generic_large_free_heap.h:

(pas_generic_large_free_heap_try_allocate):

  • libpas/src/libpas/pas_heap_config.h:
  • libpas/src/libpas/pas_heap_config_inlines.h:
  • libpas/src/libpas/pas_heap_config_kind.c:
  • libpas/src/libpas/pas_heap_config_kind.def:
  • libpas/src/libpas/pas_heap_config_kind.h:

(pas_heap_config_kind_get_config):
(pas_heap_config_kind_is_active):

  • libpas/src/libpas/pas_heap_config_utils.h:
  • libpas/src/libpas/pas_internal_config.h:
  • libpas/src/libpas/pas_intrinsic_heap_support.h:

(pas_intrinsic_heap_support::pas_intrinsic_heap_support):

  • libpas/src/libpas/pas_large_expendable_memory.h:
  • libpas/src/libpas/pas_large_free_inlines.h:

(pas_large_free_create_merged):

  • libpas/src/libpas/pas_large_sharing_pool.c:

(validate_min_heap):
(create_node):
(try_splat_impl):
(pas_large_sharing_pool_decommit_least_recently_used):
(pas_large_sharing_pool_validate):
(pas_large_sharing_pool_compute_summary):

  • libpas/src/libpas/pas_local_allocator_inlines.h:

(pas_local_allocator_scan_bits_to_set_up_free_bits):
(pas_local_allocator_try_allocate_with_free_bits):

  • libpas/src/libpas/pas_lock.h:

(pas_lock_unlock):

  • libpas/src/libpas/pas_lock_free_read_ptr_ptr_hashtable.c:

(pas_lock_free_read_ptr_ptr_hashtable_set):

  • libpas/src/libpas/pas_lock_free_read_ptr_ptr_hashtable.h:

(pas_lock_free_read_ptr_ptr_hashtable_find):

  • libpas/src/libpas/pas_min_heap.h:
  • libpas/src/libpas/pas_monotonic_time.c:

(pas_get_current_monotonic_time_nanoseconds):

  • libpas/src/libpas/pas_page_base_config_utils_inlines.h:
  • libpas/src/libpas/pas_page_malloc.c:

(pas_page_malloc_commit):
(decommit_impl):

  • libpas/src/libpas/pas_page_sharing_participant.c:

(pas_page_sharing_participant_get_parent_pool):

  • libpas/src/libpas/pas_page_sharing_pool.c:

(verify_participants):
(dump_min_heap):
(get_current_participant):
(pas_page_sharing_pool_take_least_recently_used):
(pas_physical_page_sharing_pool_scavenge):

  • libpas/src/libpas/pas_platform.h: Added.
  • libpas/src/libpas/pas_root.c:
  • libpas/src/libpas/pas_root.h:
  • libpas/src/libpas/pas_scavenger.c:

(scavenger_thread_main):

  • libpas/src/libpas/pas_scavenger.h:
  • libpas/src/libpas/pas_segregated_directory.c:

(pas_segregated_directory_get_use_epoch):

  • libpas/src/libpas/pas_segregated_directory.h:
  • libpas/src/libpas/pas_segregated_exclusive_view_inlines.h:

(pas_segregated_exclusive_view_did_start_allocating):

  • libpas/src/libpas/pas_segregated_page.c:

(pas_segregated_page_construct):
(pas_segregated_page_take_empty_granules):

  • libpas/src/libpas/pas_segregated_page.h:

(pas_segregated_page_offset_from_page_boundary_to_first_object_for_hugging_mode):
(pas_segregated_page_offset_from_page_boundary_to_end_of_last_object_for_hugging_mode):

  • libpas/src/libpas/pas_segregated_page_config_kind.c:
  • libpas/src/libpas/pas_segregated_page_config_kind.h:
  • libpas/src/libpas/pas_segregated_page_inlines.h:

(pas_segregated_page_deallocate_with_page):

  • libpas/src/libpas/pas_segregated_partial_view.c:

(pas_segregated_partial_view_set_is_in_use_for_allocation):

  • libpas/src/libpas/pas_segregated_shared_handle.c:

(pas_segregated_shared_handle_create):

  • libpas/src/libpas/pas_segregated_shared_page_directory.c:

(take_last_empty_consider_view):

  • libpas/src/libpas/pas_segregated_shared_view.c:

(compute_summary):

  • libpas/src/libpas/pas_segregated_size_directory.c:

(pas_segregated_size_directory_select_allocator_slow):
(take_last_empty_should_consider_view_parallel):
(take_last_empty_consider_view):

  • libpas/src/libpas/pas_segregated_size_directory.h:
  • libpas/src/libpas/pas_segregated_view_allocator_inlines.h:

(pas_segregated_view_will_start_allocating):

  • libpas/src/libpas/pas_simple_large_free_heap.c:

(dump_free_list):
(append):
(merge):
(simple_write_cursor):

  • libpas/src/libpas/pas_status_reporter.c:

(report_segregated_directory_contents):
(dump_large_sharing_pool_node_callback):

  • libpas/src/libpas/pas_thread_local_cache.c:

(destructor):
(allocate_cache):
(dump_thread_diagnostics):
(pas_thread_local_cache_create):
(pas_thread_local_cache_get_local_allocator_slow):
(stop_local_allocators_if_necessary_set_bit_source):
(stop_local_allocators_if_necessary_set_bit_callback):
(pas_thread_local_cache_for_all):

  • libpas/src/libpas/pas_try_allocate_intrinsic.h:
  • libpas/src/libpas/pas_utility_heap_config.c:
  • libpas/src/libpas/pas_utility_heap_config.h:
  • libpas/src/libpas/pas_utils.h:

(pas_compare_and_swap_uintptr_weak):
(pas_compare_and_swap_uintptr_strong):
(pas_compare_and_swap_bool_weak):
(pas_compare_and_swap_bool_strong):
(pas_compare_and_swap_uint8_weak):
(pas_compare_and_swap_uint16_weak):
(pas_compare_and_swap_uint32_weak):
(pas_compare_and_swap_uint32_strong):
(pas_compare_and_swap_uint64_weak):
(pas_compare_and_swap_uint64_strong):
(pas_compare_and_swap_ptr_weak):
(pas_compare_and_swap_ptr_strong):
(pas_pair_create):
(pas_compare_and_swap_pair_weak):
(pas_compare_and_swap_pair_strong):
(pas_atomic_load_pair):
(pas_atomic_store_pair):

  • libpas/src/libpas/pas_utils_prefix.h:
10:12 PM Changeset in webkit [285852] by ntim@apple.com
  • 29 edits
    1 copy
    24 moves
    6 adds
    6 deletes in trunk/LayoutTests

Re-import css/css-text-decor WPT
https://bugs.webkit.org/show_bug.cgi?id=233154

Reviewed by Cameron McCormack.

Since mismatches are now properly renamed to -expected-mismatch.html on import since bug 207175,
re-import this directory to reduce numbers of false negatives/positives.

Some tests have also been added/updated/removed since.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-text-decor/text-decoration-propagation-display-contents-expected.html: Added.
  • web-platform-tests/css/css-text-decor/text-decoration-propagation-display-contents.html: Added.
  • web-platform-tests/css/css-text-decor/text-decoration-skip-ink-001-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-001-expected.html.
  • web-platform-tests/css/css-text-decor/text-decoration-skip-ink-004-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-004-expected.html.
  • web-platform-tests/css/css-text-decor/text-decoration-skip-ink-005-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-005-expected.html.
  • web-platform-tests/css/css-text-decor/text-decoration-skip-ink-sidewayslr-001-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-sidewayslr-001-expected.html.
  • web-platform-tests/css/css-text-decor/text-decoration-skip-ink-sidewaysrl-001-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-sidewaysrl-001-expected.html.
  • web-platform-tests/css/css-text-decor/text-decoration-skip-ink-upright-001-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-upright-001-expected.html.
  • web-platform-tests/css/css-text-decor/text-decoration-skip-ink-vertical-001-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-vertical-001-expected.html.
  • web-platform-tests/css/css-text-decor/text-decoration-subelements-001-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-subelements-001-expected.html.
  • web-platform-tests/css/css-text-decor/text-decoration-thickness-001-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-001-expected.html.
  • web-platform-tests/css/css-text-decor/text-decoration-thickness-single-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-thickness-single-expected.html.
  • web-platform-tests/css/css-text-decor/text-emphasis-color-001-expected.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-color-001.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-position-above-left-002-expected.xht: Removed.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-above-right-002-expected.xht: Removed.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-below-left-002-expected.xht: Removed.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-below-right-002-expected.xht: Removed.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-over-left-001-expected.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-above-right-001-expected.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-over-left-001.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-above-left-001.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-over-left-002-expected.xht: Added.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-over-left-002.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-above-left-002.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-over-right-001-expected.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-below-left-001-expected.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-over-right-001.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-above-right-001.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-over-right-002-expected.xht: Added.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-over-right-002.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-above-right-002.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-under-left-001-expected.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-above-left-001-expected.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-under-left-001.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-below-left-001.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-under-left-002-expected.xht: Added.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-under-left-002.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-below-left-002.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-under-right-001-expected.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-below-right-001-expected.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-under-right-001.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-below-right-001.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-under-right-002-expected.xht: Added.
  • web-platform-tests/css/css-text-decor/text-emphasis-position-under-right-002.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-position-below-right-002.xht.
  • web-platform-tests/css/css-text-decor/text-emphasis-style-002-expected.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-002.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-006-expected.html: Removed.
  • web-platform-tests/css/css-text-decor/text-emphasis-style-006.html: Removed.
  • web-platform-tests/css/css-text-decor/text-emphasis-style-007-expected.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-007.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-008-expected.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-008.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-010-expected.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-010.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-012-expected.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-012.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-016-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-style-002-expected.html.
  • web-platform-tests/css/css-text-decor/text-emphasis-style-016.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-021-expected.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-021.html:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-filled-001-expected.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-filled-001.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-none-001-expected.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-none-001.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-open-001-expected.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-open-001.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-shape-001-expected.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-shape-001.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-string-001-expected.xht:
  • web-platform-tests/css/css-text-decor/text-emphasis-style-string-001.xht:
  • web-platform-tests/css/css-text-decor/text-underline-offset-001-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-underline-offset-001-expected.html.
  • web-platform-tests/css/css-text-decor/text-underline-offset-negative-expected-mismatch.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-underline-offset-negative-expected.html.
  • web-platform-tests/css/css-text-decor/w3c-import.log:

LayoutTests:

10:01 PM Changeset in webkit [285851] by Patrick Angle
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles: Autocomplete should support mid-line completions
https://bugs.webkit.org/show_bug.cgi?id=227411

Reviewed by Devin Rousso.

Autocompletion for CSS property values was lacking in the ability to perform mid-line completions, including
within functions, and a lack of support for multi-line CSS property values. This resolves those pain points by
making SpreadsheetTextField multi-line aware and allowing mid-line autocompletion.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
(WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):

  • UserInterface/Views/SpreadsheetTextField.js:

(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype.valueWithoutSuggestion):
Because suggestions can occur anywhere within the value, we need to iterate through each of the nodes and
collect the text of any of them that are not the completion suggestion.

(WI.SpreadsheetTextField.prototype.set suggestionHint):
When removing the suggestion hint element, we should recombine the text nodes we may have split upon insertion
to prevent the text content from becoming endlessly fragmented into multiple text nodes unnecessarily.

(WI.SpreadsheetTextField.prototype.startEditing):
Reset the last known caret position when editing starts so that we don't mistake keys that are already down as
having moved the cursor to its initial position.

(WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
We should only attempt to reattach the suggestion hint element if we have a suggestion hint to show, otherwise
we could end up with a phantom empty suggestion hint that isn't properly placed later.

(WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
Updated to use existing completion committing path to reduce duplicated logic.

(WI.SpreadsheetTextField.prototype._handleMouseDown):
When the user clicks inside the text field while suggestions are visible treat that as intent to stop
autocompletion similar to the escape key, since the new cursor location could be anywhere in the text field.
This behavior also matches other code editors like Xcode, where clicking outside a completion popup will dismiss
the completions list.

(WI.SpreadsheetTextField.prototype._handleKeyDown):
Keep track of where the caret was as well as if the the key event was handled by the suggestion view at the time
a key is pressed so that we can later compare the position to that of when the key is released to determine if
completions should be discarded.

(WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
We can no longer assume that the current selection's offset will match the value's length, as the offset could
be on any line, or the suggestion could be in middle of a line. Because a suggestionHint only contains text when
we are in middle of autocompletion, it alone is an indicator that pressing the right arrow key should commit the
completion. document.execCommand is deprecated, so instead we now use the existing completion committing path
to reduce duplicated logic here.

Note that the left arrow key is still explicitly handled for dismissing autocompletion, as the new mechanism for
dismissing autocompletion won't trigger unless the caret has moved, and the caret will not move if you press the
left arrow key at the start of the text field.

(WI.SpreadsheetTextField.prototype._handleKeyUp):
When a key is released, we should check to see if the caret has moved as a result of the keystroke that we have
not already explicitly handled. If it has moved and was not handled, we dismiss the autocompletion suggestions.

(WI.SpreadsheetTextField.prototype._handleInput):

(WI.SpreadsheetTextField.prototype._updateCompletions):
Provide the current caret position to the completion provided.

(WI.SpreadsheetTextField.prototype._showSuggestionsView):
In order to correctly align the completion list with the current text content, it must be offset from the caret
position excluding the current prefix.

(WI.SpreadsheetTextField.prototype._getCaretPosition):
Added to get the index of the caret in the complete text value, accounting for multi-line values and mid-line
suggestions.

(WI.SpreadsheetTextField.prototype._getCaretRect):

(WI.SpreadsheetTextField.prototype._rangeAtCaretPosition):
Find the range for a caret at the given position. This compliments _getCaretPosition, and allows us to count
back some number of characters and create a range of which we later get the client rectangle.

(WI.SpreadsheetTextField.prototype._applyCompletionHint):
Add optional support for updating the caret position to be at the end of the newly inserted text.

(WI.SpreadsheetTextField.prototype._combineEditorElementChildren):
Added to handle combining the fragmented text nodes (and possibly a suggestion hint element) back into a single
text node while maintaining the current cursor position or optionally moving the cursor to a new location (e.g.
the end of a completion).

(WI.SpreadsheetTextField.prototype._reAttachSuggestionHint):
Now that completions are not guaranteed to be at the end of the value, we may need to split the text node to
insert the suggestion hint node.

7:48 PM Changeset in webkit [285850] by ysuzuki@apple.com
  • 4 edits
    1 add in trunk

[JSC] Use operation path when PutByVal child1 is not speculated as a Cell
https://bugs.webkit.org/show_bug.cgi?id=233147
rdar://85344310

Reviewed by Mark Lam.

JSTests:

  • stress/put-by-val-slow-dfg.js: Added.

(foo):

Source/JavaScriptCore:

r285530 removed non CellUse / non KnownCellUse case incorrectly (when we do not have Cell edge,
then we should use the slow operation path). This patch recovers it.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePutByVal):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):

7:20 PM Changeset in webkit [285849] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r285812.
https://bugs.webkit.org/show_bug.cgi?id=233162

Introduced test failures

Reverted changeset:

"[macOS][GPUP] Add telemetry for syscalls"
https://bugs.webkit.org/show_bug.cgi?id=232888
https://commits.webkit.org/r285812

7:13 PM Changeset in webkit [285848] by Russell Epstein
  • 1 copy in tags/Safari-612.3.6.0.2

Tag Safari-612.3.6.0.2.

6:44 PM Changeset in webkit [285847] by Russell Epstein
  • 1 copy in tags/Safari-612.3.6.1.2

Tag Safari-612.3.6.1.2.

6:11 PM Changeset in webkit [285846] by weinig@apple.com
  • 13 edits
    1 copy
    11 adds in trunk/Source

Add another <model> backend backed by SceneKit to prove out ModelPlayer infrastructure a bit more
https://bugs.webkit.org/show_bug.cgi?id=233112

Reviewed by Dean Jackson.

Source/WebCore:

Adds basic SceneKit based ModelPlayer implementation. Like the ARKit player, this one
also requires writing the USD file to a temporary file as SceneKit does not support
loading USD files from NSData, and therefore is not actually something that can be used
for production yet.

The player is backed by a SceneKitModel class, which is created via a SceneKitModelLoader.
Both SceneKitModel and SceneKitModelLoader are abstract so that different types of models
can be supported. Currently, there is only a USD loader implemented for parity with the
ARKit based implementation.

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

Add new files.

  • Modules/model-element/scenekit: Added.
  • Modules/model-element/scenekit/SceneKitModel.h: Added.
  • Modules/model-element/scenekit/SceneKitModel.mm: Added.

Abstract base class for loader specific implementations.

  • Modules/model-element/scenekit/SceneKitModelLoader.h: Added.
  • Modules/model-element/scenekit/SceneKitModelLoader.mm: Added.

(WebCore::loadSceneKitModel):
Entry point where different loaders can be referenced for different
file types. As noted above, currenly only a USD loader is implementend.

  • Modules/model-element/scenekit/SceneKitModelLoaderClient.h: Added.
  • Modules/model-element/scenekit/SceneKitModelLoaderClient.mm: Added.

Interface to pass state back to whatever requested the load.

  • Modules/model-element/scenekit/SceneKitModelLoaderUSD.h: Added.
  • Modules/model-element/scenekit/SceneKitModelLoaderUSD.mm: Added.

Loads USD file into a SCNScene which the client can attach to a
renderer (e.g. the SCNMetalLayer).

  • Modules/model-element/scenekit/SceneKitModelPlayer.h: Added.
  • Modules/model-element/scenekit/SceneKitModelPlayer.mm: Added.

The SceneKitModelPlayer uses loadSceneKitModel() to load and build
a SCNScene asynchonously that it then attaches to its SCNMetalLayer.

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/SceneKitSPI.h: Added.

Adds forward declaration of SCNMetalLayer SPI so SceneKit can be used
without an NSView/UIView.

Source/WebKit:

Add support for instantiating the new SceneKit backed ModelPlayer.

If both ARKit based ModelPlayer and SceneKit based ModelPlayer are enabled,
the ARKit one wins.

  • WebProcess/Model/WebModelPlayerProvider.cpp:

(WebKit::WebModelPlayerProvider::createModelPlayer):
Add support for creating a SceneKit based ModelPlayer and add checks
for whether the backend is enabled.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::useARKitForModel const):
(WebKit::WebPage::useSceneKitForModel const):
Add bits to store which <model> backends are enabled.

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Add some internal settings to enable/disable the ARKit and SceneKit based
<model> backends.

  • wtf/PlatformHave.h:

Add HAVE macro for SceneKit. Only enabled for macOS at the moment, but could
probably be enabled for iOS if it is useful.

5:42 PM Changeset in webkit [285845] by Russell Epstein
  • 4 edits in branches/safari-613.1.9-branch/Source

Cherry-pick r285828. rdar://problem/85341122

Unreviewed, fix the internal iOS 15 build

Source/WebCore/PAL:

In the internal iOS 15 SDK, <UIKit/NSTextList.h> does not define NSTextListMarkerFormat. Add a separate SDK
version check instead and only attempt to soft-link these constants if we're compiling against an SDK that we
know exports these symbols.

  • pal/spi/cocoa/NSAttributedStringSPI.h:

Source/WTF:

Add a new compile-time flag.

  • wtf/PlatformHave.h:

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

5:42 PM Changeset in webkit [285844] by Russell Epstein
  • 2 edits in branches/safari-613.1.9-branch/Source/WebCore/PAL

Cherry-pick r285811. rdar://problem/85341122

Declare NSTextListMarker* as type NSTextListMarkerFormat when soft-linking
https://bugs.webkit.org/show_bug.cgi?id=233064
rdar://85341122

Reviewed by Tim Horton.

Followup to r285744. Avoid build errors due to defining these constants as a different type of symbol
(NSString * vs. NSTextListMarkerFormat). To address this, we directly import NSTextList.h if it's available in
the SDK; otherwise, fall back to defining NSTextListMarkerFormat. In both cases, we need to keep soft linking
each of these constants, since WebCore cannot explicitly link against UIKit.

  • pal/spi/cocoa/NSAttributedStringSPI.h:

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

5:20 PM Changeset in webkit [285843] by ntim@apple.com
  • 2 edits in trunk/LayoutTests

Remove redundant [ Pass ] from TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=233157

Reviewed by Cameron McCormack.

5:07 PM Changeset in webkit [285842] by Russell Epstein
  • 1 copy in tags/Safari-613.1.8.2

Tag Safari-613.1.8.2.

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

_AXSCopyPathForAccessibilityBundle is going to be deprecated.
https://bugs.webkit.org/show_bug.cgi?id=233081

Patch by Eric Liang <ericliang@apple.com> on 2021-11-15
Reviewed by Andres Gonzalez.

To support macOS Accessibility v2 runtime, on macOS there are two places where bundles can live. By doing so, _AXSCopyPathForAccessibilityBundle will going to be deprecated because it won’t always return the correct path you would expect.

Source/WebKit:

  • Platform/spi/Cocoa/AccessibilitySupportSPI.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::webProcessLoaderAccessibilityBundlePath):

Source/WTF:

  • wtf/PlatformHave.h:
4:25 PM Changeset in webkit [285840] by Russell Epstein
  • 5 edits in branches/safari-613.1.9-branch

Cherry-pick r285827. rdar://problem/85391118

Revert r285235
https://bugs.webkit.org/show_bug.cgi?id=233142

Unreviewed.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-backgrounds/parsing/border-radius-valid-expected.txt:

Source/WebCore:

Causes crash with simple repro

<div id=t style="border-radius: unset"></div>
<script>
t.style.borderRadius;
</script>

  • css/StyleProperties.cpp: (WebCore::StyleProperties::getPropertyValue const): (WebCore::StyleProperties::borderRadiusValue const): Deleted.
  • css/StyleProperties.h:

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

4:07 PM Changeset in webkit [285839] by Fujii Hironori
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Layers Tab: the position of composited layer with box-shadow is wrong
https://bugs.webkit.org/show_bug.cgi?id=233026

Reviewed by Devin Rousso.

If an element has box-shadow, Layers Tab showed the composited
layer positioned wrongly. It assumed the composited layer position
was same with its element position. This isn't true. If an element
has box-shadow, its composited layer includes the surrounding
box-shadow.

  • UserInterface/Models/Layer.js:

(WI.Layer):

  • UserInterface/Views/Layers3DContentView.js:

(WI.Layers3DContentView.prototype._updateLayers):
(WI.Layers3DContentView.prototype._createLayerMesh):

2:44 PM Changeset in webkit [285838] by Takashi.Komori@sony.com
  • 6 edits in trunk/Source/WebCore

[Curl] Security information sometimes do not appear in inspector network tab
https://bugs.webkit.org/show_bug.cgi?id=232971

Reviewed by Fujii Hironori.

Get certificate information from SSL context when CurlSSLVerifier is empty.

No tests yet.

  • platform/network/curl/CertificateInfo.h:
  • platform/network/curl/CurlContext.cpp:

(WebCore:: const):
(WebCore::CurlHandle::addExtraNetworkLoadMetrics):
(WebCore::CurlHandle::certificateInfo const):

  • platform/network/curl/CurlContext.h:
  • platform/network/curl/OpenSSLHelper.cpp:

(OpenSSL::StackOfX509::StackOfX509):
(OpenSSL::StackOfX509::~StackOfX509):
(OpenSSL::pemDataFromCtx):
(OpenSSL::createCertificateInfo):

  • platform/network/curl/OpenSSLHelper.h:
2:41 PM Changeset in webkit [285837] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Add helper to add CSS property with implicit default
https://bugs.webkit.org/show_bug.cgi?id=233108

Patch by Kiet Ho <Kiet Ho> on 2021-11-15
Reviewed by Myles C. Maxfield.

Add a helper in CSSPropertyParser to add a property with implicit default. This helper
accepts a RefPtr<> value and a Ref<> default. If the value is a null pointer, the
default is added, and the implicit flag is set. Otherwise, the value is added. This is
useful for parsing shorthands, because the CSS spec requires that missing value be
set to its default value, and WebCore additionally requires the implicit flag to be set.
This helper handles both of them.

No functional changes; no tests needed.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::addPropertyWithImplicitDefault):
(WebCore::CSSPropertyParser::consumeTransformOrigin):
(WebCore::CSSPropertyParser::consumeFont):
(WebCore::CSSPropertyParser::consumeFontVariantShorthand):
(WebCore::CSSPropertyParser::consumeColumns):
(WebCore::CSSPropertyParser::consumeShorthandGreedily):
(WebCore::CSSPropertyParser::consumeBorderImage):

  • css/parser/CSSPropertyParser.h:
2:25 PM Changeset in webkit [285836] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

[iOS] Adopt -[AVAudioSession setAuditTokensForProcessAssertion:]
https://bugs.webkit.org/show_bug.cgi?id=232909
<rdar://68184444>

Reviewed by Eric Carlson.

Re-declare -setAuditTokensForProcessAssertion in APPLE_INTERNAL_SDK section.

  • pal/spi/cocoa/AVFoundationSPI.h:
2:16 PM Changeset in webkit [285835] by Russell Epstein
  • 4 edits in branches/safari-612.3.6.1-branch/Source/WebCore

Apply patch. rdar://problem/83971417

2:16 PM Changeset in webkit [285834] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-612.3.6.1-branch

Cherry-pick r285728. rdar://problem/85236241

[Web Animations] Accelerated animations with a single keyframe don't account for prior forward-filling animations
https://bugs.webkit.org/show_bug.cgi?id=233041
<rdar://problem/85236241>

Reviewed by Dean Jackson.

Source/WebCore:

Test: webanimations/accelerated-animation-after-forward-filling-animation.html

When starting an accelerated animation, we would fill any implicit keyframes based on the unanimated style.
We now also apply all animations below this animation in the target's effect stack such that a previous
forward-filling animation is accounted for.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::applyPendingAcceleratedActions):

LayoutTests:

Add a new test that runs a forward-filling animation for transform, waits for its completion,
then runs another transform animation with an implicit initial keyframe, ensuring that the
result of the first forward-filling animation is accounted for when computing the initial
keyframe.

This test would fail prior to this patch.

  • webanimations/accelerated-animation-after-forward-filling-animation-expected.html: Added.
  • webanimations/accelerated-animation-after-forward-filling-animation.html: Added.

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

2:16 PM Changeset in webkit [285833] by Russell Epstein
  • 8 edits in branches/safari-612.3.6.1-branch/Source

Versioning.

WebKit-7612.3.6.1.2

2:07 PM Changeset in webkit [285832] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-612.3.6.0-branch

Cherry-pick r285728. rdar://problem/85236241

[Web Animations] Accelerated animations with a single keyframe don't account for prior forward-filling animations
https://bugs.webkit.org/show_bug.cgi?id=233041
<rdar://problem/85236241>

Reviewed by Dean Jackson.

Source/WebCore:

Test: webanimations/accelerated-animation-after-forward-filling-animation.html

When starting an accelerated animation, we would fill any implicit keyframes based on the unanimated style.
We now also apply all animations below this animation in the target's effect stack such that a previous
forward-filling animation is accounted for.

  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::applyPendingAcceleratedActions):

LayoutTests:

Add a new test that runs a forward-filling animation for transform, waits for its completion,
then runs another transform animation with an implicit initial keyframe, ensuring that the
result of the first forward-filling animation is accounted for when computing the initial
keyframe.

This test would fail prior to this patch.

  • webanimations/accelerated-animation-after-forward-filling-animation-expected.html: Added.
  • webanimations/accelerated-animation-after-forward-filling-animation.html: Added.

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

2:06 PM Changeset in webkit [285831] by mmaxfield@apple.com
  • 2 edits
    49 adds in trunk/Source/WebCore/PAL

[WebGPU] [Cocoa] Connect WebCore & PAL to WebGPU.framework
https://bugs.webkit.org/show_bug.cgi?id=233106

Reviewed by Dean Jackson.

This adds an implementation of WebGPU's virtual interfaces on top of WebGPU.framework.
That framework's headers almost exactly match the WebGPU API, so the connections are
mostly mechanical. There's just a bunch of marshalling code to convert between
descriptor and structs from WebCore's interface to WebGPU.framework's
descriptors/structs.

This uses the same "convertToBacking" convention, where functions that convert from the
higher-level WebCore types to the lower-level WebGPU.framework types are named
"convertToBacking()". Unfortunately, the WebGPU API takes many of these structs by
non-const reference, and the structs are nested by non-const reference, which means I
can't just have simple 1-in-1-out converter functions for every struct, since the
inner structs have to be referenced by-reference and therefore have to be in-scope. This
means that the simple enum and flags types use convertToBacking(), but most of the
structs have to be converted at their use site. Luckily, almost all of these structs
only have a single use site, so there isn't much duplication.

For now, this implementation is Cocoa-only, because in order for these calls to
WebGPU.framework to be legal, WebCore has to link with an implementation of those
functions. The Cocoa ports are the only ones which actually have an implementation of
those functions, so those are the only ports which can actually compile this code. If
the other ports want to link with Dawn or WGPU, this code should be (mostly) usable
out-of-the-box for them. I say "mostly" because the header that's shared between Dawn,
WGPU, and WebGPU.framework isn't finalized yet. As such, this implementation relies on
functions from WebGPUExt.h, which is an additional header (that only exists in
WebGPU.framework) that adds the missing pieces.

  • PAL.xcodeproj/project.pbxproj:
  • pal/graphics/WebGPU/Impl/WebGPUAdapterImpl.cpp: Added.

(PAL::WebGPU::adapterName):
(PAL::WebGPU::supportedFeatures):
(PAL::WebGPU::supportedLimits):
(PAL::WebGPU::isFallbackAdapter):
(PAL::WebGPU::AdapterImpl::AdapterImpl):
(PAL::WebGPU::AdapterImpl::~AdapterImpl):
(PAL::WebGPU::requestDeviceCallback):
(PAL::WebGPU::AdapterImpl::requestDevice):
(PAL::WebGPU::AdapterImpl::requestDeviceCallback):

  • pal/graphics/WebGPU/Impl/WebGPUAdapterImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUBindGroupImpl.cpp: Added.

(PAL::WebGPU::BindGroupImpl::BindGroupImpl):
(PAL::WebGPU::BindGroupImpl::~BindGroupImpl):
(PAL::WebGPU::BindGroupImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUBindGroupImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUBindGroupLayoutImpl.cpp: Added.

(PAL::WebGPU::BindGroupLayoutImpl::BindGroupLayoutImpl):
(PAL::WebGPU::BindGroupLayoutImpl::~BindGroupLayoutImpl):
(PAL::WebGPU::BindGroupLayoutImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUBindGroupLayoutImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUBufferImpl.cpp: Added.

(PAL::WebGPU::BufferImpl::BufferImpl):
(PAL::WebGPU::BufferImpl::~BufferImpl):
(PAL::WebGPU::mapCallback):
(PAL::WebGPU::BufferImpl::mapAsync):
(PAL::WebGPU::BufferImpl::mapCallback):
(PAL::WebGPU::BufferImpl::getMappedRange):
(PAL::WebGPU::BufferImpl::unmap):
(PAL::WebGPU::BufferImpl::destroy):
(PAL::WebGPU::BufferImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUBufferImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUCommandBufferImpl.cpp: Added.

(PAL::WebGPU::CommandBufferImpl::CommandBufferImpl):
(PAL::WebGPU::CommandBufferImpl::~CommandBufferImpl):
(PAL::WebGPU::CommandBufferImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUCommandBufferImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUCommandEncoderImpl.cpp: Added.

(PAL::WebGPU::CommandEncoderImpl::CommandEncoderImpl):
(PAL::WebGPU::CommandEncoderImpl::~CommandEncoderImpl):
(PAL::WebGPU::CommandEncoderImpl::beginRenderPass):
(PAL::WebGPU::CommandEncoderImpl::beginComputePass):
(PAL::WebGPU::CommandEncoderImpl::copyBufferToBuffer):
(PAL::WebGPU::CommandEncoderImpl::copyBufferToTexture):
(PAL::WebGPU::CommandEncoderImpl::copyTextureToBuffer):
(PAL::WebGPU::CommandEncoderImpl::copyTextureToTexture):
(PAL::WebGPU::CommandEncoderImpl::fillBuffer):
(PAL::WebGPU::CommandEncoderImpl::pushDebugGroup):
(PAL::WebGPU::CommandEncoderImpl::popDebugGroup):
(PAL::WebGPU::CommandEncoderImpl::insertDebugMarker):
(PAL::WebGPU::CommandEncoderImpl::writeTimestamp):
(PAL::WebGPU::CommandEncoderImpl::resolveQuerySet):
(PAL::WebGPU::CommandEncoderImpl::finish):
(PAL::WebGPU::CommandEncoderImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUCommandEncoderImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUComputePassEncoderImpl.cpp: Added.

(PAL::WebGPU::ComputePassEncoderImpl::ComputePassEncoderImpl):
(PAL::WebGPU::ComputePassEncoderImpl::~ComputePassEncoderImpl):
(PAL::WebGPU::ComputePassEncoderImpl::setPipeline):
(PAL::WebGPU::ComputePassEncoderImpl::dispatch):
(PAL::WebGPU::ComputePassEncoderImpl::dispatchIndirect):
(PAL::WebGPU::ComputePassEncoderImpl::beginPipelineStatisticsQuery):
(PAL::WebGPU::ComputePassEncoderImpl::endPipelineStatisticsQuery):
(PAL::WebGPU::ComputePassEncoderImpl::endPass):
(PAL::WebGPU::ComputePassEncoderImpl::setBindGroup):
(PAL::WebGPU::ComputePassEncoderImpl::pushDebugGroup):
(PAL::WebGPU::ComputePassEncoderImpl::popDebugGroup):
(PAL::WebGPU::ComputePassEncoderImpl::insertDebugMarker):
(PAL::WebGPU::ComputePassEncoderImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUComputePassEncoderImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUComputePipelineImpl.cpp: Added.

(PAL::WebGPU::ComputePipelineImpl::ComputePipelineImpl):
(PAL::WebGPU::ComputePipelineImpl::~ComputePipelineImpl):
(PAL::WebGPU::ComputePipelineImpl::getBindGroupLayout):
(PAL::WebGPU::ComputePipelineImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUComputePipelineImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUConvertToBacking.cpp: Added.

(PAL::WebGPU::convertToBacking):
(PAL::WebGPU::convertBufferUsageFlagsToBacking):
(PAL::WebGPU::convertColorWriteFlagsToBacking):
(PAL::WebGPU::convertMapModeFlagsToBacking):
(PAL::WebGPU::convertShaderStageFlagsToBacking):
(PAL::WebGPU::convertTextureUsageFlagsToBacking):

  • pal/graphics/WebGPU/Impl/WebGPUConvertToBacking.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.cpp: Added.

(PAL::WebGPU::DeviceImpl::DeviceImpl):
(PAL::WebGPU::DeviceImpl::~DeviceImpl):
(PAL::WebGPU::DeviceImpl::destroy):
(PAL::WebGPU::DeviceImpl::createBuffer):
(PAL::WebGPU::DeviceImpl::createTexture):
(PAL::WebGPU::DeviceImpl::createSampler):
(PAL::WebGPU::DeviceImpl::importExternalTexture):
(PAL::WebGPU::DeviceImpl::createBindGroupLayout):
(PAL::WebGPU::DeviceImpl::createPipelineLayout):
(PAL::WebGPU::DeviceImpl::createBindGroup):
(PAL::WebGPU::DeviceImpl::createShaderModule):
(PAL::WebGPU::convertToBacking):
(PAL::WebGPU::DeviceImpl::createComputePipeline):
(PAL::WebGPU::DeviceImpl::createRenderPipeline):
(PAL::WebGPU::createComputePipelineAsyncCallback):
(PAL::WebGPU::DeviceImpl::createComputePipelineAsync):
(PAL::WebGPU::DeviceImpl::createComputePipelineAsyncCallback):
(PAL::WebGPU::createRenderPipelineAsyncCallback):
(PAL::WebGPU::DeviceImpl::createRenderPipelineAsync):
(PAL::WebGPU::DeviceImpl::createRenderPipelineAsyncCallback):
(PAL::WebGPU::DeviceImpl::createCommandEncoder):
(PAL::WebGPU::DeviceImpl::createRenderBundleEncoder):
(PAL::WebGPU::DeviceImpl::createQuerySet):
(PAL::WebGPU::DeviceImpl::pushErrorScope):
(PAL::WebGPU::popErrorScopeCallback):
(PAL::WebGPU::DeviceImpl::popErrorScope):
(PAL::WebGPU::DeviceImpl::popErrorScopeCallback):
(PAL::WebGPU::DeviceImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUExternalTextureImpl.cpp: Added.

(PAL::WebGPU::ExternalTextureImpl::ExternalTextureImpl):
(PAL::WebGPU::ExternalTextureImpl::~ExternalTextureImpl):
(PAL::WebGPU::ExternalTextureImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUExternalTextureImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUImpl.cpp: Added.

(PAL::WebGPU::GPUImpl::GPUImpl):
(PAL::WebGPU::GPUImpl::~GPUImpl):
(PAL::WebGPU::requestAdapterCallback):
(PAL::WebGPU::GPUImpl::requestAdapter):
(PAL::WebGPU::GPUImpl::requestAdapterCallback):

  • pal/graphics/WebGPU/Impl/WebGPUImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUPipelineLayoutImpl.cpp: Added.

(PAL::WebGPU::PipelineLayoutImpl::PipelineLayoutImpl):
(PAL::WebGPU::PipelineLayoutImpl::~PipelineLayoutImpl):
(PAL::WebGPU::PipelineLayoutImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUPipelineLayoutImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUQuerySetImpl.cpp: Added.

(PAL::WebGPU::QuerySetImpl::QuerySetImpl):
(PAL::WebGPU::QuerySetImpl::~QuerySetImpl):
(PAL::WebGPU::QuerySetImpl::destroy):
(PAL::WebGPU::QuerySetImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUQuerySetImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUQueueImpl.cpp: Added.

(PAL::WebGPU::QueueImpl::QueueImpl):
(PAL::WebGPU::QueueImpl::~QueueImpl):
(PAL::WebGPU::QueueImpl::submit):
(PAL::WebGPU::onSubmittedWorkDoneCallback):
(PAL::WebGPU::QueueImpl::onSubmittedWorkDone):
(PAL::WebGPU::QueueImpl::onSubmittedWorkDoneCallback):
(PAL::WebGPU::QueueImpl::writeBuffer):
(PAL::WebGPU::QueueImpl::writeTexture):
(PAL::WebGPU::QueueImpl::copyExternalImageToTexture):
(PAL::WebGPU::QueueImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUQueueImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPURenderBundleEncoderImpl.cpp: Added.

(PAL::WebGPU::RenderBundleEncoderImpl::RenderBundleEncoderImpl):
(PAL::WebGPU::RenderBundleEncoderImpl::~RenderBundleEncoderImpl):
(PAL::WebGPU::RenderBundleEncoderImpl::setPipeline):
(PAL::WebGPU::RenderBundleEncoderImpl::setIndexBuffer):
(PAL::WebGPU::RenderBundleEncoderImpl::setVertexBuffer):
(PAL::WebGPU::RenderBundleEncoderImpl::draw):
(PAL::WebGPU::RenderBundleEncoderImpl::drawIndexed):
(PAL::WebGPU::RenderBundleEncoderImpl::drawIndirect):
(PAL::WebGPU::RenderBundleEncoderImpl::drawIndexedIndirect):
(PAL::WebGPU::RenderBundleEncoderImpl::setBindGroup):
(PAL::WebGPU::RenderBundleEncoderImpl::pushDebugGroup):
(PAL::WebGPU::RenderBundleEncoderImpl::popDebugGroup):
(PAL::WebGPU::RenderBundleEncoderImpl::insertDebugMarker):
(PAL::WebGPU::RenderBundleEncoderImpl::finish):
(PAL::WebGPU::RenderBundleEncoderImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPURenderBundleEncoderImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPURenderBundleImpl.cpp: Added.

(PAL::WebGPU::RenderBundleImpl::RenderBundleImpl):
(PAL::WebGPU::RenderBundleImpl::~RenderBundleImpl):
(PAL::WebGPU::RenderBundleImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPURenderBundleImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPURenderPassEncoderImpl.cpp: Added.

(PAL::WebGPU::RenderPassEncoderImpl::RenderPassEncoderImpl):
(PAL::WebGPU::RenderPassEncoderImpl::~RenderPassEncoderImpl):
(PAL::WebGPU::RenderPassEncoderImpl::setPipeline):
(PAL::WebGPU::RenderPassEncoderImpl::setIndexBuffer):
(PAL::WebGPU::RenderPassEncoderImpl::setVertexBuffer):
(PAL::WebGPU::RenderPassEncoderImpl::draw):
(PAL::WebGPU::RenderPassEncoderImpl::drawIndexed):
(PAL::WebGPU::RenderPassEncoderImpl::drawIndirect):
(PAL::WebGPU::RenderPassEncoderImpl::drawIndexedIndirect):
(PAL::WebGPU::RenderPassEncoderImpl::setBindGroup):
(PAL::WebGPU::RenderPassEncoderImpl::pushDebugGroup):
(PAL::WebGPU::RenderPassEncoderImpl::popDebugGroup):
(PAL::WebGPU::RenderPassEncoderImpl::insertDebugMarker):
(PAL::WebGPU::RenderPassEncoderImpl::setViewport):
(PAL::WebGPU::RenderPassEncoderImpl::setScissorRect):
(PAL::WebGPU::RenderPassEncoderImpl::setBlendConstant):
(PAL::WebGPU::RenderPassEncoderImpl::setStencilReference):
(PAL::WebGPU::RenderPassEncoderImpl::beginOcclusionQuery):
(PAL::WebGPU::RenderPassEncoderImpl::endOcclusionQuery):
(PAL::WebGPU::RenderPassEncoderImpl::beginPipelineStatisticsQuery):
(PAL::WebGPU::RenderPassEncoderImpl::endPipelineStatisticsQuery):
(PAL::WebGPU::RenderPassEncoderImpl::executeBundles):
(PAL::WebGPU::RenderPassEncoderImpl::endPass):
(PAL::WebGPU::RenderPassEncoderImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPURenderPassEncoderImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPURenderPipelineImpl.cpp: Added.

(PAL::WebGPU::RenderPipelineImpl::RenderPipelineImpl):
(PAL::WebGPU::RenderPipelineImpl::~RenderPipelineImpl):
(PAL::WebGPU::RenderPipelineImpl::getBindGroupLayout):
(PAL::WebGPU::RenderPipelineImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPURenderPipelineImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUSamplerImpl.cpp: Added.

(PAL::WebGPU::SamplerImpl::SamplerImpl):
(PAL::WebGPU::SamplerImpl::~SamplerImpl):
(PAL::WebGPU::SamplerImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUSamplerImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUShaderModuleImpl.cpp: Added.

(PAL::WebGPU::ShaderModuleImpl::ShaderModuleImpl):
(PAL::WebGPU::ShaderModuleImpl::~ShaderModuleImpl):
(PAL::WebGPU::ShaderModuleImpl::compilationInfo):
(PAL::WebGPU::ShaderModuleImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUShaderModuleImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUTextureImpl.cpp: Added.

(PAL::WebGPU::TextureImpl::TextureImpl):
(PAL::WebGPU::TextureImpl::~TextureImpl):
(PAL::WebGPU::TextureImpl::createView const):
(PAL::WebGPU::TextureImpl::destroy):
(PAL::WebGPU::TextureImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUTextureImpl.h: Added.
  • pal/graphics/WebGPU/Impl/WebGPUTextureViewImpl.cpp: Added.

(PAL::WebGPU::TextureViewImpl::TextureViewImpl):
(PAL::WebGPU::TextureViewImpl::~TextureViewImpl):
(PAL::WebGPU::TextureViewImpl::setLabelInternal):

  • pal/graphics/WebGPU/Impl/WebGPUTextureViewImpl.h: Added.
2:02 PM Changeset in webkit [285830] by Russell Epstein
  • 8 edits in branches/safari-612.3.6.0-branch/Source

Versioning.

WebKit-7612.3.6.0.2

1:46 PM Changeset in webkit [285829] by Russell Epstein
  • 4 edits in branches/safari-613.1.8-branch/Source

Cherry-pick r285828. rdar://problem/85427036

Unreviewed, fix the internal iOS 15 build

Source/WebCore/PAL:

In the internal iOS 15 SDK, <UIKit/NSTextList.h> does not define NSTextListMarkerFormat. Add a separate SDK
version check instead and only attempt to soft-link these constants if we're compiling against an SDK that we
know exports these symbols.

  • pal/spi/cocoa/NSAttributedStringSPI.h:

Source/WTF:

Add a new compile-time flag.

  • wtf/PlatformHave.h:

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

1:40 PM Changeset in webkit [285828] by Wenson Hsieh
  • 4 edits in trunk/Source

Unreviewed, fix the internal iOS 15 build

Source/WebCore/PAL:

In the internal iOS 15 SDK, <UIKit/NSTextList.h> does not define NSTextListMarkerFormat. Add a separate SDK
version check instead and only attempt to soft-link these constants if we're compiling against an SDK that we
know exports these symbols.

  • pal/spi/cocoa/NSAttributedStringSPI.h:

Source/WTF:

Add a new compile-time flag.

  • wtf/PlatformHave.h:
1:18 PM Changeset in webkit [285827] by Antti Koivisto
  • 5 edits in trunk

Revert r285235
https://bugs.webkit.org/show_bug.cgi?id=233142

Unreviewed.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-backgrounds/parsing/border-radius-valid-expected.txt:

Source/WebCore:

Causes crash with simple repro

<div id=t style="border-radius: unset"></div>
<script>
t.style.borderRadius;
</script>

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::StyleProperties::borderRadiusValue const): Deleted.

  • css/StyleProperties.h:
12:47 PM Changeset in webkit [285826] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Fix fast/text/letter-spacing-negative-opacity.html
https://bugs.webkit.org/show_bug.cgi?id=233132

Reviewed by Antti Koivisto.

Special case the negative letter spacing content when computing the content logical width.

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::appendTextContent):

  1. Negative letter space value could produce negative content width
  2. Subsequent text content (e.g. "this text has whitepspace content") may go from positive to negative content width as parts of the content may produce positive width even with negative letter spacing.
12:39 PM Changeset in webkit [285825] by Russell Epstein
  • 8 edits in branches/safari-613.1.8-branch/Source

Versioning.

WebKit-7613.1.8.2

12:30 PM Changeset in webkit [285824] by Russell Epstein
  • 1 copy in tags/Safari-613.1.8.1

Tag Safari-613.1.8.1.

12:21 PM Changeset in webkit [285823] by Chris Dumez
  • 3 edits
    3 adds in trunk

Cross-Origin-Embedder-Policy: require-corp prevents loading of data URL images
https://bugs.webkit.org/show_bug.cgi?id=233131
<rdar://85236459>

Reviewed by Geoffrey Garen.

Source/WebCore:

When doing an initial data URL <img> load, we properly wouldn't perform a cross-origin resource policy check.
This is per the Fetch specification that says to use a scheme fetch [1] when the request URL is a data URL.
When the protocol is data, the scheme fetch algorithm would return a response without performing an HTTP
Fetch. The HTTP check [2] is the algorithm that actually performs a cross-origin resource policy check, at
step 7.

The issue with our implementation was that data URL <img> loads would perform a cross-origin resource policy
check in the case where the image is loaded from our memory cache, due to a check we had in
CachedResourceLoader::requestResource(). As a result, data URL <img> loads would fail when served from the
memory cache, when CORP is enforced. To address the issue and match the specification, we now disable this
CORP check when the request URL is a data URL.

[1] https://fetch.spec.whatwg.org/#scheme-fetch
[2] https://fetch.spec.whatwg.org/#concept-http-fetch

Test: http/wpt/html/cross-origin-embedder-policy/require-corp-data-url.html

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

LayoutTests:

Add layout test coverage. This test is based on a reduce test case from Cameron McCormack.

  • http/wpt/html/cross-origin-embedder-policy/require-corp-data-url-expected.txt: Added.
  • http/wpt/html/cross-origin-embedder-policy/require-corp-data-url.html: Added.
  • http/wpt/html/cross-origin-embedder-policy/require-corp-data-url.html.headers: Added.
12:18 PM Changeset in webkit [285822] by commit-queue@webkit.org
  • 26 edits
    4 adds in trunk

Implement parsing and animation support for offset-rotate
https://bugs.webkit.org/show_bug.cgi?id=232752

Patch by Kiet Ho <Kiet Ho> on 2021-11-15
Reviewed by Myles C. Maxfield.

LayoutTests/imported/w3c:

Rebaselined tests that now should pass.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
  • web-platform-tests/css/motion/animation/offset-rotate-composition-expected.txt:
  • web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt:
  • web-platform-tests/css/motion/inheritance-expected.txt:
  • web-platform-tests/css/motion/offset-supports-calc-expected.txt:
  • web-platform-tests/css/motion/parsing/offset-rotate-computed-expected.txt:
  • web-platform-tests/css/motion/parsing/offset-rotate-parsing-valid-expected.txt:
  • web-platform-tests/css/motion/parsing/offset-shorthand-expected.txt:

Source/WebCore:

Implement parsing and animation support for offset-rotate as specified in the CSS
motion path specification. 'auto' and 'reverse' modifiers are supported.

Tests: imported/w3c/web-platform-tests/css/motion/inheritance.html

imported/w3c/web-platform-tests/css/motion/offset-supports-calc.html
imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-composition.html
imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-interpolation.html
imported/w3c/web-platform-tests/css/motion/parsing/offset-rotate-computed.html
imported/w3c/web-platform-tests/css/motion/parsing/offset-rotate-parsing-invalid.html
imported/w3c/web-platform-tests/css/motion/parsing/offset-rotate-parsing-valid.html

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc): Added blendFunc override for blending OffsetRotation.
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
Added animation support for offset-rotate.

  • css/CSSComputedStyleDeclaration.cpp: Added computed style support for offset-rotate.

(WebCore::valueForOffsetRotate):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSOffsetRotateValue.cpp: Added.

(WebCore::CSSOffsetRotateValue::customCSSText const):
(WebCore::CSSOffsetRotateValue::equals const):

  • css/CSSOffsetRotateValue.h: Added.
  • css/CSSProperties.json: Added entry for offset-rotate.
  • css/CSSValue.cpp:

(WebCore::CSSValue::equals const):
(WebCore::CSSValue::cssText const):
(WebCore::CSSValue::destroy):

  • css/CSSValue.h:

(WebCore::CSSValue::isOffsetRotateValue const):

  • css/parser/CSSPropertyParser.cpp: Added parsing support for offset-rotate.

(WebCore::consumeOffsetRotate):
(WebCore::CSSPropertyParser::parseSingleValue):

  • rendering/style/OffsetRotation.cpp: Added.

(WebCore::OffsetRotation::OffsetRotation):
(WebCore::OffsetRotation::operator== const):
(WebCore::operator<<):

  • rendering/style/OffsetRotation.h: Added.

(WebCore::OffsetRotation::hasAuto const):
(WebCore::OffsetRotation::angle const):
(WebCore::OffsetRotation::operator!= const):

  • rendering/style/RenderStyle.h: Added support for offset-rotate.

(WebCore::RenderStyle::offsetRotate const):
(WebCore::RenderStyle::setOffsetRotate):
(WebCore::RenderStyle::initialOffsetRotate):

  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator== const):

  • rendering/style/StyleRareNonInheritedData.h: Added storage space for offset-path.
  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertOffsetRotate):

LayoutTests:

Rebaselined test to account for new CSS property.

  • platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
12:15 PM Changeset in webkit [285821] by Russell Epstein
  • 2 edits in branches/safari-613.1.8-branch/Source/WebCore/PAL

Cherry-pick r285811. rdar://problem/85422144

Declare NSTextListMarker* as type NSTextListMarkerFormat when soft-linking
https://bugs.webkit.org/show_bug.cgi?id=233064
rdar://85341122

Reviewed by Tim Horton.

Followup to r285744. Avoid build errors due to defining these constants as a different type of symbol
(NSString * vs. NSTextListMarkerFormat). To address this, we directly import NSTextList.h if it's available in
the SDK; otherwise, fall back to defining NSTextListMarkerFormat. In both cases, we need to keep soft linking
each of these constants, since WebCore cannot explicitly link against UIKit.

  • pal/spi/cocoa/NSAttributedStringSPI.h:

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

12:15 PM Changeset in webkit [285820] by Russell Epstein
  • 2 edits in branches/safari-613.1.8-branch/Source/WebCore/PAL

Cherry-pick r285744. rdar://problem/85422144

Stop statically declaring various UIFoundation constants in NSAttributedStringSPI.h
https://bugs.webkit.org/show_bug.cgi?id=233064
rdar://85341122

Reviewed by Tim Horton.

Replace these static NSString definitions with soft-linked constants instead.

  • pal/spi/cocoa/NSAttributedStringSPI.h:

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

11:46 AM Changeset in webkit [285819] by commit-queue@webkit.org
  • 8 edits
    1 add in trunk

Make valgrind work properly without extra environment variables
https://bugs.webkit.org/show_bug.cgi?id=230460

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-11-15
Reviewed by Carlos Garcia Campos.

Source/bmalloc:

Currently to run WebKit under valgrind, we have to manually disable bmalloc with Malloc=1,
or else the Gigacage breaks everything, because valgrind shadows the entire address space in
resident memory, and it just can't handle that much address space. Even with
GIGACAGE_ENABLED=0, diagnostics are worse because bmalloc does not use valgrind's
annotations.

Using valgrind.h, we can automatically disable bmalloc when running under valgrind to avoid
needing to use the environment variable.

  • CMakeLists.txt:
  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/Environment.cpp:

(bmalloc::isRunningOnValgrind):
(bmalloc::Environment::computeIsDebugHeapEnabled):

  • bmalloc/valgrind.h: Added.

(valgrind_do_client_request_expr):
(VALGRIND_PRINTF):
(VALGRIND_PRINTF_BACKTRACE):

Source/WebKit:

WebKitGTK and WPE WebKit users also have to set the WEBKIT_FORCE_SANDBOX=0 environment
variable, because the web process sandbox breaks valgrind for some reason I never attempted
to understand. If we have bmalloc expose valgrind.h as a public header, then we can check
for valgrind in higher layers and make this work automatically too.

  • UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:

(WebKit::ProcessLauncher::launchProcess):

Tools:

Exempt valgrind.h from the style checker.

  • Scripts/webkitpy/style/checker.py:
11:19 AM Changeset in webkit [285818] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

Remove some dead code from IPC::Encoder / IPC::Decoder
https://bugs.webkit.org/show_bug.cgi?id=233134

Reviewed by Sam Weinig.

Remove some dead code from IPC::Encoder / IPC::Decoder and make sure both
types are non-copyable / non-movable.

  • Platform/IPC/Decoder.cpp:
  • Platform/IPC/Decoder.h:

(IPC::Decoder::decodeSingleObject): Deleted.
(): Deleted.

  • Platform/IPC/Encoder.cpp:

(IPC::Encoder::Encoder):

  • Platform/IPC/Encoder.h:
11:15 AM Changeset in webkit [285817] by Angelos Oikonomopoulos
  • 9 edits in trunk

Skip tests newly-failing on mips
https://bugs.webkit.org/show_bug.cgi?id=233124

Unreviewed gardening.

After 3f59d2aa489ec843e055fc3104c275851d7fbd35, these tests started
failing with a SIGBUS on MIPS (on fuloong hardware, they pass on the
ci20 boards). Temporarily skip them on this arch until we can track
down the issue.

JSTests:

  • stress/call-varargs-double-new-array-buffer.js:
  • stress/callee-save-fpr.js:
  • stress/forward-varargs-double-new-array-buffer.js:
  • stress/new-array-with-spread-cow-double.js:
  • stress/new-array-with-spread-double-new-array-buffer.js:
  • stress/spread-escapes-but-new-array-buffer-does-not-double.js:

PerformanceTests:

  • ARES-6/Basic/basic-tests.yaml:
11:00 AM Changeset in webkit [285816] by Russell Epstein
  • 9 edits in branches/safari-613.1.9-branch/Source

Versioning.

WebKit-7613.1.9

10:58 AM Changeset in webkit [285815] by Russell Epstein
  • 1 copy in branches/safari-613.1.9-branch

New branch.

10:57 AM Changeset in webkit [285814] by Russell Epstein
  • 9 edits in trunk/Source

Versioning.

WebKit-7613.1.10

10:56 AM Changeset in webkit [285813] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

nullptr deref in CompositeEditCommand::insertNodeAt
https://bugs.webkit.org/show_bug.cgi?id=232837

Patch by Gabriel Nava Marino <gnavamarino@apple.com> on 2021-11-15
Reviewed by Wenson Hsieh and Darin Adler.

Source/WebCore:

Check endingSelection is not orphan before inserting nodes at
the start position.

Test: fast/editing/editing-position-crash.html

  • editing/CreateLinkCommand.cpp:

(WebCore::CreateLinkCommand::doApply):

LayoutTests:

  • fast/editing/editing-position-crash-expected.txt: Added.
  • fast/editing/editing-position-crash.html: Added.
10:49 AM Changeset in webkit [285812] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS][GPUP] Add telemetry for syscalls
https://bugs.webkit.org/show_bug.cgi?id=232888
<rdar://problem/85207011>

Reviewed by Brent Fulgham.

Add more telemetry for syscalls in the GPU process' sandbox on macOS. Also add entitlement for the GPU
process to use message filtering.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • Scripts/process-entitlements.sh:
10:36 AM Changeset in webkit [285811] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore/PAL

Declare NSTextListMarker* as type NSTextListMarkerFormat when soft-linking
https://bugs.webkit.org/show_bug.cgi?id=233064
rdar://85341122

Reviewed by Tim Horton.

Followup to r285744. Avoid build errors due to defining these constants as a different type of symbol
(NSString * vs. NSTextListMarkerFormat). To address this, we directly import NSTextList.h if it's available in
the SDK; otherwise, fall back to defining NSTextListMarkerFormat. In both cases, we need to keep soft linking
each of these constants, since WebCore cannot explicitly link against UIKit.

  • pal/spi/cocoa/NSAttributedStringSPI.h:
10:36 AM Changeset in webkit [285810] by commit-queue@webkit.org
  • 4 edits in trunk

Null bytes aren't percent-encoded on urlencoded over POST
https://bugs.webkit.org/show_bug.cgi?id=220780

Patch by Andreu Botella <andreu@andreubotella.com> on 2021-11-15
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/forms/form-submission-0/urlencoded2.window-expected.txt:

Source/WebCore:

This change fixes a bug where strchr was being used to match a character against a set
character list, without checking whether the character was NUL. This resulted in NUL bytes
being passed through in the urlencoded enctype over POST, rather than being percent-escaped.

Tests: imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/urlencoded2.window.html

  • platform/network/FormDataBuilder.cpp:

(WebCore::FormDataBuilder::appendFormURLEncoded):

10:07 AM Changeset in webkit [285809] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r285774.
https://bugs.webkit.org/show_bug.cgi?id=233136

Introduced GPUP crash on some configurations

Reverted changeset:

"[macOS][GPUP] Add telemetry for syscalls"
https://bugs.webkit.org/show_bug.cgi?id=232888
https://commits.webkit.org/r285774

9:32 AM Changeset in webkit [285808] by commit-queue@webkit.org
  • 4 edits in trunk

Empty <input type=file> controls don't show up in the urlencoded and text/plain enctypes
https://bugs.webkit.org/show_bug.cgi?id=221549

Patch by Andreu Botella <andreu@andreubotella.com> on 2021-11-15
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-empty-file.window-expected.txt:

Source/WebCore:

In the HTML spec, and in Firefox and Chrome's implementations, an empty <input type="file">
control is represented in form submission as if it were an empty file with an empty
filename. WebKit, however, does not include a form entry corresponding to the file input at
all in the application/x-www-form-urlencoded and text/plain enctypes. This change fixes it.

Tests: imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-empty-file.window.html

  • html/FileInputType.cpp:

(WebCore::FileInputType::appendFormData const):

7:51 AM Changeset in webkit [285807] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC][Integration] fast/text/international/bidi-innertext.html fails with BiDi enabled
https://bugs.webkit.org/show_bug.cgi?id=233125

Reviewed by Alan Bujtas.

TextIterator needs to know that RenderText contains bidi text.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::InlineItemsBuilder::handleTextContent):

Use the InlineTextBox bit.

  • layout/formattingContexts/inline/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::containsBidiText):

Add a helper.

  • layout/formattingContexts/inline/text/TextUtil.h:
  • layout/integration/InlineIteratorLogicalOrderTraversal.cpp:

(WebCore::InlineIterator::makeTextLogicalOrderCacheIfNeeded):

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

  • layout/layouttree/LayoutInlineTextBox.cpp:

(WebCore::Layout::InlineTextBox::InlineTextBox):
(WebCore::Layout::m_containsBidiText):

Add a bit to the InlineTextBox.

(WebCore::Layout::m_canUseSimplifiedContentMeasuring): Deleted.

  • layout/layouttree/LayoutInlineTextBox.h:

(WebCore::Layout::InlineTextBox::containsBidiText const):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createTextBox):

  • rendering/RenderText.cpp:

(WebCore::RenderText::RenderText):
(WebCore::RenderText::positionLineBox):

  • rendering/RenderText.h:

(WebCore::RenderText::containsBidiText const):
(WebCore::RenderText::setContainsBidiText):
(WebCore::RenderText::containsReversedText const): Deleted.

6:47 AM Changeset in webkit [285806] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Take text-indent into account when computing preferred width
https://bugs.webkit.org/show_bug.cgi?id=233115

Reviewed by Antti Koivisto.

  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::computedIntrinsicWidth):

  • layout/formattingContexts/inline/InlineLineBuilder.h:
6:46 AM Changeset in webkit [285805] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

AX: Un-skip accessibility/mac/search-predicate-for-adhoc-radio-groups.html for Mac WK1
https://bugs.webkit.org/show_bug.cgi?id=233116

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

https://bugs.webkit.org/show_bug.cgi?id=233017 implemented
AccessibilityUIElement::domIdentifier for WK1, so we don't
need to skip accessibility/mac/search-predicate-for-adhoc-radio-groups.html anymore.

  • platform/mac-wk1/TestExpectations:

Un-skip because AccessibilityUIElement::domIdentifier is now
implemented.

6:06 AM Changeset in webkit [285804] by commit-queue@webkit.org
  • 2 edits in trunk

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

Unreviewed.

Patch by Nikolas Zimmermann <nzimmermann@igalia.com> on 2021-11-15

  • metadata/contributors.json:
5:08 AM Changeset in webkit [285803] by cathiechen
  • 16 edits
    2 copies
    89 adds in trunk/LayoutTests

[CSS contain] Update css-contain tests from WPT
https://bugs.webkit.org/show_bug.cgi?id=233121

Reviewed by Rob Buis.

Update css/css-contain/ tests to commit 625a2df832.

LayoutTests/imported/w3c:

  • resources/resource-files.json:
  • web-platform-tests/css/css-contain/contain-body-bg-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-bg-001.html: Added.
  • web-platform-tests/css/css-contain/contain-body-bg-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-bg-002.html: Added.
  • web-platform-tests/css/css-contain/contain-body-bg-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-bg-003.html: Added.
  • web-platform-tests/css/css-contain/contain-body-bg-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-bg-004.html: Added.
  • web-platform-tests/css/css-contain/contain-body-dir-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-dir-001.html: Added.
  • web-platform-tests/css/css-contain/contain-body-dir-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-dir-002.html: Added.
  • web-platform-tests/css/css-contain/contain-body-dir-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-dir-003.html: Added.
  • web-platform-tests/css/css-contain/contain-body-dir-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-dir-004.html: Added.
  • web-platform-tests/css/css-contain/contain-body-overflow-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-overflow-001.html: Added.
  • web-platform-tests/css/css-contain/contain-body-overflow-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-overflow-002.html: Added.
  • web-platform-tests/css/css-contain/contain-body-overflow-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-overflow-003.html: Added.
  • web-platform-tests/css/css-contain/contain-body-overflow-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-overflow-004.html: Added.
  • web-platform-tests/css/css-contain/contain-body-t-o-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-t-o-001.html: Added.
  • web-platform-tests/css/css-contain/contain-body-t-o-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-t-o-002.html: Added.
  • web-platform-tests/css/css-contain/contain-body-t-o-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-t-o-003.html: Added.
  • web-platform-tests/css/css-contain/contain-body-t-o-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-t-o-004.html: Added.
  • web-platform-tests/css/css-contain/contain-body-w-m-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-w-m-001.html: Added.
  • web-platform-tests/css/css-contain/contain-body-w-m-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-w-m-002.html: Added.
  • web-platform-tests/css/css-contain/contain-body-w-m-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-w-m-003.html: Added.
  • web-platform-tests/css/css-contain/contain-body-w-m-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-body-w-m-004.html: Added.
  • web-platform-tests/css/css-contain/contain-content-011-expected.html:
  • web-platform-tests/css/css-contain/contain-content-011.html:
  • web-platform-tests/css/css-contain/contain-html-bg-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-bg-001.html: Added.
  • web-platform-tests/css/css-contain/contain-html-bg-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-bg-002.html: Added.
  • web-platform-tests/css/css-contain/contain-html-bg-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-bg-003.html: Added.
  • web-platform-tests/css/css-contain/contain-html-bg-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-bg-004.html: Added.
  • web-platform-tests/css/css-contain/contain-html-dir-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-dir-001.html: Added.
  • web-platform-tests/css/css-contain/contain-html-dir-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-dir-002.html: Added.
  • web-platform-tests/css/css-contain/contain-html-dir-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-dir-003.html: Added.
  • web-platform-tests/css/css-contain/contain-html-dir-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-dir-004.html: Added.
  • web-platform-tests/css/css-contain/contain-html-overflow-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-overflow-001.html: Added.
  • web-platform-tests/css/css-contain/contain-html-overflow-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-overflow-002.html: Added.
  • web-platform-tests/css/css-contain/contain-html-overflow-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-overflow-003.html: Added.
  • web-platform-tests/css/css-contain/contain-html-overflow-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-overflow-004.html: Added.
  • web-platform-tests/css/css-contain/contain-html-t-o-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-t-o-001.html: Added.
  • web-platform-tests/css/css-contain/contain-html-t-o-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-t-o-002.html: Added.
  • web-platform-tests/css/css-contain/contain-html-t-o-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-t-o-003.html: Added.
  • web-platform-tests/css/css-contain/contain-html-t-o-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-t-o-004.html: Added.
  • web-platform-tests/css/css-contain/contain-html-w-m-001-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-w-m-001.html: Added.
  • web-platform-tests/css/css-contain/contain-html-w-m-002-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-w-m-002.html: Added.
  • web-platform-tests/css/css-contain/contain-html-w-m-003-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-w-m-003.html: Added.
  • web-platform-tests/css/css-contain/contain-html-w-m-004-expected.html: Added.
  • web-platform-tests/css/css-contain/contain-html-w-m-004.html: Added.
  • web-platform-tests/css/css-contain/contain-layout-019-expected.xht: Added.
  • web-platform-tests/css/css-contain/contain-layout-019.html: Added.
  • web-platform-tests/css/css-contain/contain-paint-010.html:
  • web-platform-tests/css/css-contain/contain-paint-026-expected.xht: Added.
  • web-platform-tests/css/css-contain/contain-paint-026.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-paint-010.html.
  • web-platform-tests/css/css-contain/contain-paint-change-opacity-expected.xht: Added.
  • web-platform-tests/css/css-contain/contain-paint-change-opacity.html: Added.
  • web-platform-tests/css/css-contain/contain-paint-clip-005.html:
  • web-platform-tests/css/css-contain/contain-strict-011-expected.html:
  • web-platform-tests/css/css-contain/contain-strict-011.html:
  • web-platform-tests/css/css-contain/crashtests/contain-nested-crash-001.html: Added.
  • web-platform-tests/css/css-contain/crashtests/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-contain/parsing/w3c-import.log.
  • web-platform-tests/css/css-contain/parsing/contain-computed-children-expected.txt: Added.
  • web-platform-tests/css/css-contain/parsing/contain-computed-children.html: Added.
  • web-platform-tests/css/css-contain/parsing/contain-computed-expected.txt:
  • web-platform-tests/css/css-contain/parsing/contain-computed.html:
  • web-platform-tests/css/css-contain/parsing/contain-invalid-expected.txt:
  • web-platform-tests/css/css-contain/parsing/contain-invalid.html:
  • web-platform-tests/css/css-contain/parsing/w3c-import.log:
  • web-platform-tests/css/css-contain/w3c-import.log:

LayoutTests:

4:57 AM Changeset in webkit [285802] by eocanha@igalia.com
  • 5 edits in trunk

[GTK] webaudio/silent-audio-interrupted-in-background.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=229964

Reviewed by Carlos Garcia Campos.

Source/WebCore:

I can't reproduce the timeout locally anymore, but I'm getting a crash sometimes. This fix is for the crash.
Unregister dbus objects on MediaSessionGLib destruction to prevent the dbus connection to keep processing requests.

  • platform/audio/glib/MediaSessionGLib.cpp:

(WebCore::MediaSessionGLib::MediaSessionGLib()): Don't register a GBusNameLostCallback, as unregistration is now going to be handled in the destructor.
(WebCore::MediaSessionGLib::~MediaSessionGLib()): Unregister dbus objects.
(WebCore::MediaSessionGLib::nameLost()): Refactored into the destructor.

  • platform/audio/glib/MediaSessionGLib.h:

(WebCore::MediaSessionGLib::nameLost()): Deleted.

LayoutTests:

Removed failing test from TestExpectations.

  • platform/gtk/TestExpectations:
3:12 AM Changeset in webkit [285801] by Antti Koivisto
  • 4 edits
    2 adds in trunk

Stack overflow with revert-layer
https://bugs.webkit.org/show_bug.cgi?id=233119
rdar://85342210

Reviewed by Antoine Quint.

Source/WebCore:

We would decrement the cascade layer priority by one after finding 'revert-layer' value and then try
to apply again. If both the default layer and a cascade layer contained 'revert-layer' we would
enter a very deep recursion as the default layer priority is 64k and the cascade layer priorities
start from zero.

Test: fast/css/revert-layer-stack-overflow-2.html

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::applyRollbackCascadeProperty):

Fix by getting the new cascade layer priority from the actual property rather than the cascade
minimum value.

Factor into a function.

(WebCore::Style::Builder::applyProperty):

  • style/StyleBuilder.h:

LayoutTests:

  • fast/css/revert-layer-stack-overflow-2-expected.txt: Added.
  • fast/css/revert-layer-stack-overflow-2.html: Added.
12:42 AM Changeset in webkit [285800] by Patrick Griffis
  • 4 edits in trunk

CSP: Fix missing lineNumber and columnNumber in inline violation reports
https://bugs.webkit.org/show_bug.cgi?id=233102

Reviewed by Carlos Garcia Campos.

LayoutTests/imported/w3c:

Update expectations as passing.

  • web-platform-tests/content-security-policy/securitypolicyviolation/blockeduri-inline-expected.txt:

Source/WebCore:

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation const):

Nov 14, 2021:

11:17 PM Changeset in webkit [285799] by beidson@apple.com
  • 14 edits
    2 adds in trunk

Get daemon API ready to work in the iOS simulator (starting with WebPushD)
https://bugs.webkit.org/show_bug.cgi?id=232982

Reviewed by Geoff Garen.

Source/WebKit:

Move all the "enable Notifications" SPI from Mac-only to cross platform:

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setNotificationsEnabled:]):
(-[WKPreferences _notificationsEnabled]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::decidePolicyForNotificationPermissionRequest):

  • WebKit.xcodeproj/project.pbxproj: Add a build phase script to install the daemon executables inside a Daemons directory within the built WebKit.framework for engineering builds.
  • webpushd/WebPushDaemon.mm:

Tools:

To get this working we needed to:

  • Have the Daemons installed in a simulator-runtime-root-visible path
  • Point the OSLaunchDJob plist to the simulator-relative path, not Mac-relative
  • Solve the "How do I kill existing instances to run a clean test?" problem within the simulator.

This patch does those things.

  • TestWebKitAPI/Configurations/TestWebKitAPI-iOS.entitlements:
  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
  • TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:

(TestWebKitAPI::testWebPushDaemonPList):
(TestWebKitAPI::setUpTestWebPushD):
(TestWebKitAPI::cleanUpTestWebPushD):

  • TestWebKitAPI/cocoa/DaemonTestUtilities.h:
  • TestWebKitAPI/cocoa/DaemonTestUtilities.mm:

(TestWebKitAPI::registerPlistWithLaunchD):
(TestWebKitAPI::pidOfFirstDaemonInstance):
(TestWebKitAPI::killFirstInstanceOfDaemon):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/15/AppServerSupport.framework/AppServerSupport.tbd: Added.
8:22 PM Changeset in webkit [285798] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[GraphicsLayerWC] Incorrect compositing debug border color
https://bugs.webkit.org/show_bug.cgi?id=233107

Reviewed by Don Olmstead.

GraphicsLayer::updateDebugIndicators() should be called after
changing some layer properties.

  • WebProcess/WebPage/wc/GraphicsLayerWC.cpp:

(WebKit::GraphicsLayerWC::setMasksToBounds):
(WebKit::GraphicsLayerWC::setDrawsContent):
(WebKit::GraphicsLayerWC::setContentsToPlatformLayer):
(WebKit::GraphicsLayerWC::setBackdropFilters):
Call updateDebugIndicators.

8:06 PM Changeset in webkit [285797] by Simon Fraser
  • 5 edits
    2 adds in trunk

Fingers down on the trackpad should stop an animated scroll
https://bugs.webkit.org/show_bug.cgi?id=233114

Reviewed by Wenson Hsieh.
Source/WebCore:

Fingers down on the trackpad sends a "MayBegin" event; this needs to stop any in-progress
animated momentum scroll.

This failed because ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent() early-returned
on the MayBegin event before it got to ScrollingEffectsController. Fix that, and have
ScrollingEffectsController::handleWheelEvent() return true to say it was handled.

This triggered an assertion in ScrollingTreeGestureState, but for "post-main-thread"
handling for which the assertion was wrong.

Test: fast/scrolling/mac/momentum-animator-maybegin-stops.html

  • page/scrolling/ScrollingTreeGestureState.cpp:

(WebCore::ScrollingTreeGestureState::nodeDidHandleEvent):

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):

  • platform/mac/ScrollingEffectsController.mm:

(WebCore::ScrollingEffectsController::handleWheelEvent):

LayoutTests:

  • fast/scrolling/mac/momentum-animator-maybegin-stops-expected.txt: Added.
  • fast/scrolling/mac/momentum-animator-maybegin-stops.html: Added.
6:45 PM Changeset in webkit [285796] by Said Abou-Hallawa
  • 90 edits in trunk/Source/WebCore

[GPU Process] Remove the reference to Filter from FilterEffect
https://bugs.webkit.org/show_bug.cgi?id=232551
rdar://85136447

Reviewed by Cameron McCormack.

This patch removes an unnecessary dependency of individual FilterEffects
on the Filter object, which makes it easier to send the filter description
over IPC.

Instead of having a reference to the Filter in the FilterEffect, we are
going to pass a reference to the Filter to the FilterEffect functions
only when needed. FilterEffect may need access to the Filter only in two
methods: determineAbsolutePaintRect() and platformApplySoftware().

We need to change all the FilterEffect create methods to not take a Filter
as input. This requires the SVG filter effect elements to change their
build() method. And it requires also CSSFilter to not pass itself to the
FilterEffects its create.

  • platform/graphics/coreimage/FilterEffectRendererCoreImage.h:
  • platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:

(WebCore::FilterEffectRendererCoreImage::applyEffects):
(WebCore::FilterEffectRendererCoreImage::connectCIFilters):
(WebCore::FilterEffectRendererCoreImage::imageForSourceGraphic):

  • platform/graphics/cpu/arm/filters/FEBlendNEON.h:

(WebCore::FEBlend::platformApplySoftware):

  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::create):
(WebCore::FEBlend::FEBlend):
(WebCore::FEBlend::platformApplySoftware):

  • platform/graphics/filters/FEBlend.h:
  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::create):
(WebCore::FEColorMatrix::FEColorMatrix):
(WebCore::FEColorMatrix::platformApplySoftware):

  • platform/graphics/filters/FEColorMatrix.h:
  • platform/graphics/filters/FEComponentTransfer.cpp:

(WebCore::FEComponentTransfer::create):
(WebCore::FEComponentTransfer::FEComponentTransfer):
(WebCore::FEComponentTransfer::platformApplySoftware):

  • platform/graphics/filters/FEComponentTransfer.h:
  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::create):
(WebCore::FEComposite::FEComposite):
(WebCore::FEComposite::determineAbsolutePaintRect):
(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEComposite.h:
  • platform/graphics/filters/FEConvolveMatrix.cpp:

(WebCore::FEConvolveMatrix::create):
(WebCore::FEConvolveMatrix::FEConvolveMatrix):
(WebCore::FEConvolveMatrix::platformApplySoftware):

  • platform/graphics/filters/FEConvolveMatrix.h:
  • platform/graphics/filters/FEDiffuseLighting.cpp:

(WebCore::FEDiffuseLighting::create):
(WebCore::FEDiffuseLighting::FEDiffuseLighting):

  • platform/graphics/filters/FEDiffuseLighting.h:
  • platform/graphics/filters/FEDisplacementMap.cpp:

(WebCore::FEDisplacementMap::create):
(WebCore::FEDisplacementMap::FEDisplacementMap):
(WebCore::FEDisplacementMap::platformApplySoftware):

  • platform/graphics/filters/FEDisplacementMap.h:
  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::create):
(WebCore::FEDropShadow::FEDropShadow):
(WebCore::FEDropShadow::determineAbsolutePaintRect):
(WebCore::FEDropShadow::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.h:
  • platform/graphics/filters/FEFlood.cpp:

(WebCore::FEFlood::create):
(WebCore::FEFlood::FEFlood):
(WebCore::FEFlood::platformApplySoftware):

  • platform/graphics/filters/FEFlood.h:
  • platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::FEGaussianBlur::create):
(WebCore::FEGaussianBlur::FEGaussianBlur):
(WebCore::FEGaussianBlur::determineAbsolutePaintRect):
(WebCore::FEGaussianBlur::platformApplySoftware):

  • platform/graphics/filters/FEGaussianBlur.h:
  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::FELighting):
(WebCore::FELighting::platformApplySoftware):

  • platform/graphics/filters/FELighting.h:
  • platform/graphics/filters/FEMerge.cpp:

(WebCore::FEMerge::create):
(WebCore::FEMerge::FEMerge):
(WebCore::FEMerge::platformApplySoftware):

  • platform/graphics/filters/FEMerge.h:
  • platform/graphics/filters/FEMorphology.cpp:

(WebCore::FEMorphology::create):
(WebCore::FEMorphology::FEMorphology):
(WebCore::FEMorphology::determineAbsolutePaintRect):
(WebCore::FEMorphology::platformApplySoftware):

  • platform/graphics/filters/FEMorphology.h:
  • platform/graphics/filters/FEOffset.cpp:

(WebCore::FEOffset::create):
(WebCore::FEOffset::FEOffset):
(WebCore::FEOffset::determineAbsolutePaintRect):
(WebCore::FEOffset::platformApplySoftware):

  • platform/graphics/filters/FEOffset.h:
  • platform/graphics/filters/FESpecularLighting.cpp:

(WebCore::FESpecularLighting::create):
(WebCore::FESpecularLighting::FESpecularLighting):

  • platform/graphics/filters/FESpecularLighting.h:
  • platform/graphics/filters/FETile.cpp:

(WebCore::FETile::create):
(WebCore::FETile::FETile):
(WebCore::FETile::platformApplySoftware):

  • platform/graphics/filters/FETile.h:
  • platform/graphics/filters/FETurbulence.cpp:

(WebCore::FETurbulence::create):
(WebCore::FETurbulence::FETurbulence):
(WebCore::FETurbulence::fillRegion const):
(WebCore::FETurbulence::fillRegionWorker):
(WebCore::FETurbulence::platformApplySoftware):

  • platform/graphics/filters/FETurbulence.h:
  • platform/graphics/filters/Filter.h:

(WebCore::Filter::sourceImage const):
(WebCore::Filter::sourceImage): Deleted.

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::FilterEffect):
(WebCore::FilterEffect::determineAbsolutePaintRect):
(WebCore::FilterEffect::determineFilterPrimitiveSubregion):
(WebCore::FilterEffect::apply):
(WebCore::FilterEffect::imageBufferResult):
(WebCore::FilterEffect::convertPixelBufferToColorSpace):
(WebCore::FilterEffect::convertImageBufferToColorSpace):
(WebCore::FilterEffect::createImageBufferResult):

  • platform/graphics/filters/FilterEffect.h:

(WebCore::FilterEffect::filter): Deleted.
(WebCore::FilterEffect::filter const): Deleted.
Create a unaccelerated filter image result for now. This will be fixed
in the following patch. Anyway currently we never create accelerated
intermediate ImageBuffers for filters.

  • platform/graphics/filters/FilterEffectRenderer.h:
  • platform/graphics/filters/SourceAlpha.cpp:

(WebCore::SourceAlpha::SourceAlpha):
(WebCore::SourceAlpha::determineAbsolutePaintRect):
(WebCore::SourceAlpha::platformApplySoftware):

  • platform/graphics/filters/SourceAlpha.h:
  • platform/graphics/filters/SourceGraphic.cpp:

(WebCore::SourceGraphic::create):
(WebCore::SourceGraphic::SourceGraphic):
(WebCore::SourceGraphic::determineAbsolutePaintRect):
(WebCore::SourceGraphic::platformApplySoftware):

  • platform/graphics/filters/SourceGraphic.h:

(WebCore::SourceGraphic::SourceGraphic): Deleted.

  • rendering/CSSFilter.cpp:

(WebCore::createBlurEffect):
(WebCore::createBrightnessEffect):
(WebCore::createContrastEffect):
(WebCore::createDropShadowEffect):
(WebCore::createGrayScaleEffect):
(WebCore::createHueRotateEffect):
(WebCore::createInvertEffect):
(WebCore::createOpacityEffect):
(WebCore::createSaturateEffect):
(WebCore::createSepiaEffect):
(WebCore::CSSFilter::buildFilterFunctions):
(WebCore::CSSFilter::determineFilterPrimitiveSubregion):
(WebCore::CSSFilter::apply):

  • rendering/CSSFilter.h:

Apply the FilterFunctions of the CSSFilter in the forward direction.

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::postApplyResource):

  • svg/SVGFEBlendElement.cpp:

(WebCore::SVGFEBlendElement::build const):

  • svg/SVGFEBlendElement.h:
  • svg/SVGFEColorMatrixElement.cpp:

(WebCore::SVGFEColorMatrixElement::build const):

  • svg/SVGFEColorMatrixElement.h:
  • svg/SVGFEComponentTransferElement.cpp:

(WebCore::SVGFEComponentTransferElement::build const):

  • svg/SVGFEComponentTransferElement.h:
  • svg/SVGFECompositeElement.cpp:

(WebCore::SVGFECompositeElement::build const):

  • svg/SVGFECompositeElement.h:
  • svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::build const):

  • svg/SVGFEConvolveMatrixElement.h:
  • svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::build const):

  • svg/SVGFEDiffuseLightingElement.h:
  • svg/SVGFEDisplacementMapElement.cpp:

(WebCore::SVGFEDisplacementMapElement::build const):

  • svg/SVGFEDisplacementMapElement.h:
  • svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::build const):

  • svg/SVGFEDropShadowElement.h:
  • svg/SVGFEFloodElement.cpp:

(WebCore::SVGFEFloodElement::build const):

  • svg/SVGFEFloodElement.h:
  • svg/SVGFEGaussianBlurElement.cpp:

(WebCore::SVGFEGaussianBlurElement::build const):

  • svg/SVGFEGaussianBlurElement.h:
  • svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::build const):

  • svg/SVGFEImageElement.h:
  • svg/SVGFEMergeElement.cpp:

(WebCore::SVGFEMergeElement::build const):

  • svg/SVGFEMergeElement.h:
  • svg/SVGFEMorphologyElement.cpp:

(WebCore::SVGFEMorphologyElement::build const):

  • svg/SVGFEMorphologyElement.h:
  • svg/SVGFEOffsetElement.cpp:

(WebCore::SVGFEOffsetElement::build const):

  • svg/SVGFEOffsetElement.h:
  • svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::build const):

  • svg/SVGFESpecularLightingElement.h:
  • svg/SVGFETileElement.cpp:

(WebCore::SVGFETileElement::build const):

  • svg/SVGFETileElement.h:
  • svg/SVGFETurbulenceElement.cpp:

(WebCore::SVGFETurbulenceElement::build const):

  • svg/SVGFETurbulenceElement.h:
  • svg/SVGFilterPrimitiveStandardAttributes.h:

Remove the Filter as an input to the build() method and pass a reference
to SVGFilterBuilder instead of passing a pointer.

  • svg/graphics/filters/SVGFEImage.cpp:

(WebCore::FEImage::create):
(WebCore::FEImage::FEImage):
(WebCore::FEImage::determineAbsolutePaintRect):
(WebCore::FEImage::platformApplySoftware):

  • svg/graphics/filters/SVGFEImage.h:
  • svg/graphics/filters/SVGFilter.cpp:

(WebCore::SVGFilter::create):
(WebCore::SVGFilter::apply):

  • svg/graphics/filters/SVGFilter.h:
  • svg/graphics/filters/SVGFilterBuilder.cpp:

(WebCore::SVGFilterBuilder::buildFilterEffects):

  • svg/graphics/filters/SVGFilterBuilder.h:
6:44 PM Changeset in webkit [285795] by ysuzuki@apple.com
  • 61 edits
    1 add
    1 delete in trunk

[JSC] Use CallLinkInfo in LLInt
https://bugs.webkit.org/show_bug.cgi?id=232746

Reviewed by Saam Barati.

JSTests:

  • stress/is-callable-in-ftl-needs-to-be-aware-of-proxy.js:
  • stress/sampling-profiler-wasm-name-section.js:

(platformSupportsSamplingProfiler.vm.isWasmSupported):

  • stress/sampling-profiler-wasm.js:

(platformSupportsSamplingProfiler.vm.isWasmSupported):

  • stress/sampling-profiler/samplingProfiler.js:

(doesTreeHaveStackTrace):
(runTest):

  • wasm/function-tests/nameSection.js:

Source/JavaScriptCore:

This patch integrates normal CallLinkInfo into LLInt and remove adhoc LLIntCallLinkInfo.
So that we can simplify our IC software stack, and unifying call IC mechanism into one CallLinkInfo.

  1. LLInt can fully use our polymorphic call IC, and we no longer need to reset call IC when tiering up from LLInt to Baseline JIT since both now uses the same CallLinkInfo data structure. DFG and FTL can also retrieve call information from this CallLinkInfo.
  2. LLInt varargs calls get the same level of optimization to Baseline. Previously it does not have call IC.
  3. When JIT is disabled, we disable polymorphic call IC since it requires dynamic code generation. In that case, we only use monomorphic one, which is the same to the old LLIntCallLinkInfo.
  4. CallLinkInfo::doneLocation is set up only after Baseline JIT. We adjust call IC code so that we no longer rely on doneLocation when using DataIC. This allows us to smoothly tiering up from LLInt to Baseline JIT while using the same CallLinkInfo. We set up doneLocation in Baseline JIT just because DFG OSR exit requires when exiting to Baseline JIT code.
  5. We remove CallLinkInfo from JIT constant pool, and we store CallLinkInfo in metadata so that LLInt and Baseline JIT quickly access to that and keeping unlinked Baseline JIT working.
  6. We implement LLInt version of call IC thunks so that we can use them even when JIT is disabled.

Speedometer2 is neutral. JetStream2 is 0.7% progressed.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/CodeLocation.h:
  • assembler/LinkBuffer.cpp:

(JSC::shouldDumpDisassemblyFor): Deleted.

  • assembler/LinkBuffer.h:
  • assembler/MacroAssemblerCodeRef.cpp:

(JSC::shouldDumpDisassemblyFor):

  • assembler/MacroAssemblerCodeRef.h:

(JSC::MacroAssemblerCodePtr::dumpWithName const):

  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeOperandsForCheckpoint.h:

(JSC::callLinkInfoFor):

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::clearStub):
(JSC::CallLinkInfo::setMonomorphicCallee):
(JSC::CallLinkInfo::clearCallee):
(JSC::CallLinkInfo::visitWeak):
(JSC::CallLinkInfo::emitFastPathImpl):
(JSC::CallLinkInfo::emitTailCallFastPath):
(JSC::CallLinkInfo::emitTailCallDataICFastPath):
(JSC::CallLinkInfo::emitSlowPath):
(JSC::CallLinkInfo::initializeDataIC):
(JSC::CallLinkInfo::emitDirectTailCallFastPath):
(JSC::CallLinkInfo::revertCallToStub):

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::isLinked const):
(JSC::CallLinkInfo::stub const):
(JSC::CallLinkInfo::updateMaxArgumentCountIncludingThis):
(JSC::CallLinkInfo::forEachDependentCell const):
(JSC::CallLinkInfo::setSlowStub): Deleted.
(JSC::CallLinkInfo::clearSlowStub): Deleted.
(JSC::CallLinkInfo::addressOfMaxArgumentCountIncludingThis): Deleted.

  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::computeFor):
(JSC::CallLinkStatus::computeFromLLInt): Deleted.

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

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setupWithUnlinkedBaselineCode):
(JSC::CodeBlock::finalizeLLIntInlineCaches):
(JSC::CodeBlock::finalizeJITInlineCaches):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::getICStatusMap):
(JSC::CodeBlock::getCallLinkInfoForBytecodeIndex):
(JSC::CodeBlock::linkIncomingCall):
(JSC::CodeBlock::unlinkIncomingCalls):
(JSC::CodeBlock::jettison):
(JSC::CodeBlock::getArrayProfile):
(JSC::CodeBlock::updateAllArrayProfilePredictions):

  • bytecode/CodeBlock.h:
  • bytecode/CodeBlockInlines.h:

(JSC::CodeBlock::forEachLLIntOrBaselineCallLinkInfo):
(JSC::CodeBlock::forEachLLIntCallLinkInfo): Deleted.

  • bytecode/LLIntCallLinkInfo.h: Removed.
  • bytecode/Opcode.h:
  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::allocateSharedProfiles):

  • bytecode/UnlinkedCodeBlock.h:
  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::callerReturnPC):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • ftl/FTLLowerDFGToB3.cpp:

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

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitVirtualCall):
(JSC::AssemblyHelpers::emitVirtualCallWithoutMovingGlobalObject):

  • jit/AssemblyHelpers.h:
  • jit/BaselineJITCode.h:
  • jit/CallFrameShuffleData.cpp:

(JSC::CallFrameShuffleData::createForBaselineOrLLIntTailCall):

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

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

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

(JSC::JIT::emit_op_ret):
(JSC::JIT::returnFromBaselineGenerator):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileTailCall):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITOpcodes.cpp:

(JSC::JIT::op_ret_handlerGenerator): Deleted.

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):
(JSC::handleHostCall): Deleted.
(JSC::virtualForWithFunction): Deleted.

  • jit/Repatch.cpp:

(JSC::linkSlowPathTo):
(JSC::linkSlowFor):
(JSC::webAssemblyOwner):
(JSC::linkMonomorphicCall):
(JSC::revertCall):
(JSC::unlinkCall):
(JSC::jsToWasmICCodePtr):
(JSC::linkVirtualFor):
(JSC::linkPolymorphicCall):

  • jit/Repatch.h:
  • jit/RepatchInlines.h: Added.

(JSC::handleHostCall):
(JSC::linkFor):
(JSC::virtualForWithFunction):

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):
(JSC::virtualThunkForRegularConstruct): Deleted.
(JSC::virtualThunkForTailConstruct): Deleted.
(JSC::virtualThunkForConstructCall): Deleted.

  • jit/ThunkGenerators.h:
  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::llint_link_call):
(JSC::LLInt::llint_virtual_call):
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):
(JSC::LLInt::varargsSetup):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::commonCallEval):
(JSC::LLInt::genericCall): Deleted.

  • llint/LLIntSlowPaths.h:
  • llint/LLIntThunks.cpp:

(JSC::LLInt::createJSGateThunk):
(JSC::LLInt::createTailCallGate):
(JSC::LLInt::returnLocationThunk):

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

(JSC::CLoopRegister::operator CallLinkInfo*):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/cloop.rb:
  • offlineasm/instructions.rb:
  • runtime/ExecutableBase.h:
  • runtime/FunctionExecutable.h:
  • runtime/Gate.h:
  • runtime/VM.cpp:

(JSC::VM::getCTILinkCall):
(JSC::VM::getCTIThrowExceptionFromCallSlowPath):
(JSC::VM::getCTIVirtualCall):

  • runtime/VM.h:
12:54 PM Changeset in webkit [285794] by mmaxfield@apple.com
  • 156 edits in trunk/Source/WebCore

[WebGPU] Various mechanical cleanups
https://bugs.webkit.org/show_bug.cgi?id=233104

Reviewed by Dean Jackson.

Source/WebCore:

  • Trailing commas in enums
  • Update GPUFeatureName to the latest spec

No new tests because there is no behavior change (yet).

  • Modules/WebGPU/GPUAddressMode.h:
  • Modules/WebGPU/GPUBlendFactor.h:
  • Modules/WebGPU/GPUBlendOperation.h:
  • Modules/WebGPU/GPUBufferBindingType.h:
  • Modules/WebGPU/GPUCanvasCompositingAlphaMode.h:
  • Modules/WebGPU/GPUCompareFunction.h:
  • Modules/WebGPU/GPUCompilationMessageType.h:
  • Modules/WebGPU/GPUComputePassTimestampLocation.h:
  • Modules/WebGPU/GPUCullMode.h:
  • Modules/WebGPU/GPUDeviceLostReason.h:
  • Modules/WebGPU/GPUErrorFilter.h:
  • Modules/WebGPU/GPUFeatureName.h:

(WebCore::convertToBacking):

  • Modules/WebGPU/GPUFeatureName.idl:
  • Modules/WebGPU/GPUFilterMode.h:
  • Modules/WebGPU/GPUFrontFace.h:
  • Modules/WebGPU/GPUIndexFormat.h:
  • Modules/WebGPU/GPULoadOp.h:
  • Modules/WebGPU/GPUPipelineStatisticName.h:
  • Modules/WebGPU/GPUPowerPreference.h:
  • Modules/WebGPU/GPUPredefinedColorSpace.h:
  • Modules/WebGPU/GPUPrimitiveTopology.h:
  • Modules/WebGPU/GPUQueryType.h:
  • Modules/WebGPU/GPURenderPassTimestampLocation.h:
  • Modules/WebGPU/GPUSamplerBindingType.h:
  • Modules/WebGPU/GPUStencilOperation.h:
  • Modules/WebGPU/GPUStorageTextureAccess.h:
  • Modules/WebGPU/GPUStoreOp.h:
  • Modules/WebGPU/GPUTextureAspect.h:
  • Modules/WebGPU/GPUTextureDimension.h:
  • Modules/WebGPU/GPUTextureFormat.h:
  • Modules/WebGPU/GPUTextureSampleType.h:
  • Modules/WebGPU/GPUTextureViewDimension.h:
  • Modules/WebGPU/GPUVertexFormat.h:
  • Modules/WebGPU/GPUVertexStepMode.h:

Source/WebCore/PAL:

  • Explicitly delete some constructors and operators that we don't want
  • Tweak const methods
  • Add " namespace WebCore" around closing namespace braces
  • Trailing commas on enums
  • pal/graphics/WebGPU/WebGPU.h:
  • pal/graphics/WebGPU/WebGPUAdapter.h:

(PAL::WebGPU::Adapter::features const):
(PAL::WebGPU::Adapter::limits const):

  • pal/graphics/WebGPU/WebGPUAddressMode.h:
  • pal/graphics/WebGPU/WebGPUBindGroup.h:
  • pal/graphics/WebGPU/WebGPUBindGroupDescriptor.h:
  • pal/graphics/WebGPU/WebGPUBindGroupEntry.h:
  • pal/graphics/WebGPU/WebGPUBindGroupLayout.h:
  • pal/graphics/WebGPU/WebGPUBindGroupLayoutDescriptor.h:
  • pal/graphics/WebGPU/WebGPUBindGroupLayoutEntry.h:
  • pal/graphics/WebGPU/WebGPUBlendComponent.h:
  • pal/graphics/WebGPU/WebGPUBlendFactor.h:
  • pal/graphics/WebGPU/WebGPUBlendOperation.h:
  • pal/graphics/WebGPU/WebGPUBlendState.h:
  • pal/graphics/WebGPU/WebGPUBuffer.h:
  • pal/graphics/WebGPU/WebGPUBufferBinding.h:
  • pal/graphics/WebGPU/WebGPUBufferBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUBufferBindingType.h:
  • pal/graphics/WebGPU/WebGPUBufferDescriptor.h:
  • pal/graphics/WebGPU/WebGPUBufferUsage.h:
  • pal/graphics/WebGPU/WebGPUCanvasCompositingAlphaMode.h:
  • pal/graphics/WebGPU/WebGPUCanvasConfiguration.h:
  • pal/graphics/WebGPU/WebGPUColorTargetState.h:
  • pal/graphics/WebGPU/WebGPUColorWrite.h:
  • pal/graphics/WebGPU/WebGPUCommandBuffer.h:
  • pal/graphics/WebGPU/WebGPUCommandBufferDescriptor.h:
  • pal/graphics/WebGPU/WebGPUCommandEncoder.h:
  • pal/graphics/WebGPU/WebGPUCommandEncoderDescriptor.h:
  • pal/graphics/WebGPU/WebGPUCompareFunction.h:
  • pal/graphics/WebGPU/WebGPUCompilationInfo.h:
  • pal/graphics/WebGPU/WebGPUCompilationMessage.h:
  • pal/graphics/WebGPU/WebGPUCompilationMessageType.h:
  • pal/graphics/WebGPU/WebGPUComputePassDescriptor.h:
  • pal/graphics/WebGPU/WebGPUComputePassEncoder.h:
  • pal/graphics/WebGPU/WebGPUComputePassTimestampLocation.h:
  • pal/graphics/WebGPU/WebGPUComputePipeline.h:
  • pal/graphics/WebGPU/WebGPUComputePipelineDescriptor.h:
  • pal/graphics/WebGPU/WebGPUCullMode.h:
  • pal/graphics/WebGPU/WebGPUDepthStencilState.h:
  • pal/graphics/WebGPU/WebGPUDevice.h:
  • pal/graphics/WebGPU/WebGPUDeviceDescriptor.h:
  • pal/graphics/WebGPU/WebGPUDeviceLostInfo.h:
  • pal/graphics/WebGPU/WebGPUDeviceLostReason.h:
  • pal/graphics/WebGPU/WebGPUErrorFilter.h:
  • pal/graphics/WebGPU/WebGPUExternalTexture.h:
  • pal/graphics/WebGPU/WebGPUExternalTextureBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUExternalTextureDescriptor.h:
  • pal/graphics/WebGPU/WebGPUFeatureName.h:
  • pal/graphics/WebGPU/WebGPUFilterMode.h:
  • pal/graphics/WebGPU/WebGPUFragmentState.h:
  • pal/graphics/WebGPU/WebGPUFrontFace.h:
  • pal/graphics/WebGPU/WebGPUImageCopyBuffer.h:
  • pal/graphics/WebGPU/WebGPUImageCopyExternalImage.h:
  • pal/graphics/WebGPU/WebGPUImageCopyTexture.h:
  • pal/graphics/WebGPU/WebGPUImageCopyTextureTagged.h:
  • pal/graphics/WebGPU/WebGPUImageDataLayout.h:
  • pal/graphics/WebGPU/WebGPUIndexFormat.h:
  • pal/graphics/WebGPU/WebGPULoadOp.h:
  • pal/graphics/WebGPU/WebGPUMapMode.h:
  • pal/graphics/WebGPU/WebGPUMultisampleState.h:
  • pal/graphics/WebGPU/WebGPUObjectDescriptorBase.h:
  • pal/graphics/WebGPU/WebGPUOutOfMemoryError.h:

(PAL::WebGPU::OutOfMemoryError::create):

  • pal/graphics/WebGPU/WebGPUPipelineDescriptorBase.h:
  • pal/graphics/WebGPU/WebGPUPipelineLayout.h:
  • pal/graphics/WebGPU/WebGPUPipelineLayoutDescriptor.h:
  • pal/graphics/WebGPU/WebGPUPipelineStatisticName.h:
  • pal/graphics/WebGPU/WebGPUPowerPreference.h:
  • pal/graphics/WebGPU/WebGPUPredefinedColorSpace.h:
  • pal/graphics/WebGPU/WebGPUPrimitiveState.h:
  • pal/graphics/WebGPU/WebGPUPrimitiveTopology.h:
  • pal/graphics/WebGPU/WebGPUProgrammableStage.h:
  • pal/graphics/WebGPU/WebGPUQuerySet.h:
  • pal/graphics/WebGPU/WebGPUQuerySetDescriptor.h:
  • pal/graphics/WebGPU/WebGPUQueryType.h:
  • pal/graphics/WebGPU/WebGPUQueue.h:
  • pal/graphics/WebGPU/WebGPURenderBundle.h:
  • pal/graphics/WebGPU/WebGPURenderBundleDescriptor.h:
  • pal/graphics/WebGPU/WebGPURenderBundleEncoder.h:
  • pal/graphics/WebGPU/WebGPURenderBundleEncoderDescriptor.h:
  • pal/graphics/WebGPU/WebGPURenderPassColorAttachment.h:
  • pal/graphics/WebGPU/WebGPURenderPassDepthStencilAttachment.h:
  • pal/graphics/WebGPU/WebGPURenderPassDescriptor.h:
  • pal/graphics/WebGPU/WebGPURenderPassEncoder.h:
  • pal/graphics/WebGPU/WebGPURenderPassLayout.h:
  • pal/graphics/WebGPU/WebGPURenderPassTimestampLocation.h:
  • pal/graphics/WebGPU/WebGPURenderPipeline.h:
  • pal/graphics/WebGPU/WebGPURenderPipelineDescriptor.h:
  • pal/graphics/WebGPU/WebGPURequestAdapterOptions.h:
  • pal/graphics/WebGPU/WebGPUSampler.h:
  • pal/graphics/WebGPU/WebGPUSamplerBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUSamplerBindingType.h:
  • pal/graphics/WebGPU/WebGPUSamplerDescriptor.h:
  • pal/graphics/WebGPU/WebGPUShaderModule.h:
  • pal/graphics/WebGPU/WebGPUShaderModuleDescriptor.h:
  • pal/graphics/WebGPU/WebGPUShaderStage.h:
  • pal/graphics/WebGPU/WebGPUStencilFaceState.h:
  • pal/graphics/WebGPU/WebGPUStencilOperation.h:
  • pal/graphics/WebGPU/WebGPUStorageTextureAccess.h:
  • pal/graphics/WebGPU/WebGPUStorageTextureBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUStoreOp.h:
  • pal/graphics/WebGPU/WebGPUSupportedFeatures.h:
  • pal/graphics/WebGPU/WebGPUSupportedLimits.h:
  • pal/graphics/WebGPU/WebGPUTexture.h:
  • pal/graphics/WebGPU/WebGPUTextureAspect.h:
  • pal/graphics/WebGPU/WebGPUTextureBindingLayout.h:
  • pal/graphics/WebGPU/WebGPUTextureDescriptor.h:
  • pal/graphics/WebGPU/WebGPUTextureDimension.h:
  • pal/graphics/WebGPU/WebGPUTextureFormat.h:
  • pal/graphics/WebGPU/WebGPUTextureSampleType.h:
  • pal/graphics/WebGPU/WebGPUTextureUsage.h:
  • pal/graphics/WebGPU/WebGPUTextureView.h:
  • pal/graphics/WebGPU/WebGPUTextureViewDescriptor.h:
  • pal/graphics/WebGPU/WebGPUTextureViewDimension.h:
  • pal/graphics/WebGPU/WebGPUUncapturedErrorEvent.h:
  • pal/graphics/WebGPU/WebGPUUncapturedErrorEventInit.h:
  • pal/graphics/WebGPU/WebGPUValidationError.h:
  • pal/graphics/WebGPU/WebGPUVertexAttribute.h:
  • pal/graphics/WebGPU/WebGPUVertexBufferLayout.h:
  • pal/graphics/WebGPU/WebGPUVertexFormat.h:
  • pal/graphics/WebGPU/WebGPUVertexState.h:
  • pal/graphics/WebGPU/WebGPUVertexStepMode.h:
11:52 AM Changeset in webkit [285793] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Initialize m_usesT2
https://bugs.webkit.org/show_bug.cgi?id=233095

Reviewed by Alexey Shvayka.

m_usesT2 is not initialized as "false" correctly.

  • yarr/YarrJIT.cpp:
11:38 AM Changeset in webkit [285792] by mmaxfield@apple.com
  • 37 edits in trunk/Source/WebGPU

[WebGPU] Add necessary additions to WebGPU.framework
https://bugs.webkit.org/show_bug.cgi?id=233091

Reviewed by Dean Jackson.

WebGPU.framework's header file is lagging a bit behind the official WebGPU API.
This updates a companion header, WebGPUExt.h, with the necessary additions.
I don't want to modify the primary header, WebGPU.h, because it's shared among
multiple projects, so coordination is necessary to modify it.

  • WebGPU/Adapter.h:
  • WebGPU/Adapter.mm:

(WebGPU::Adapter::getFeatureAtIndex):
(wgpuAdapterGetFeatureAtIndex):

  • WebGPU/BindGroup.h:
  • WebGPU/BindGroup.mm:

(WebGPU::BindGroup::setLabel):
(wgpuBindGroupSetLabel):

  • WebGPU/BindGroupLayout.h:
  • WebGPU/BindGroupLayout.mm:

(WebGPU::BindGroupLayout::setLabel):
(wgpuBindGroupLayoutSetLabel):

  • WebGPU/Buffer.h:
  • WebGPU/Buffer.mm:

(WebGPU::Buffer::setLabel):
(wgpuBufferSetLabel):

  • WebGPU/CommandBuffer.h:
  • WebGPU/CommandBuffer.mm:

(WebGPU::CommandBuffer::setLabel):
(wgpuCommandBufferSetLabel):

  • WebGPU/CommandEncoder.h:
  • WebGPU/CommandEncoder.mm:

(WebGPU::CommandEncoder::fillBuffer):
(WebGPU::CommandEncoder::setLabel):
(wgpuCommandEncoderFillBuffer):
(wgpuCommandEncoderSetLabel):

  • WebGPU/ComputePassEncoder.h:
  • WebGPU/ComputePassEncoder.mm:

(WebGPU::ComputePassEncoder::setLabel):
(wgpuComputePassEncoderSetLabel):

  • WebGPU/Device.h:
  • WebGPU/Device.mm:

(WebGPU::Device::setLabel):
(wgpuDeviceSetLabel):

  • WebGPU/Instance.mm:

(wgpuGetProcAddress):

  • WebGPU/PipelineLayout.h:
  • WebGPU/PipelineLayout.mm:

(WebGPU::PipelineLayout::setLabel):
(wgpuPipelineLayoutSetLabel):

  • WebGPU/QuerySet.h:
  • WebGPU/QuerySet.mm:

(WebGPU::QuerySet::setLabel):
(wgpuQuerySetSetLabel):

  • WebGPU/Queue.h:
  • WebGPU/Queue.mm:

(WebGPU::Queue::setLabel):
(wgpuQueueSetLabel):

  • WebGPU/RenderBundle.h:
  • WebGPU/RenderBundle.mm:

(WebGPU::RenderBundle::setLabel):
(wgpuRenderBundleSetLabel):

  • WebGPU/RenderBundleEncoder.h:
  • WebGPU/RenderBundleEncoder.mm:

(WebGPU::RenderBundleEncoder::setLabel):
(wgpuRenderBundleEncoderSetLabel):

  • WebGPU/RenderPassEncoder.h:
  • WebGPU/RenderPassEncoder.mm:

(WebGPU::RenderPassEncoder::setLabel):
(wgpuRenderPassEncoderSetLabel):

  • WebGPU/Sampler.h:
  • WebGPU/Sampler.mm:

(WebGPU::Sampler::setLabel):
(wgpuSamplerSetLabel):

  • WebGPU/Texture.h:
  • WebGPU/Texture.mm:

(WebGPU::Texture::setLabel):
(wgpuTextureSetLabel):

  • WebGPU/TextureView.h:
  • WebGPU/TextureView.mm:

(WebGPU::TextureView::setLabel):
(wgpuTextureViewSetLabel):

  • WebGPU/WebGPUExt.h:
10:47 AM Changeset in webkit [285791] by ntim@apple.com
  • 5 edits in trunk

Modal dialogs should make the root element unfocusable
https://bugs.webkit.org/show_bug.cgi?id=233099

Reviewed by Simon Fraser.

From https://html.spec.whatwg.org/multipage/interaction.html#inert,

A Document document is blocked by a modal dialog subject if subject is
the topmost dialog element in document's top layer. While document is
so blocked, every node that is connected to document, with the
exception of the subject element and its shadow-including descendants,
must be marked inert.

RenderStyle::effectiveInert() already matches this definition, Node::deprecatedIsInert() does not.

Main reason the removed check was there is to prevent the whole document from being inert to hit-testing, but with the RenderStyle
approach, we instead override effectiveInert to false for the modal dialog. Removing this check for focus is absolutely fine
however, since focusability isn't inherited (Node::deprecatedIsInert is only used for focus).

Tests added by this Chromium WPT: https://github.com/web-platform-tests/wpt/commit/0457111e7109ec3d9e575aa421b96d8c36ce2ae8

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html:

Source/WebCore:

  • dom/Node.cpp:

(WebCore::Node::deprecatedIsInert const):

10:38 AM Changeset in webkit [285790] by Simon Fraser
  • 16 edits in trunk/Source

Attach IOHIDEvent timestamps to wheel events
https://bugs.webkit.org/show_bug.cgi?id=233051

Reviewed by Wenson Hsieh.
Source/WebCore:

On some macOS devices, there can be significant deltas between NSEvent timestamps,
and the timestamps on underlying IOHIDEvents (rdar://85309639). This makes momentum
velocity computation unpredictable; we can get better results by using IOHIDEvent
timestamps.

  • platform/PlatformWheelEvent.cpp:

(WebCore::PlatformWheelEvent::createFromGesture):

  • platform/PlatformWheelEvent.h:

(WebCore::PlatformWheelEvent::ioHIDEventTimestamp const):

  • platform/mac/PlatformEventFactoryMac.h:
  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::eventTimeStampSince1970):
(WebCore::PlatformMouseEventBuilder::PlatformMouseEventBuilder):
(WebCore::PlatformWheelEventBuilder::PlatformWheelEventBuilder):
(WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):

Source/WebCore/PAL:

Expose a few bits of SPI needed.

  • pal/spi/cg/CoreGraphicsSPI.h:
  • pal/spi/cocoa/IOKitSPI.h:

Source/WebKit:

On some macOS devices, there can be significant deltas between NSEvent timestamps,
and the timestamps on underlying IOHIDEvents (rdar://85309639). This makes momentum
velocity computation unpredictable; we can get better results by using IOHIDEvent
timestamps.

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):

  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::WebWheelEvent):
(WebKit::WebWheelEvent::encode const):
(WebKit::WebWheelEvent::decode):

  • Shared/WebWheelEvent.h:

(WebKit::WebWheelEvent::ioHIDEventTimestamp const):

  • Shared/WebWheelEventCoalescer.cpp:

(WebKit::WebWheelEventCoalescer::coalesce):

  • Shared/ios/WebIOSEventFactory.mm:

(WebIOSEventFactory::createWebWheelEvent):

  • Shared/mac/NativeWebGestureEventMac.mm:
  • Shared/mac/WebEventFactory.mm:

(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):

10:33 AM Changeset in webkit [285789] by fpizlo@apple.com
  • 96 edits
    15 adds
    16 deletes in trunk/Source/bmalloc

[libpas] update to 48d608bf31ba92f8059d2c76488f00c52aaca15a: changes to support universal isoheaps
https://bugs.webkit.org/show_bug.cgi?id=233094

Reviewed by Yusuke Suzuki.

This includes a bunch of changes to make it possible to use isoheaps universally:

  • The bmalloc_heap API now supports isoheaped array allocations and isoheaped objects with flexible array members (i.e. flex).
  • Array allocations are now byte-based, not count-based, by default. When I first wrote libpas, I was sure that it would be easier for everyone if array allocation was engineered to take the array length, and the allocator worked things out from there. But this doesn't work well when the rubber hits the road:

-> Array allocation sites already know the size in bytes, and often don't even have a convenient way

of passing the length to the allocator.

-> Performing the multiplication at the allocation site means we are multiplying by a constant rather

than multiplying by a variable (as the by-count array allocation sites were doing before).

-> C++ operator new[] takes the size, not the count (though this matters less, since operator new[]

isn't useful for isoheaps anyway).

  • All allocation sites now have the fast path hacks that the intrinsic allocation fast path had. Specifically, they all now compile to something that has no stack frame and doesn't require PAC. The "slow" path is a tail call. Note that because that path isn't actually all that slow, it's called the "casual" path.
  • Size class lookup tables can now be decommitted. This is accomplished using a thing called pas_expendable_memory.
  • The status reporter can now report the type name of isoheaps. This relies on bmalloc_heap now using its own kind of type, rather than the generic libpas pas_simple_type, so that it can have a string. This change required corresponding changes in IsoHeap.h and bmalloc.cpp.
  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/IsoHeap.h:

(bmalloc::api::IsoHeap::allocate):
(bmalloc::api::IsoHeap::tryAllocate):
(bmalloc::api::IsoHeap::provideHeap):

  • bmalloc/bmalloc.cpp:

(bmalloc::api::mallocOutOfLine):

  • libpas/.gitignore:
  • libpas/CMakeLists.txt: Added.
  • libpas/README: Added.
  • libpas/clean.sh: Added.
  • libpas/libpas.xcodeproj/project.pbxproj:
  • libpas/src/libpas/bmalloc_heap.c:

(bmalloc_try_allocate_casual):
(bmalloc_allocate_casual):
(bmalloc_try_iso_allocate_casual):
(bmalloc_iso_allocate_casual):
(bmalloc_try_allocate_array_by_size_with_alignment_casual):
(bmalloc_allocate_array_by_size_with_alignment_casual):
(bmalloc_try_iso_allocate_array_by_size):
(bmalloc_iso_allocate_array_by_size):
(bmalloc_try_iso_allocate_zeroed_array_by_size):
(bmalloc_iso_allocate_zeroed_array_by_size):
(bmalloc_try_iso_allocate_array_by_size_with_alignment):
(bmalloc_iso_allocate_array_by_size_with_alignment):
(bmalloc_try_iso_reallocate_array_by_size):
(bmalloc_iso_reallocate_array_by_size):
(bmalloc_try_iso_allocate_array_by_count):
(bmalloc_iso_allocate_array_by_count):
(bmalloc_try_iso_allocate_array_by_count_with_alignment):
(bmalloc_iso_allocate_array_by_count_with_alignment):
(bmalloc_try_iso_reallocate_array_by_count):
(bmalloc_iso_reallocate_array_by_count):
(bmalloc_try_allocate_flex_with_alignment_casual):
(bmalloc_allocate_flex_with_alignment_casual):
(bmalloc_try_allocate_flex):
(bmalloc_allocate_flex):
(bmalloc_try_allocate_zeroed_flex):
(bmalloc_allocate_zeroed_flex):
(bmalloc_try_allocate_flex_with_alignment):
(bmalloc_allocate_flex_with_alignment):
(bmalloc_try_reallocate_flex):
(bmalloc_reallocate_flex):
(bmalloc_try_allocate_auxiliary_with_alignment_casual):
(bmalloc_allocate_auxiliary_with_alignment_casual):
(bmalloc_heap_ref_get_type_size):
(bmalloc_get_allocation_size):
(bmalloc_allocate_slow): Deleted.
(bmalloc_try_iso_allocate_array): Deleted.
(bmalloc_iso_allocate_array): Deleted.
(bmalloc_try_iso_allocate_array_with_alignment): Deleted.
(bmalloc_iso_allocate_array_with_alignment): Deleted.

  • libpas/src/libpas/bmalloc_heap.h:
  • libpas/src/libpas/bmalloc_heap_config.h:
  • libpas/src/libpas/bmalloc_heap_inlines.h:

(bmalloc_try_allocate_inline):
(bmalloc_allocate_inline):
(bmalloc_try_iso_allocate_inline):
(bmalloc_iso_allocate_inline):
(bmalloc_try_iso_allocate_array_by_size_inline):
(bmalloc_try_iso_allocate_zeroed_array_by_size_inline):
(bmalloc_try_iso_allocate_array_by_size_with_alignment_inline):
(bmalloc_try_iso_allocate_array_by_count_inline):
(bmalloc_try_iso_allocate_array_by_count_with_alignment_inline):
(bmalloc_iso_allocate_array_by_size_inline):
(bmalloc_iso_allocate_zeroed_array_by_size_inline):
(bmalloc_iso_allocate_array_by_size_with_alignment_inline):
(bmalloc_iso_allocate_array_by_count_inline):
(bmalloc_iso_allocate_array_by_count_with_alignment_inline):
(bmalloc_try_iso_reallocate_array_by_size_inline):
(bmalloc_iso_reallocate_array_by_size_inline):
(bmalloc_try_iso_reallocate_array_by_count_inline):
(bmalloc_iso_reallocate_array_by_count_inline):
(bmalloc_try_allocate_flex_inline):
(bmalloc_allocate_flex_inline):
(bmalloc_try_allocate_zeroed_flex_inline):
(bmalloc_allocate_zeroed_flex_inline):
(bmalloc_try_allocate_flex_with_alignment_inline):
(bmalloc_allocate_flex_with_alignment_inline):
(bmalloc_try_reallocate_flex_inline):
(bmalloc_reallocate_flex_inline):
(bmalloc_try_allocate_auxiliary_inline):
(bmalloc_allocate_auxiliary_inline):
(bmalloc_try_allocate_auxiliary_with_alignment_inline):
(bmalloc_allocate_auxiliary_with_alignment_inline):
(bmalloc_try_iso_allocate_array_inline): Deleted.
(bmalloc_try_iso_allocate_array_with_alignment_inline): Deleted.
(bmalloc_iso_allocate_array_inline): Deleted.
(bmalloc_iso_allocate_array_with_alignment_inline): Deleted.

  • libpas/src/libpas/bmalloc_heap_innards.h:
  • libpas/src/libpas/bmalloc_heap_ref.h:
  • libpas/src/libpas/bmalloc_type.c: Added.

(bmalloc_type_create):
(bmalloc_type_try_name_dump):
(bmalloc_type_name_dump):
(bmalloc_type_dump):
(bmalloc_type_as_heap_type_dump):

  • libpas/src/libpas/bmalloc_type.h: Added.

(bmalloc_type_size):
(bmalloc_type_alignment):
(bmalloc_type_name):
(bmalloc_type_as_heap_type_get_type_size):
(bmalloc_type_as_heap_type_get_type_alignment):

  • libpas/src/libpas/hotbit_heap_config.h:
  • libpas/src/libpas/iso_heap.c:

(iso_heap_ref_construct):
(iso_try_allocate_array_by_count):
(iso_allocate_array_by_count):
(iso_try_allocate_array_by_count_zeroed):
(iso_allocate_array_by_count_zeroed):
(iso_try_reallocate_array_by_count):
(iso_reallocate_array_by_count):
(iso_primitive_heap_ref_construct):
(iso_try_allocate_array): Deleted.
(iso_allocate_array): Deleted.
(iso_try_allocate_array_zeroed): Deleted.
(iso_allocate_array_zeroed): Deleted.
(iso_try_reallocate_array): Deleted.
(iso_reallocate_array): Deleted.

  • libpas/src/libpas/iso_heap.h:
  • libpas/src/libpas/iso_heap_config.h:
  • libpas/src/libpas/iso_heap_inlines.h:

(iso_try_allocate_inline):
(iso_allocate_inline):
(iso_try_allocate_array_by_count_inline):
(iso_allocate_array_by_count_inline):
(iso_try_allocate_array_by_count_zeroed_inline):
(iso_allocate_array_by_count_zeroed_inline):
(iso_try_reallocate_array_by_count_inline):
(iso_reallocate_array_by_count_inline):
(iso_try_allocate_array_inline): Deleted.
(iso_allocate_array_inline): Deleted.
(iso_try_allocate_array_zeroed_inline): Deleted.
(iso_allocate_array_zeroed_inline): Deleted.
(iso_try_reallocate_array_inline): Deleted.
(iso_reallocate_array_inline): Deleted.

  • libpas/src/libpas/iso_heap_ref.h:
  • libpas/src/libpas/iso_test_heap.c:

(iso_test_allocate):
(iso_test_allocate_array_by_count):
(iso_test_allocate_array): Deleted.

  • libpas/src/libpas/iso_test_heap.h:
  • libpas/src/libpas/iso_test_heap_config.h:
  • libpas/src/libpas/jit_heap_config.c:

(jit_type_dump):
(jit_heap_config_dump_shared_page_directory_arg):

  • libpas/src/libpas/jit_heap_config.h:
  • libpas/src/libpas/minalign32_heap.c:

(minalign32_allocate):
(minalign32_allocate_array_by_count):
(minalign32_allocate_array): Deleted.

  • libpas/src/libpas/minalign32_heap.h:
  • libpas/src/libpas/minalign32_heap_config.h:
  • libpas/src/libpas/pagesize64k_heap.c:

(pagesize64k_allocate):
(pagesize64k_allocate_array_by_count):
(pagesize64k_allocate_array): Deleted.

  • libpas/src/libpas/pagesize64k_heap.h:
  • libpas/src/libpas/pagesize64k_heap_config.h:
  • libpas/src/libpas/pas_baseline_allocator_table.c:

(initialize):

  • libpas/src/libpas/pas_basic_segregated_page_caches.h: Removed.
  • libpas/src/libpas/pas_compact_expendable_memory.c: Added.

(pas_compact_expendable_memory_allocate):
(pas_compact_expendable_memory_commit_if_necessary):
(pas_compact_expendable_memory_scavenge):

  • libpas/src/libpas/pas_compact_expendable_memory.h: Added.

(pas_compact_expendable_memory_note_use):
(pas_compact_expendable_memory_touch):

  • libpas/src/libpas/pas_compact_skip_list_node_ptr.h: Removed.
  • libpas/src/libpas/pas_compact_skip_list_node_ptr_ptr.h: Removed.
  • libpas/src/libpas/pas_config.h:
  • libpas/src/libpas/pas_count_lookup_mode.h: Removed.
  • libpas/src/libpas/pas_designated_intrinsic_heap.c:

(set_up_range):
(pas_designated_intrinsic_heap_initialize):

  • libpas/src/libpas/pas_designated_intrinsic_heap_inlines.h:

(pas_designated_index_result_get_allocator_index):

  • libpas/src/libpas/pas_ensure_heap_with_page_caches.c:

(pas_ensure_heap_with_page_caches):

  • libpas/src/libpas/pas_enumerate_segregated_heaps.c:

(pas_enumerate_segregated_heaps):

  • libpas/src/libpas/pas_expendable_memory.c: Added.

(pas_expendable_memory_construct):
(pas_expendable_memory_try_allocate):
(pas_expendable_memory_allocate):
(pas_expendable_memory_commit_if_necessary):
(scavenge_impl):
(pas_expendable_memory_scavenge):

  • libpas/src/libpas/pas_expendable_memory.h: Added.

(pas_expendable_memory_state_get_kind):
(pas_expendable_memory_state_get_version):
(pas_expendable_memory_state_create):
(pas_expendable_memory_state_with_kind):
(pas_expendable_memory_state_with_version):
(pas_expendable_memory_note_use_impl):
(pas_expendable_memory_note_use):
(pas_expendable_memory_num_pages):
(pas_expendable_memory_num_pages_in_use):

  • libpas/src/libpas/pas_heap.c:

(pas_heap_reset_heap_ref):
(pas_heap_ensure_size_directory_for_size_slow):
(pas_heap_ensure_size_directory_for_count_slow): Deleted.

  • libpas/src/libpas/pas_heap.h:
  • libpas/src/libpas/pas_heap_config.h:
  • libpas/src/libpas/pas_heap_config_inlines.h:
  • libpas/src/libpas/pas_heap_config_utils.h:
  • libpas/src/libpas/pas_heap_inlines.h:

(pas_heap_ensure_size_directory_for_size):
(pas_heap_ensure_size_directory_for_count): Deleted.

  • libpas/src/libpas/pas_heap_kind.h:

(pas_heap_kind_get_string):

  • libpas/src/libpas/pas_heap_ref_prefix.h:
  • libpas/src/libpas/pas_internal_config.h:
  • libpas/src/libpas/pas_intrinsic_heap_support.h:
  • libpas/src/libpas/pas_large_expendable_memory.c: Added.

(allocate_new_large_expendable_memory):
(pas_large_expendable_memory_allocate):
(pas_large_expendable_memory_commit_if_necessary):
(pas_large_expendable_memory_scavenge):

  • libpas/src/libpas/pas_large_expendable_memory.h: Added.

(pas_large_expendable_memory_payload):
(pas_large_expendable_memory_header_for_object):
(pas_large_expendable_memory_note_use):
(pas_large_expendable_memory_touch):

  • libpas/src/libpas/pas_large_heap.c:

(allocate_impl):

  • libpas/src/libpas/pas_local_allocator.c:

(pas_local_allocator_construct_unselected):

  • libpas/src/libpas/pas_local_allocator.h:
  • libpas/src/libpas/pas_local_allocator_config_kind.h:

(pas_local_allocator_config_kind_get_string):

  • libpas/src/libpas/pas_local_allocator_inlines.h:

(pas_local_allocator_start_allocating_in_primordial_partial_view):
(pas_local_allocator_refill_with_known_config):
(pas_local_allocator_try_allocate_slow_impl):
(pas_local_allocator_try_allocate):

  • libpas/src/libpas/pas_lock_free_read_hashtable.h: Removed.
  • libpas/src/libpas/pas_object_size_mode.h: Removed.
  • libpas/src/libpas/pas_page_malloc.c:

(pas_page_malloc_commit):
(decommit_impl):
(pas_page_malloc_decommit):
(pas_page_malloc_decommit_asymmetric):

  • libpas/src/libpas/pas_page_malloc.h:
  • libpas/src/libpas/pas_page_sharing_pool.c:

(pas_physical_page_sharing_pool_take_for_page_config):

  • libpas/src/libpas/pas_redundant_local_allocator_node.c:

(pas_redundant_local_allocator_node_create):

  • libpas/src/libpas/pas_scavenger.c:

(scavenger_thread_main):
(pas_scavenger_decommit_expendable_memory):
(pas_scavenger_run_synchronously_now):
(pas_scavenger_perform_synchronous_operation):

  • libpas/src/libpas/pas_scavenger.h:
  • libpas/src/libpas/pas_segregated_exclusive_view_inlines.h:

(pas_segregated_exclusive_view_note_eligibility):

  • libpas/src/libpas/pas_segregated_heap.c:

(max_object_size_for_page_config):
(max_bitfit_object_size_for_heap_config):
(pas_segregated_heap_construct):
(pas_segregated_heap_get_cached_index_for_heap_type):
(pas_segregated_heap_cached_index_is_set):
(pas_segregated_heap_get_cached_index):
(pas_segregated_heap_index_is_cached_index_and_cached_index_is_set):
(pas_segregated_heap_index_is_cached_index_or_cached_index_is_unset):
(pas_segregated_heap_index_is_not_cached_index_and_cached_index_is_set):
(pas_segregated_heap_index_is_greater_than_cached_index_and_cached_index_is_set):
(pas_segregated_heap_index_is_greater_equal_cached_index_and_cached_index_is_set):
(pas_segregated_heap_size_directory_for_index_slow):
(pas_segregated_heap_medium_allocator_index_for_index):
(compute_small_index_upper_bound):
(ensure_size_lookup):
(size_directory_min_heap_compare):
(size_directory_min_heap_get_index):
(size_directory_min_heap_set_index):
(recompute_size_lookup):
(rematerialize_size_lookup_set_index_to_small_allocator_index):
(rematerialize_size_lookup_set_index_to_small_size_directory):
(rematerialize_size_lookup_set_medium_directory_tuple):
(rematerialize_size_lookup_if_necessary):
(pas_segregated_heap_ensure_allocator_index):
(compute_ideal_object_size):
(ensure_size_lookup_if_necessary):
(check_size_lookup_recomputation_did_become_not_all_good):
(check_size_lookup_recomputation_set_index_to_small_allocator_index):
(check_size_lookup_recomputation_set_index_to_small_size_directory):
(check_size_lookup_recomputation_set_medium_directory_tuple):
(check_size_lookup_recomputation):
(pas_segregated_heap_ensure_size_directory_for_size):
(max_count_for_page_config): Deleted.
(max_small_count_for_heap_config): Deleted.
(ensure_count_lookup): Deleted.
(ensure_count_lookup_if_necessary): Deleted.
(pas_segregated_heap_ensure_size_directory_for_count): Deleted.

  • libpas/src/libpas/pas_segregated_heap.h:

(pas_segregated_heap_index_for_size):
(pas_segregated_heap_size_for_index):
(pas_segregated_heap_allocator_index_for_index_inline_only):
(pas_segregated_heap_allocator_index_for_index):
(pas_segregated_heap_allocator_index_for_size_inline_only):
(pas_segregated_heap_allocator_index_for_size):
(pas_segregated_heap_index_for_primitive_count): Deleted.
(pas_segregated_heap_primitive_count_for_index): Deleted.
(pas_segregated_heap_index_for_count): Deleted.
(pas_segregated_heap_count_for_index): Deleted.
(pas_segregated_heap_allocator_index_for_count_not_primitive): Deleted.

  • libpas/src/libpas/pas_segregated_heap_inlines.h:

(pas_segregated_heap_size_directory_for_index):
(pas_segregated_heap_size_directory_for_size):
(pas_segregated_heap_touch_lookup_tables):
(pas_segregated_heap_size_directory_for_count): Deleted.

  • libpas/src/libpas/pas_segregated_heap_page_sharing_mode.h: Removed.
  • libpas/src/libpas/pas_segregated_page.c:

(pas_segregated_page_construct):

  • libpas/src/libpas/pas_segregated_page_granule_use_count.h: Removed.
  • libpas/src/libpas/pas_segregated_page_header_placement_mode.h: Removed.
  • libpas/src/libpas/pas_segregated_shared_page_directory.c:

(take_last_empty_consider_view):

  • libpas/src/libpas/pas_segregated_shared_page_directory.h:
  • libpas/src/libpas/pas_segregated_size_directory.c:

(pas_segregated_size_directory_create):
(pas_segregated_size_directory_ensure_data):
(pas_segregated_size_directory_create_tlc_allocator):
(pas_segregated_size_directory_create_tlc_view_cache):
(pas_segregated_size_directory_select_allocator_slow):
(pas_segregated_size_directory_get_allocator_from_tlc):
(pas_segregated_size_directory_dump_reference):

  • libpas/src/libpas/pas_segregated_size_directory.h:

(pas_segregated_size_directory_decode_baseline_allocator_index):
(pas_segregated_size_directory_decode_min_index):
(pas_segregated_size_directory_encode_stuff):
(pas_segregated_size_directory_as_view):
(pas_segregated_size_directory_alignment):
(pas_segregated_size_directory_baseline_allocator_index):
(pas_segregated_size_directory_min_index):
(pas_segregated_size_directory_set_baseline_allocator_index):
(pas_segregated_size_directory_compare_and_swap_baseline_allocator_index_weak):
(pas_segregated_size_directory_set_min_index):
(pas_segregated_size_directory_has_tlc_allocator):

  • libpas/src/libpas/pas_segregated_size_directory_inlines.h:

(pas_segregated_size_directory_select_allocator):

  • libpas/src/libpas/pas_shared_handle_or_page.h: Removed.
  • libpas/src/libpas/pas_shared_handle_or_page_inlines.h: Removed.
  • libpas/src/libpas/pas_shared_page_directory_by_size.c:

(pas_shared_page_directory_by_size_get):
(pas_shared_page_directory_by_size_dump_directory_arg):

  • libpas/src/libpas/pas_shared_page_directory_by_size.h:
  • libpas/src/libpas/pas_simple_type.c: Added.

(pas_simple_type_dump):
(pas_simple_type_as_heap_type_dump):

  • libpas/src/libpas/pas_simple_type.h:
  • libpas/src/libpas/pas_size_lookup_mode.h: Added.

(pas_size_lookup_mode_get_string):

  • libpas/src/libpas/pas_size_thunk.h: Removed.
  • libpas/src/libpas/pas_skip_list.c: Removed.
  • libpas/src/libpas/pas_skip_list.h: Removed.
  • libpas/src/libpas/pas_skip_list_inlines.h: Removed.
  • libpas/src/libpas/pas_status_reporter.c:

(pas_status_reporter_dump_segregated_shared_page_directory):
(pas_status_reporter_dump_heap):
(pas_status_reporter_dump_thread_local_caches):
(pas_status_reporter_dump_configuration):
(pas_status_reporter_dump_physical_page_sharing_pool):
(dump_expendable_memory):
(pas_status_reporter_dump_expendable_memories):
(pas_status_reporter_dump_everything):

  • libpas/src/libpas/pas_status_reporter.h:
  • libpas/src/libpas/pas_thread_local_cache.c:

(allocate_cache):
(pas_thread_local_cache_create):
(pas_thread_local_cache_get_local_allocator_slow):
(pas_thread_local_cache_get_local_allocator_if_can_set_cache_for_possibly_uninitialized_index_slow):
(stop_local_allocators_if_necessary_set_bit_callback):
(pas_thread_local_cache_for_all):
(pas_thread_local_cache_get_local_allocator_if_can_set_cache_slow): Deleted.

  • libpas/src/libpas/pas_thread_local_cache.h:

(pas_thread_local_cache_get_local_allocator_direct_without_any_checks_whatsoever):
(pas_thread_local_cache_get_local_allocator_direct_for_initialization):
(pas_thread_local_cache_get_local_allocator_direct_unchecked):
(pas_thread_local_cache_get_local_allocator_direct):
(pas_thread_local_cache_get_local_allocator_for_possibly_uninitialized_but_not_unselected_index):
(pas_thread_local_cache_get_local_allocator_for_initialized_index):
(pas_thread_local_cache_get_local_allocator_for_possibly_uninitialized_index):
(pas_thread_local_cache_try_get_local_allocator_or_unselected_for_uninitialized_index):
(pas_thread_local_cache_try_get_local_allocator_for_possibly_uninitialized_but_not_unselected_index):
(pas_thread_local_cache_get_local_allocator_if_can_set_cache_for_possibly_uninitialized_index):
(pas_thread_local_cache_get_local_allocator_impl): Deleted.
(pas_thread_local_cache_get_local_allocator): Deleted.
(pas_thread_local_cache_try_get_local_allocator): Deleted.
(pas_thread_local_cache_get_local_allocator_if_can_set_cache): Deleted.

  • libpas/src/libpas/pas_thread_local_cache_layout.c:

(pas_thread_local_cache_layout_add_node):

  • libpas/src/libpas/pas_thread_local_cache_layout_node.c:

(pas_thread_local_cache_layout_node_construct):
(pas_thread_local_cache_layout_node_move):
(pas_thread_local_cache_layout_node_stop):

  • libpas/src/libpas/pas_try_allocate.h:

(pas_try_allocate_impl_casual_case):
(pas_try_allocate_impl_inline_only):
(pas_try_allocate_impl_size_thunk): Deleted.
(pas_try_allocate_impl): Deleted.

  • libpas/src/libpas/pas_try_allocate_array.h:

(pas_try_allocate_array_impl_casual_case_with_heap):
(pas_try_allocate_array_impl_inline_only_with_heap):
(pas_try_allocate_array_impl_inline_only):
(pas_try_allocate_array_impl): Deleted.

  • libpas/src/libpas/pas_try_allocate_common.h:

(pas_try_allocate_compute_aligned_size):
(pas_try_allocate_common_impl_fast):
(pas_try_allocate_common_impl_slow):
(pas_try_allocate_common_impl):

  • libpas/src/libpas/pas_try_allocate_intrinsic.h:

(pas_try_allocate_intrinsic_impl_casual_case):
(pas_try_allocate_intrinsic_impl_inline_only):
(pas_try_allocate_intrinsic_impl_medium_slow_case): Deleted.

  • libpas/src/libpas/pas_try_allocate_primitive.h:

(pas_try_allocate_primitive_impl_casual_case):
(pas_try_allocate_primitive_impl_inline_only):
(pas_try_allocate_primitive_impl): Deleted.

  • libpas/src/libpas/pas_try_reallocate.h:

(pas_try_allocate_for_reallocate_and_copy):
(pas_try_reallocate_table_segregated_case):
(pas_try_reallocate_table_bitfit_case):
(pas_try_reallocate):
(pas_try_reallocate_intrinsic_allocate_callback):
(pas_try_reallocate_intrinsic):
(pas_try_reallocate_single_allocate_callback):
(pas_try_reallocate_single):
(pas_try_reallocate_array_allocate_callback):
(pas_try_reallocate_array_by_size):
(pas_try_reallocate_array_by_count):
(pas_try_reallocate_primitive_allocate_callback):
(pas_try_reallocate_primitive):
(pas_try_reallocate_array): Deleted.

  • libpas/src/libpas/pas_typed_allocation_result.h: Removed.
  • libpas/src/libpas/pas_utility_heap.c:
  • libpas/src/libpas/pas_utility_heap_config.c:

(pas_utility_heap_config_dump_shared_page_directory_arg):

  • libpas/src/libpas/pas_utility_heap_config.h:
  • libpas/src/libpas/pas_utils.c:

(pas_reallocation_did_fail):

  • libpas/src/libpas/pas_utils.h:

(pas_compare_and_swap_uint8_weak):

  • libpas/src/libpas/pas_utils_prefix.h:
  • libpas/src/libpas/thingy_heap.c:

(thingy_try_allocate):
(thingy_try_allocate_zeroed):
(thingy_try_allocate_array):
(thingy_try_allocate_zeroed_array):
(thingy_try_reallocate_array):

  • libpas/src/libpas/thingy_heap_config.h:
  • libpas/src/test/ExpendableMemoryTests.cpp: Added.

(std::testPayloadImpl):
(std::forEachExpendableMemory):
(std::checkAllDecommitted):
(std::checkAllInUseCommitted):
(std::testSynchronousScavengingExpendsExpendableMemory):
(std::scavengerWillShutDown):
(std::testScavengerExpendsExpendableMemory):
(std::testSoManyHeaps):
(addExpendableMemoryTests):

  • libpas/src/test/HeapRefAllocatorIndexTests.cpp: Added.

(addHeapRefAllocatorIndexTests):

  • libpas/src/test/IsoHeapChaosTests.cpp:

(std::createIsoHeapRefForSize):
(std::createBmallocHeapRefForSize):
(std::testAllocationChaos):
(std::addIsoTests):
(std::addAllTests):
(addIsoHeapChaosTests):

  • libpas/src/test/IsoHeapPageSharingTests.cpp:

(std::testLargeHeapTakesPagesFromCorrectLargeHeapWithFancyOrder):
(std::addAllTests):

  • libpas/src/test/IsoHeapPartialAndBaselineTests.cpp:

(std::addScavengerDependentTests):

  • libpas/src/test/TSDTests.cpp:

(std::destructor):

  • libpas/src/test/TestHarness.cpp:

(EnablePageBalancing::EnablePageBalancing):
(DisablePageBalancing::DisablePageBalancing):
(main):

  • libpas/src/test/TestHarness.h:
  • libpas/src/test/ThingyAndUtilityHeapAllocationTests.cpp:

(std::verifyHeapEmpty):
(std::createIsolatedHeapRef):
(std::addSmallHeapTests):

12:45 AM Changeset in webkit [285788] by commit-queue@webkit.org
  • 4 edits in trunk

Prevent fused multiply add during ParseInt
https://bugs.webkit.org/show_bug.cgi?id=232951

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> on 2021-11-14
Reviewed by Yusuke Suzuki.

When parsing the string in parseInt, gcc can wrongfully generate
a fused multiply-add instruction, causing the conversion to be wrong
for some high values. An add followed by a multiply gives the correct
result and it is the code generated most of the times.

This patch adds a volatile qualifier to the number variable, so the
compiler doesn't try to optimize it, and enables a failing test on
mips.

Alternative solutions that I tried but gcc seems to ignore: #pragma
STDC FP_CONTRACT OFF, compiling with -ffp-contract=off, and setting function
attributes attribute((optimize("fp-contract=off"))) and
attribute((optimize("-ffp-contract=off"))), so volative seems to be
a good compromise.

The issue was found when cross compiling to mips with gcc 8.4.0 and
options -ffp-contract=off -mmadd4.

JSTests:

  • ChakraCore.yaml:

Source/JavaScriptCore:

  • runtime/ParseInt.h:

(JSC::parseInt):

Nov 13, 2021:

11:37 PM Changeset in webkit [285787] by Simon Fraser
  • 12 edits
    4 adds in trunk

Run a ScrollAnimationMomentum for the momentum phase of a scroll
https://bugs.webkit.org/show_bug.cgi?id=232897

Reviewed by Tim Horton.
Source/WebCore:

Run an animation for the momentum phase of a scroll, rather than scrolling in response
to wheel events, because it produces a smoother result with fewer dropped frames.

We re-use ScrollAnimationMomentum which is already used for scroll snap, but have to
allow it to yield unclamped coordinates, since using it for momentum can result in
rubber-banding.

When we get the momentum "began" event, we start the ScrollAnimationMomentum
using initial velocity computed from WheelEventDeltaFilter. ScrollingEffectsController then
ignores the reset of the momentum "changed" events.

We have to stop this animation when we receive a "begin" or "mayBegin" event, since
this indicates that the user has put fingers down on the trackpad.

Rename m_dragEndedScrollingVelocity to m_scrollingVelocityForScrollSnap for clarity
(at some point we should merge this with m_scrollingVelocityForMomentumAnimation).

Tests: fast/scrolling/mac/momentum-animator-in-overflow.html

fast/scrolling/mac/momentum-animator.html

  • page/WheelEventDeltaFilter.cpp:

(WebCore::WheelEventDeltaFilter::shouldApplyFilteringForEvent):

  • page/WheelEventDeltaFilter.h:
  • platform/PlatformWheelEvent.cpp:

(WebCore::operator<<):

  • platform/ScrollAnimationMomentum.cpp:

(WebCore::ScrollAnimationMomentum::startAnimatedScrollWithInitialVelocity):
(WebCore::ScrollAnimationMomentum::stop):
(WebCore::ScrollAnimationMomentum::serviceAnimation):

  • platform/ScrollAnimationMomentum.h:
  • platform/ScrollingEffectsController.cpp:

(WebCore::ScrollingEffectsController::ScrollingEffectsController):
(WebCore::ScrollingEffectsController::stopAnimatedNonRubberbandingScroll):
(WebCore::ScrollingEffectsController::startMomentumScrollWithInitialVelocity):

  • platform/ScrollingEffectsController.h:

(WebCore::ScrollingEffectsController::momentumScrollingAnimatorEnabled const):

  • platform/mac/ScrollingEffectsController.mm:

(WebCore::phaseToString):
(WebCore::ScrollingEffectsController::handleWheelEvent):
(WebCore::ScrollingEffectsController::startRubberBandAnimation):
(WebCore::ScrollingEffectsController::startRubberBandAnimationIfNecessary):
(WebCore::ScrollingEffectsController::processWheelEventForScrollSnap):

Source/WTF:

Set the MomentumScrollingAnimatorEnabled internal setting to off by default
while we bring up tests.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

LayoutTests:

Some tests that enable the momentum animator.

  • fast/scrolling/mac/momentum-animator-expected.txt: Added.
  • fast/scrolling/mac/momentum-animator-in-overflow-expected.txt: Added.
  • fast/scrolling/mac/momentum-animator-in-overflow.html: Added.
  • fast/scrolling/mac/momentum-animator.html: Added.
9:05 PM Changeset in webkit [285786] by timothy_horton@apple.com
  • 8 edits
    1 copy in trunk/Source/WebCore

Clean up IOKit SPI headers
https://bugs.webkit.org/show_bug.cgi?id=233093

Reviewed by Simon Fraser.

Source/WebCore:

  • platform/gamepad/cocoa/GameControllerGamepadProvider.mm:
  • platform/gamepad/mac/HIDGamepadProvider.h:
  • platform/gamepad/mac/HIDGamepadProvider.mm:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cg/CoreGraphicsSPI.h:
  • pal/spi/cocoa/IOKitSPI.h:
  • pal/spi/ios/IOKitSPIIOS.h: Added.
  • pal/spi/mac/IOKitSPIMac.h:

IOKit vends a much different set of public API on iOS vs. macOS,
so we have separate SPI headers to reduce the confusion.

Unfortunately, the SPI header for iOS was not explicitly named as such,
and started being used in some macOS code. For a while, this didn't lead
to any trouble because the aforementioned macOS code didn't ALSO have
the public SDK headers included, but a future patch from Simon will
use IOKitSPI.h in a place where the macOS IOKit public headers are included,
and thus we must make the split more explicit.

Rename IOKitSPI.h to IOKitSPIIOS.h; make IOKitSPI choose the right one.
Add some SPI defintions to IOKitSPIMac.h that were missing (which the
dependent code was getting via the iOS header on macOS).

4:19 PM Changeset in webkit [285785] by Said Abou-Hallawa
  • 4 edits in trunk

REGRESSION (r285618): [mac-wk1] ASSERTION FAILED: cgContext == [currentContext CGContext]
https://bugs.webkit.org/show_bug.cgi?id=233008
rdar://85311948

Reviewed by Wenson Hsieh.

Source/WebCore:

The assertion fails when loading the expected html page because one of
the elements has a CSS filter named "(#noop)" but the filter "noop" is
not defined.

The reason for the assertion to fail is we switch the PaintInfo to the
context of the CSSFilter::sourceImage() and we do not restore it back.
In fact CSSFilter::buildFilterFunctions() should fail since the filter
has only a reference filter and this reference filter does not exit. The
bug is CSSFilter::buildFilterFunctions() does not fail in this case.

Before r285618, CSSFilter::buildFilterFunctions() was not adding
SourceGraphic to m_functions. It was added as the input of the first
FilterEffect. This was fine since we were applying the lastEffect which
goes backward till it reaches the SourceGraphic.

But the plan is to apply the FilterFunctions from the first to the last
without having to go backward, so we need to add the SourceGraphic to
m_functions explicitly. The bug happens when no FilterFunction is built
successfully and we return 'true' because m_functions is not empty. It
has the SourceGraphic.

The fix is to add the SourceGraphic only when there is at least another
FilterFunction will be added to m_functions.

  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::buildFilterFunctions):

LayoutTests:

Unskip the test http/tests/css/filters-on-iframes-transform.html which
was skipped in r285656.

  • platform/mac-wk1/TestExpectations:
3:28 PM Changeset in webkit [285784] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Inline box end's padding/border/margin should be taken into account when computing horizontal position for bidi content
https://bugs.webkit.org/show_bug.cgi?id=233083

Reviewed by Antti Koivisto.

Let's decouple the "display box rect" and the "content right in visual order" computation.
There are runs (e.g. inline box end) that don't need to call displayBoxRect() but they
still affect the "content right in visual order" (<span style="border-right: 10px solid green">).

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineContent): add the additional lineRun.isInlineBoxEnd() case.

3:21 PM Changeset in webkit [285783] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Add support for optional bidi character coverage checking
https://bugs.webkit.org/show_bug.cgi?id=233049

Reviewed by Antti Koivisto.

This is in preparation for enabling bidi for IFC.

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

(WebCore::LayoutIntegration::canUseForFontAndText):
(WebCore::LayoutIntegration::canUseForRenderInlineChild):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

3:04 PM Changeset in webkit [285782] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Bring showRenderTree for IFC integration back
https://bugs.webkit.org/show_bug.cgi?id=233000

Reviewed by Antti Koivisto.

Currently showRenderTree comes back blank for IFC content.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::showInlineContent):

  • layout/integration/LayoutIntegrationBoxTree.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::outputLineTree const):

3:04 PM Changeset in webkit [285781] by Simon Fraser
  • 9 edits in trunk

Implement UIScriptController.sendEventStream() for DumpRenderTree
https://bugs.webkit.org/show_bug.cgi?id=233090

Reviewed by Wenson Hsieh.
Tools:

Implement UIScriptControllerMac::sendEventStream(), sharing some event dispatching code from
EventSendingController.

  • DumpRenderTree/mac/EventSendingController.h:
  • DumpRenderTree/mac/EventSendingController.mm:

(-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]):
(-[EventSendingController sendScrollEventAt:deltaX:deltaY:units:wheelPhase:momentumPhase:timestamp:]):

  • DumpRenderTree/mac/UIScriptControllerMac.h:
  • DumpRenderTree/mac/UIScriptControllerMac.mm:

(WTR::gesturePhaseFromString):
(WTR::momentumPhaseFromString):
(WTR::eventSenderFromView):
(WTR::UIScriptControllerMac::sendEventStream):

LayoutTests:

Convert one test that runs in WK1 to use sendEventStream().

  • fast/scrolling/overflow-scroll-past-max.html:
  • resources/ui-helper.js:
1:59 PM Changeset in webkit [285780] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Inline box end (opaque to bidi) should get the bidi level from its adjacent content
https://bugs.webkit.org/show_bug.cgi?id=233082

Reviewed by Antti Koivisto.

While the inline box start item (<span>) gets the bidi level from the next (adjacent) content, inline box end (</span>)
should get it from the previous content (these are opaque inline items).

e.g <span>bidi content</span>
both the inline box start and the inline box end items get their bidi level from the "bidi content" inline text item.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

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

1:58 PM Changeset in webkit [285779] by Jonathan Bedard
  • 7 edits in trunk/Tools

Unreviewed, reverting r285772.

Ownership issues in some XCode installs

Reverted changeset:

"[webkitpy] Symlink daemons into simulator runtime root"
https://bugs.webkit.org/show_bug.cgi?id=233080
https://commits.webkit.org/r285772

1:57 PM Changeset in webkit [285778] by commit-queue@webkit.org
  • 16 edits in trunk/LayoutTests

AX: Make 7 more layout tests async so that they pass in --release --accessibility-isolated-tree mode
https://bugs.webkit.org/show_bug.cgi?id=233085

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-11-13
Reviewed by Chris Fleizach.

This patch makes 7 more tests async so that they pass in --release
--accessibility-isolated-tree mode. This patch also adds some helper
functions to accessibility-helper.js.

  • accessibility/ancestor-computation.html:

Move waitForElement to accessibility-helpers.js and rename to
waitForElementById.

  • accessibility/color-well-expected.txt:
  • accessibility/color-well.html:
  • accessibility/mac/scrollbars.html:
  • accessibility/placeholder-expected.txt:
  • accessibility/placeholder.html:
  • accessibility/progressbar-expected.txt:
  • accessibility/progressbar.html:
  • accessibility/range-alter-by-percent-expected.txt:
  • accessibility/range-alter-by-percent.html:
  • accessibility/range-alter-by-step-expected.txt:
  • accessibility/range-alter-by-step.html:
  • accessibility/spinbutton-value-expected.txt:
  • accessibility/spinbutton-value.html:

Make tests async so they pass in isolated tree mode.
Minor updates to expectations:

  • Some variables renamed for better readability
  • Sometimes there is one more or one less newline after the test rewrites
  • resources/accessibility-helper.js:

(async waitForElementById): Added. Originally defined in
accessibility/ancestor-computation.html.
(async waitForExpression): Added.

10:49 AM Changeset in webkit [285777] by mmaxfield@apple.com
  • 2 edits in trunk

[WebGPU] Add WebGPU.xcodeproj to WebKit.xcworkspace
https://bugs.webkit.org/show_bug.cgi?id=233078

Reviewed by Dean Jackson.

Mechanical change. When building WebGPU becomes required,
people using this workspace will need it.

  • WebKit.xcworkspace/contents.xcworkspacedata:
10:38 AM Changeset in webkit [285776] by commit-queue@webkit.org
  • 9 edits in trunk

AX: Make accessibility/mac/header.html test async to fix it for isolated tree mode
https://bugs.webkit.org/show_bug.cgi?id=233017

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

Tools:

This patch implements the domIdentifier attribute for DumpRenderTree
elements. When making this test async, I wanted to use this attribute,
hence the implementation in this patch.

  • DumpRenderTree/AccessibilityUIElement.cpp:

(domIdentifierCallback): Added.
(AccessibilityUIElement::getJSClass):
Add "domIdentifer" entry to staticValues[].

  • DumpRenderTree/AccessibilityUIElement.h:

Add AccessibilityUIElement::domIdentifier const definition.

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::domIdentifier const): Added.

  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::domIdentifier const): Added.

  • DumpRenderTree/win/AccessibilityUIElementWin.cpp:

(AccessibilityUIElement::domIdentifier const):Added.

LayoutTests:

This test needs to be made async, as we need to wait for
accessibilityController.focusedElement to be synced with the DOM
focused element before running our expectations. This fixes the
test in isolated tree mode.

  • accessibility/mac/header-expected.txt:

Remove extra newline at end of the file.

  • accessibility/mac/header.html:

Make test async.

8:44 AM Changeset in webkit [285775] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][GPUP] Remove logging of used syscalls
https://bugs.webkit.org/show_bug.cgi?id=232839
<rdar://problem/85168823>

Reviewed by Brent Fulgham.

Based on telemetry, remove logging of used unix syscalls in the GPU process on macOS.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
8:13 AM Changeset in webkit [285774] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS][GPUP] Add telemetry for syscalls
https://bugs.webkit.org/show_bug.cgi?id=232888
<rdar://problem/85207011>

Reviewed by Brent Fulgham.

Add more telemetry for syscalls in the GPU process' sandbox on macOS. Also add entitlement for the GPU
process to use message filtering.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • Scripts/process-entitlements.sh:
8:09 AM Changeset in webkit [285773] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS][GPUP] Add system call logging
https://bugs.webkit.org/show_bug.cgi?id=233079
<rdar://problem/85362041>

Reviewed by Brent Fulgham.

Add telemetry for system calls in the GPU process' sandbox on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:

Nov 12, 2021:

8:45 PM Changeset in webkit [285772] by Jonathan Bedard
  • 7 edits in trunk/Tools

[webkitpy] Symlink daemons into simulator runtime root
https://bugs.webkit.org/show_bug.cgi?id=233080
<rdar://problem/85362551>

Reviewed by Brady Eidson.

  • Scripts/webkitpy/api_tests/manager.py:

(Manager._initialize_devices): Symlink daemons in the WebKit.framework into
simulator runtime root.

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

(FileSystem.symlink):

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

(MockFileSystem.symlink):

  • Scripts/webkitpy/port/darwin.py:

(DarwinPort.path_to_daemons):

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager.Runtime.init): Add root.
(SimulatedDeviceManager._create_device_with_runtime): Pass runtime.
(SimulatedDevice.init): Link to runtime.

  • Scripts/webkitpy/xcode/simulated_device_unittest.py:

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

7:22 PM Changeset in webkit [285771] by timothy@apple.com
  • 3 edits in trunk/Source/WebCore

webView._isBeingInspected does not work with Service Worker pages
https://bugs.webkit.org/show_bug.cgi?id=233062
rdar://problem/85354982

Reviewed by Devin Rousso.

  • inspector/WorkerInspectorController.cpp:

(WebCore::WorkerInspectorController::connectFrontend): Call updateServiceWorkerPageFrontendCount().
(WebCore::WorkerInspectorController::disconnectFrontend): Ditto.
(WebCore::WorkerInspectorController::updateServiceWorkerPageFrontendCount): Added.

  • inspector/WorkerInspectorController.h: Added updateServiceWorkerPageFrontendCount().
6:26 PM Changeset in webkit [285770] by Darin Adler
  • 15 edits in trunk

Make sort-Xcode-project-file idempotent
https://bugs.webkit.org/show_bug.cgi?id=233077

Reviewed by Wenson Hsieh.

Source/bmalloc:

  • libpas/libpas.xcodeproj/project.pbxproj: Sorted.

Source/JavaScriptCore:

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj: Sorted.

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj: Sorted.

Source/WebKitLegacy:

  • WebKitLegacy.xcodeproj/project.pbxproj: Sorted.

Tools:

  • Scripts/sort-Xcode-project-file:

(sortChildrenByFileName): Fix the "directories first" rule to work in a straightforward
way that is symmetric, and make the rest of the rules fall through when two files are
equal for the same reason. Also remove almost all names from the special list of filenames
to treat as files even though they have no extension. For example, "jsc" is a directory
in WebCore and it's not needed to sort products correctly in JavaScriptCore. And
"minidom" is both a product and a directory.

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Sorted.
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Ditto.
  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Ditto.
6:12 PM Changeset in webkit [285769] by Said Abou-Hallawa
  • 3 edits
    2 adds in trunk

REGRESSION(r285481): Infinite recursion with cyclic filter reference
https://bugs.webkit.org/show_bug.cgi?id=232972
rdar://85264240

Reviewed by Wenson Hsieh.

Source/WebCore:

Before r285481, we were creating the ImageBuffer of the referenced SVGElement
for the FEImage through RenderSVGResourceFilter::postApplyResource(). Now
we create this ImageBuffer through RenderSVGResourceFilter::applyResource().
The difference is at the end of RenderSVGResourceFilter::applyResource()
we add an entry to m_rendererFilterDataMap. This entry was preventing
trying to rebuild the SVGFilter for the same renderer if there is a
cyclic reference.

The fix is to add the entry in m_rendererFilterDataMap before creating the
SVGFilter. If an error happens, this entry will be removed before returning.

Test: svg/filters/feImage-cyclic-reference.svg

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):

LayoutTests:

  • svg/filters/feImage-cyclic-reference-expected.txt: Added.
  • svg/filters/feImage-cyclic-reference.svg: Added.
5:23 PM Changeset in webkit [285768] by Russell Epstein
  • 1 copy in tags/Safari-612.3.6.1.1

Tag Safari-612.3.6.1.1.

5:22 PM Changeset in webkit [285767] by Russell Epstein
  • 1 delete in tags/Safari-612.3.6.1.1

Delete tag.

5:18 PM Changeset in webkit [285766] by Russell Epstein
  • 1 edit in branches/safari-612.3.6.1-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h

Unreviewed build fix. rdar://problem/83159358

error: out-of-line definition of 'isolatedSession' does not match any declaration in 'WebKit::SessionSet'

5:16 PM Changeset in webkit [285765] by Jonathan Bedard
  • 9 edits in trunk/Tools

[git-webkit] Checkout pull-requests
https://bugs.webkit.org/show_bug.cgi?id=233042
<rdar://problem/85343364>

Reviewed by Dewei Zhu.

In GitHub, pull-requests are somewhat difficult to checkout because they're
attached to a specific user's mirror of WebKit. Automate this process.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git): Add username:branch regex.
(Git.checkout): Allow checking out of branches by username:branch.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git.init): Add git checkout -B.
(Git.checkout): -B will force checkout a branch, even if one already exists.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py:

(GitHub): Embed error message in 404 response.

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/checkout.py:

(Checkout.main): Allow direct checkout of pull-request instead of relying
exclusively on branches.

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/clean.py:

(Clean.main): Add newline.

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

(TestCheckout.test_no_pr_github):
(TestCheckout.test_no_pr_bitbucket):
(TestCheckout.test_pr_github):
(TestCheckout.test_pr_bitbucket):

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

5:16 PM Changeset in webkit [285764] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Null check m_spanElement
https://bugs.webkit.org/show_bug.cgi?id=230894

Patch by Rob Buis <rbuis@igalia.com> on 2021-11-12
Reviewed by Wenson Hsieh.

Source/WebCore:

Null check m_spanElement in ReplaceNodeWithSpanCommand::doUnapply, since
it may not be created by ReplaceNodeWithSpanCommand::doApply.

Test: editing/execCommand/default-paragraph-separator-crash.html

  • editing/ReplaceNodeWithSpanCommand.cpp:

(WebCore::ReplaceNodeWithSpanCommand::doUnapply):

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::makeInsertedContentRoundTrippableWithHTMLTreeBuilder):

LayoutTests:

  • editing/execCommand/default-paragraph-separator-crash-expected.txt: Added.
  • editing/execCommand/default-paragraph-separator-crash.html: Added.
4:55 PM Changeset in webkit [285763] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

_WKWebAuthenticationPanel should expose a way to encode CTAP commands
https://bugs.webkit.org/show_bug.cgi?id=232977
<rdar://85279329>

Patch by Garrett Davidson <davidson.garrettm@gmail.com> on 2021-11-12
Reviewed by David Kilzer.

Expose the existing CTAP command encoding through _WKWebAuthenticationPanel.

Covered by existing tests.

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

(coreUserVerificationAvailability):
(+[_WKWebAuthenticationPanel getClientDataJSONForAuthenticationType:challenge:origin:])
(+[_WKWebAuthenticationPanel encodeMakeCredentialCommandWithClientDataJSON:options:userVerificationAvailability:]):
(+[_WKWebAuthenticationPanel encodeGetAssertionCommandWithClientDataJSON:options:userVerificationAvailability:]):

4:11 PM Changeset in webkit [285762] by Russell Epstein
  • 1 copy in tags/Safari-612.3.6.2.1

Tag Safari-612.3.6.2.1.

4:08 PM Changeset in webkit [285761] by Russell Epstein
  • 1 copy in tags/Safari-612.3.6.0.1

Tag Safari-612.3.6.0.1.

4:08 PM Changeset in webkit [285760] by commit-queue@webkit.org
  • 72 edits
    94 adds
    2 deletes in trunk/JSTests

[JSC] update test262
https://bugs.webkit.org/show_bug.cgi?id=233058

For picking up changes to the ShadowRealms test set.

Patch by Joseph Griego <jgriego@igalia.com> on 2021-11-12
Reviewed by Yusuke Suzuki.

  • test262/expectations.yaml:
  • test262/harness/arrayContains.js: Removed.
  • test262/harness/async-gc.js:
  • test262/latest-changes-summary.txt:
  • test262/test/built-ins/Array/prototype/every/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/filter/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/find/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/findIndex/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/findLast/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/findLastIndex/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/forEach/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/map/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/reduce/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/reduceRight/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/Array/prototype/some/callbackfn-resize-arraybuffer.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/DataView/prototype/byteLength/resizable-array-buffer-auto.js:

(catch):

  • test262/test/built-ins/DataView/prototype/byteOffset/resizable-array-buffer-auto.js:

(catch):

  • test262/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/callback-not-callable-throws.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-reference.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-unregister.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/custom-this.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/holdings-multiple-values.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/length.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/name.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/prop-desc.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/reentrancy.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined-with-gc.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-not-object-throws.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/unregister/unregister-cleaned-up-cell.js:
  • test262/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-2.js:
  • test262/test/built-ins/RegExp/match-indices/indices-array-non-unicode-match.js:
  • test262/test/built-ins/RegExp/match-indices/indices-array-unicode-match.js:
  • test262/test/built-ins/RegExp/match-indices/indices-array-unicode-property-names.js:
  • test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-function-proto-from-caller-realm.js:
  • test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-function-throws-typeerror-from-caller-realm.js: Added.

(realm.Reflect.construct):

  • test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-function-throws-typeerror-on-non-primitive-arguments.js: Added.

(Symbol.toPrimitive):
(toString):
(valueOf):
(apply):

  • test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-function-throws-typeerror-on-non-primitive-returns.js: Added.

(r.evaluate):

  • test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-functions-accepts-callable-objects.js:
  • test262/test/built-ins/SharedArrayBuffer/prototype/prop-desc.js: Added.
  • test262/test/built-ins/Temporal/Duration/compare/calendar-fields-iterable.js:
  • test262/test/built-ins/Temporal/Duration/compare/relativeto-string-zoneddatetime-wrong-offset.js: Added.
  • test262/test/built-ins/Temporal/Duration/compare/relativeto-sub-minute-offset.js: Added.
  • test262/test/built-ins/Temporal/Duration/prototype/add/calendar-fields-iterable.js:
  • test262/test/built-ins/Temporal/Duration/prototype/add/relativeto-propertybag-no-time-units.js: Added.

(const.result.instance.add.new.Temporal.Duration):

  • test262/test/built-ins/Temporal/Duration/prototype/add/relativeto-string-zoneddatetime-wrong-offset.js: Added.

(instance.add.new.Temporal.Duration):

  • test262/test/built-ins/Temporal/Duration/prototype/add/relativeto-sub-minute-offset.js: Added.

(const.result.instance.add.new.Temporal.Duration):
(instance.add.new.Temporal.Duration):

  • test262/test/built-ins/Temporal/Duration/prototype/round/calendar-fields-iterable.js:
  • test262/test/built-ins/Temporal/Duration/prototype/round/relativeto-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/Duration/prototype/round/relativeto-string-zoneddatetime-wrong-offset.js: Added.
  • test262/test/built-ins/Temporal/Duration/prototype/round/relativeto-sub-minute-offset.js: Added.
  • test262/test/built-ins/Temporal/Duration/prototype/subtract/calendar-fields-iterable.js:
  • test262/test/built-ins/Temporal/Duration/prototype/subtract/relativeto-propertybag-no-time-units.js: Added.

(const.result.instance.subtract.new.Temporal.Duration):

  • test262/test/built-ins/Temporal/Duration/prototype/subtract/relativeto-string-zoneddatetime-wrong-offset.js: Added.

(instance.subtract.new.Temporal.Duration):

  • test262/test/built-ins/Temporal/Duration/prototype/subtract/relativeto-sub-minute-offset.js: Added.

(const.result.instance.subtract.new.Temporal.Duration):
(instance.subtract.new.Temporal.Duration):

  • test262/test/built-ins/Temporal/Duration/prototype/total/calendar-fields-iterable.js:
  • test262/test/built-ins/Temporal/Duration/prototype/total/relativeto-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/Duration/prototype/total/relativeto-string-zoneddatetime-wrong-offset.js: Added.
  • test262/test/built-ins/Temporal/Duration/prototype/total/relativeto-sub-minute-offset.js: Added.
  • test262/test/built-ins/Temporal/Instant/prototype/toString/timezone-offset.js: Added.

(test):

  • test262/test/built-ins/Temporal/Instant/prototype/toString/timezone-string-datetime.js:
  • test262/test/built-ins/Temporal/Instant/prototype/toString/timezone.js:
  • test262/test/built-ins/Temporal/PlainDate/prototype/since/largestunit-higher-units.js:
  • test262/test/built-ins/Temporal/PlainDate/prototype/toPlainDateTime/plaintime-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/PlainDate/prototype/toZonedDateTime/plaintime-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/PlainDateTime/prototype/withPlainTime/plaintime-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/PlainTime/compare/plaintime-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/PlainTime/from/plaintime-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/PlainTime/prototype/equals/plaintime-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/PlainTime/prototype/since/plaintime-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/PlainTime/prototype/until/plaintime-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/basic.js: Added.

(test):

  • test262/test/built-ins/Temporal/ZonedDateTime/from/zoneddatetime-sub-minute-offset.js: Added.

(string_appeared_here.forEach):

  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/equals/sub-minute-offset.js: Added.
  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/getISOFields/offset.js: Added.

(test):

  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/offset/basic.js: Added.

(test):

  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/since/sub-minute-offset.js: Added.
  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/toJSON/balance-negative-time-units.js:
  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/toJSON/offset.js: Added.

(test):

  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/toString/balance-negative-time-units.js:
  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/toString/offset.js: Added.

(test):

  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/until/sub-minute-offset.js: Added.
  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/with/offset-property-sub-minute.js: Added.

(string_appeared_here.forEach):

  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/with/receiver-offset-broken.js: Added.

(ObservedCalendar):
(ObservedCalendar.prototype.toString):
(ObservedCalendar.prototype.mergeFields):
(ObservedCalendar.prototype.resetCalls):

  • test262/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/plaintime-propertybag-no-time-units.js: Added.
  • test262/test/built-ins/Temporal/getOwnPropertyNames.js:
  • test262/test/built-ins/TypedArray/prototype/every/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/filter/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/find/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/findIndex/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/findLast/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/findLastIndex/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/forEach/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/map/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/reduce/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/reduceRight/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/some/callbackfn-resize.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js:
  • test262/test/harness/arrayContains.js: Removed.
  • test262/test/harness/testTypedArray.js:
  • test262/test/intl402/Collator/prototype/resolvedOptions/order.js:
  • test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order-dayPeriod.js:
  • test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order-fractionalSecondDigits.js:
  • test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order-style.js:
  • test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order.js:
  • test262/test/intl402/ListFormat/prototype/resolvedOptions/order.js:
  • test262/test/intl402/NumberFormat/constructor-options-roundingMode-invalid.js: Added.

(brokenToString.toString):

  • test262/test/intl402/NumberFormat/constructor-options-throwing-getters-rounding-mode.js: Added.

(get roundingMode):

  • test262/test/intl402/NumberFormat/constructor-signDisplay-negative.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-ceil.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-expand.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-floor.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-ceil.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-even.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-expand.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-floor.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-trunc.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-trunc.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-de-DE.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-en-US.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-ja-JP.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-ko-KR.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-zh-TW.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-de-DE.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-en-US.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-ja-JP.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-ko-KR.js: Added.
  • test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-zh-TW.js: Added.
  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-de-DE.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-en-US.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-ja-JP.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-ko-KR.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-zh-TW.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-de-DE.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-en-US.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-ja-JP.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-ko-KR.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-zh-TW.js: Added.

(verifyFormatParts):
(verifyFormatParts.nf.formatToParts):

  • test262/test/intl402/NumberFormat/prototype/resolvedOptions/order.js:
  • test262/test/intl402/NumberFormat/prototype/resolvedOptions/roundingMode.js: Added.
  • test262/test/intl402/PluralRules/prototype/resolvedOptions/order.js:
  • test262/test/intl402/RelativeTimeFormat/prototype/resolvedOptions/order.js:
  • test262/test/intl402/Segmenter/prototype/resolvedOptions/order.js:
  • test262/test/language/block-scope/syntax/for-in/acquire-properties-from-array.js:
  • test262/test/language/block-scope/syntax/for-in/acquire-properties-from-object.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-async-function-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-do-while-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-script-code-host-resolves-module-code.js:
  • test262/test/language/expressions/dynamic-import/usage/top-level-import-then-eval-script-code-host-resolves-module-code.js:
  • test262/test262-Revision.txt:
4:07 PM Changeset in webkit [285759] by Russell Epstein
  • 1 copy in tags/Safari-612.3.6.1.1

Tag Safari-612.3.6.1.1.

4:01 PM Changeset in webkit [285758] by guijemont@igalia.com
  • 2 edits in trunk/JSTests

Unskip typeProfiler/getter-richards.js on armv7
https://bugs.webkit.org/show_bug.cgi?id=233050

Unreviewed gardening.

Our arm bots are now fast enough to run this, it does still timeout on
some of our test mips devices though.

  • typeProfiler/getter-richards.js:
3:56 PM Changeset in webkit [285757] by bshafiei@apple.com
  • 1 copy in tags/Safari-613.1.7.4

Tag Safari-613.1.7.4.

3:54 PM Changeset in webkit [285756] by Russell Epstein
  • 3 edits in branches/safari-612.3.6.1-branch/Source/WebKit

Revert r285690. rdar://problem/83381842

3:54 PM Changeset in webkit [285755] by Russell Epstein
  • 2 edits in branches/safari-612.3.6.1-branch/Source/WebCore

Revert r285691. rdar://problem/83381842

3:54 PM Changeset in webkit [285754] by Russell Epstein
  • 3 edits in branches/safari-612.3.6.1-branch/Source/WebCore

Revert r285680. rdar://problem/85004449

3:54 PM Changeset in webkit [285753] by Russell Epstein
  • 3 edits in branches/safari-612.3.6.0-branch/Source/WebKit

Revert r285683. rdar://problem/83381842

3:54 PM Changeset in webkit [285752] by Russell Epstein
  • 2 edits in branches/safari-612.3.6.0-branch/Source/WebCore

Revert r285684. rdar://problem/83381842

3:54 PM Changeset in webkit [285751] by Russell Epstein
  • 3 edits in branches/safari-612.3.6.0-branch/Source/WebCore

Revert r285682. rdar://problem/85004449

3:48 PM Changeset in webkit [285750] by bshafiei@apple.com
  • 2 edits in branches/safari-613.1.7-branch/Source/WebCore/PAL

Cherry-pick r285744. rdar://problem/85341122

Stop statically declaring various UIFoundation constants in NSAttributedStringSPI.h
https://bugs.webkit.org/show_bug.cgi?id=233064
rdar://85341122

Reviewed by Tim Horton.

Replace these static NSString definitions with soft-linked constants instead.

  • pal/spi/cocoa/NSAttributedStringSPI.h:

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

3:47 PM Changeset in webkit [285749] by bshafiei@apple.com
  • 8 edits in branches/safari-613.1.7-branch/Source

Versioning.

WebKit-7613.1.7.4

3:45 PM Changeset in webkit [285748] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS][GPUP] Allow access to syscalls
https://bugs.webkit.org/show_bug.cgi?id=232825
<rdar://problem/85164522>

Reviewed by Brent Fulgham.

Based on telemetry, add access to unix syscalls in the GPU process on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
3:17 PM Changeset in webkit [285747] by Chris Dumez
  • 4 edits
    2 adds in trunk

Crash when accessing reason property of a newly created AbortSignal
https://bugs.webkit.org/show_bug.cgi?id=233066
<rdar://problem/85249306>

Reviewed by Geoffrey Garen.

Source/WebCore:

Make sure AbortSignal.reason get initialized to jsUndefined() by default
and not a default-constructed JSValue.

Test: fast/dom/AbortSignal-reason-crash.html

  • dom/AbortSignal.cpp:

(WebCore::AbortSignal::AbortSignal):

  • dom/AbortSignal.h:

LayoutTests:

Add layout test coverage.

  • fast/dom/AbortSignal-reason-crash-expected.txt: Added.
  • fast/dom/AbortSignal-reason-crash.html: Added.
3:11 PM Changeset in webkit [285746] by sihui_liu@apple.com
  • 6 edits
    1 add in trunk

Set default general storage directory to websiteDataDirectory
https://bugs.webkit.org/show_bug.cgi?id=232985

Reviewed by Geoffrey Garen.

Source/WebKit:

New API test: FileSystemAccess.MigrateToNewStorageDirectory

  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::defaultGeneralStorageDirectory):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/file-system-access.salt: Added.
3:00 PM Changeset in webkit [285745] by Ryan Haddad
  • 19 edits in trunk

Unreviewed, reverting r285583.

Seems to have caused many layout tests to become flaky
failures

Reverted changeset:

"[css-contain] Support contain:paint"
https://bugs.webkit.org/show_bug.cgi?id=224742
https://commits.webkit.org/r285583

2:47 PM Changeset in webkit [285744] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore/PAL

Stop statically declaring various UIFoundation constants in NSAttributedStringSPI.h
https://bugs.webkit.org/show_bug.cgi?id=233064
rdar://85341122

Reviewed by Tim Horton.

Replace these static NSString definitions with soft-linked constants instead.

  • pal/spi/cocoa/NSAttributedStringSPI.h:
2:32 PM Changeset in webkit [285743] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Regression(r285639) fast/dom/Geolocation/cached-position-iframe.html is frequently crashing on Mac-wk1
https://bugs.webkit.org/show_bug.cgi?id=233043
<rdar://problem/85343956>

Unreviewed, unskip the test now that Alexey reverted r285639.

  • platform/mac-wk1/TestExpectations:
2:20 PM Changeset in webkit [285742] by timothy@apple.com
  • 3 edits in trunk/Source/WebKit

Remove non-completionHandler version of -[WKWebView _loadServiceWorker:]
https://bugs.webkit.org/show_bug.cgi?id=233069
rdar://problem/85355540

Reviewed by Chris Dumez.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _loadServiceWorker:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h: Removed _loadServiceWorker:.
2:14 PM Changeset in webkit [285741] by Peng Liu
  • 12 edits in trunk

Promote WKPreferences._fullScreenEnabled to API
https://bugs.webkit.org/show_bug.cgi?id=230784
<rdar://83255308>

Reviewed by Jer Noble.

Source/WebKit:

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

(-[WKPreferences isElementFullscreenEnabled]):
(-[WKPreferences setElementFullscreenEnabled:]):

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

(-[WKWebView fullscreenState]):

  • UIProcess/Cocoa/FullscreenClient.h:
  • UIProcess/Cocoa/FullscreenClient.mm:

(WebKit::FullscreenClient::willEnterFullscreen):
(WebKit::FullscreenClient::didEnterFullscreen):
(WebKit::FullscreenClient::willExitFullscreen):
(WebKit::FullscreenClient::didExitFullscreen):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::WebViewImpl):

  • UIProcess/WebFullScreenManagerProxy.cpp:

(WebKit::WebFullScreenManagerProxy::willEnterFullScreen):
(WebKit::WebFullScreenManagerProxy::didEnterFullScreen):
(WebKit::WebFullScreenManagerProxy::willExitFullScreen):
(WebKit::WebFullScreenManagerProxy::didExitFullScreen):

  • UIProcess/WebFullScreenManagerProxy.h:

(WebKit::WebFullScreenManagerProxy::fullscreenState const):

Tools:

  • MiniBrowser/mac/AppDelegate.m:

(-[BrowserAppDelegate defaultConfiguration]):

2:11 PM Changeset in webkit [285740] by commit-queue@webkit.org
  • 11 edits in trunk

Implement custom element definition's *disable shadow* flag
https://bugs.webkit.org/show_bug.cgi?id=233023

Patch by Alexey Shvayka <ashvayka@apple.com> on 2021-11-12
Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing or failing later on.

  • web-platform-tests/custom-elements/CustomElementRegistry-expected.txt:
  • web-platform-tests/custom-elements/upgrading-expected.txt:
  • web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element-expected.txt:

Source/WebCore:

This change implements *disable shadow* flag that precludes attachShadow() [1]
as well as upgrading an element with already attached shadow root [2].

Aligns WebKit with Blink and Gecko.
Preserves the fast path for non-custom elements.

[1] https://dom.spec.whatwg.org/#ref-for-concept-custom-element-definition-disable-shadow
[2] https://html.spec.whatwg.org/multipage/custom-elements.html#upgrades:concept-custom-element-definition-disable-shadow

Tests: imported/w3c/web-platform-tests/custom-elements/CustomElementRegistry.html

imported/w3c/web-platform-tests/custom-elements/upgrading.html
imported/w3c/web-platform-tests/shadow-dom/Element-interface-attachShadow-custom-element.html

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::JSCustomElementInterface::JSCustomElementInterface):
(WebCore::JSCustomElementInterface::upgradeElement):

  • bindings/js/JSCustomElementInterface.h:

(WebCore::JSCustomElementInterface::disableShadow):
(WebCore::JSCustomElementInterface::isShadowDisabled const):

  • bindings/js/JSCustomElementRegistryCustom.cpp:

(WebCore::JSCustomElementRegistry::define):

  • dom/CustomElementRegistry.cpp:

(WebCore::CustomElementRegistry::addElementDefinition):

  • dom/CustomElementRegistry.h:

(WebCore::CustomElementRegistry::isShadowDisabled const):

  • dom/Element.cpp:

(WebCore::canAttachAuthorShadowRoot):

1:23 PM Changeset in webkit [285739] by Chris Dumez
  • 6 edits in trunk

Demote WKWebpagePreferences.captivePortalModeEnabled API to SPI
https://bugs.webkit.org/show_bug.cgi?id=233059

Reviewed by Geoffrey Garen.

Source/WebKit:

Demote WKWebpagePreferences.captivePortalModeEnabled API to SPI until we reach
agreement on a suitable API name.

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

(-[WKWebpagePreferences _setCaptivePortalModeEnabled:]):
(-[WKWebpagePreferences _captivePortalModeEnabled]):
(-[WKWebpagePreferences setCaptivePortalModeEnabled:]): Deleted.
(-[WKWebpagePreferences captivePortalModeEnabled]): Deleted.

  • UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h:

Tools:

Update API test accordingly.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
1:22 PM Changeset in webkit [285738] by commit-queue@webkit.org
  • 44 edits
    9 deletes in trunk

Unreviewed, reverting r285639.
https://bugs.webkit.org/show_bug.cgi?id=233065

Causes Geolocation test crashes

Reverted changeset:

"JSCallbackData should use lexical global object for errors
and lifecycle"
https://bugs.webkit.org/show_bug.cgi?id=232387
https://commits.webkit.org/r285639

12:38 PM Changeset in webkit [285737] by Chris Dumez
  • 3 edits
    1 copy
    1 add
    1 delete in trunk/Source/WebKit

Rename ProcessLauncherMac.mm to ProcessLauncherCocoa.mm
https://bugs.webkit.org/show_bug.cgi?id=233045
<rdar://problem/85347107>

Reviewed by Brent Fulgham.

Follow-up to r285729 to rename to ProcessLauncherCocoa.mm instead of ProcessLauncherDarwin.mm
given that the implementation is using NSBundle.

  • SourcesCocoa.txt:
  • UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm: Renamed from Source/WebKit/UIProcess/Launcher/darwin/ProcessLauncherDarwin.mm.

(WebKit::serviceName):
(WebKit::shouldLeakBoost):
(WebKit::systemDirectoryPath):
(WebKit::ProcessLauncher::launchProcess):
(WebKit::ProcessLauncher::terminateProcess):
(WebKit::ProcessLauncher::platformInvalidate):
(WebKit::ProcessLauncher::terminateXPCConnection):
(WebKit::terminateWithReason):

  • WebKit.xcodeproj/project.pbxproj:
12:15 PM Changeset in webkit [285736] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

REGRESSION (r285698): Build correction after refactoring id handling
https://bugs.webkit.org/show_bug.cgi?id=233052
<rdar://problem/85347865>

Reviewed by Chris Dumez.

Build fix after r285698. The new 'toNSData' method needs its namespace included.

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:

(WebKit::toASCDescriptor):
(WebKit::configureRegistrationRequestContext):
(WebKit::configurationAssertionRequestContext):
(WebKit::toNSData): Deleted.

12:09 PM Changeset in webkit [285735] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][GPUP] Block access to mach register
https://bugs.webkit.org/show_bug.cgi?id=232259
<rdar://problem/84624488>

Reviewed by Brent Fulgham.

Based on telemetry, block access to mach register in the GPU process on macOS.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
11:50 AM Changeset in webkit [285734] by don.olmstead@sony.com
  • 6 edits in trunk

[WinCairo] Add Little-CMS support
https://bugs.webkit.org/show_bug.cgi?id=233024

Reviewed by Michael Catanzaro.

.:

Search for LCMS2 and if its present turn it on for WinCairo.

  • Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

Centralize addition of LCMS2::LCMS2 to the root CMakeLists in WebCore.

  • CMakeLists.txt:
  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
11:13 AM Changeset in webkit [285733] by Jonathan Bedard
  • 8 edits in trunk/Tools

[git-webkit] Open closed pull-request when running pr
https://bugs.webkit.org/show_bug.cgi?id=232765
<rdar://problem/85084318>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/bitbucket.py:

(BitBucket.request): Ensure displayId is set when updating PR.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py:

(GitHub.request): Make sure that new pull-requests are open.

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py:

(PullRequest.main): Open closed pull-requests.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.PRGenerator.update): Only set head if user specifies head.

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

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

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

Null check host in SlotAssignment::assignSlots
https://bugs.webkit.org/show_bug.cgi?id=230899

Patch by Rob Buis <rbuis@igalia.com> on 2021-11-12
Reviewed by Darin Adler.

Source/WebCore:

Null check host in SlotAssignment::assignSlots.

Tests: fast/shadow-dom/shadow-root-gc-crash.html

  • dom/SlotAssignment.cpp:

(WebCore::SlotAssignment::assignSlots):

LayoutTests:

  • fast/shadow-dom/shadow-root-gc-crash-expected.txt: Added.
  • fast/shadow-dom/shadow-root-gc-crash.html: Added.
10:29 AM Changeset in webkit [285731] by Chris Dumez
  • 11 edits in trunk

Disable MathML when in Captive Portal Mode
https://bugs.webkit.org/show_bug.cgi?id=233013
<rdar://84567129>

Reviewed by Brent Fulgham.

Source/WebCore:

Add runtime feature flag for MathML and update implementation in WebCore to only support
MathML when the flag is on.

  • bindings/js/WebCoreBuiltinNames.h:
  • dom/Document.cpp:

(WebCore::Document::createElement):

  • mathml/MathMLElement.idl:
  • mathml/MathMLMathElement.idl:

Source/WebKit:

Turn off MathML support when in Captive Portal Mode.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WTF:

Add runtime feature flag for MathML.

  • Scripts/Preferences/WebPreferences.yaml:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
10:15 AM Changeset in webkit [285730] by mark.lam@apple.com
  • 454 edits in trunk/Source

Refactor allocateCell() and tryAllocateCell() to take VM& instead of Heap&.
https://bugs.webkit.org/show_bug.cgi?id=233028
rdar://85329680

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

allocateCell() and tryAllocateCell() can fetch Heap& from VM& themselves. This
allows us to make all the client code more terse, and also makes it easier to
redirect the underlying heap to allocate from later for global GC work.
Additionally, this will help make the global GC patch less of a mega patch and
easier to review later.

  • API/JSAPIGlobalObject.h:
  • API/JSAPIValueWrapper.h:
  • API/JSCallbackConstructor.h:
  • API/JSCallbackFunction.cpp:

(JSC::JSCallbackFunction::create):

  • API/JSCallbackObject.cpp:

(JSC::JSCallbackObject<JSGlobalObject>::create):

  • API/JSCallbackObject.h:
  • API/ObjCCallbackFunction.mm:

(JSC::ObjCCallbackFunction::create):

  • API/glib/JSAPIWrapperGlobalObject.cpp:

(JSC::JSCallbackObject<JSAPIWrapperGlobalObject>::create):

  • API/glib/JSCCallbackFunction.cpp:

(JSC::JSCCallbackFunction::create):

  • bytecode/EvalCodeBlock.h:
  • bytecode/ExecutableToCodeBlockEdge.cpp:

(JSC::ExecutableToCodeBlockEdge::create):

  • bytecode/FunctionCodeBlock.h:
  • bytecode/ModuleProgramCodeBlock.h:
  • bytecode/ProgramCodeBlock.h:
  • bytecode/UnlinkedEvalCodeBlock.h:
  • bytecode/UnlinkedFunctionCodeBlock.h:
  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecode/UnlinkedModuleProgramCodeBlock.h:
  • bytecode/UnlinkedProgramCodeBlock.h:
  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::create):

  • inspector/JSInjectedScriptHost.h:
  • inspector/JSInjectedScriptHostPrototype.h:
  • inspector/JSJavaScriptCallFrame.h:
  • inspector/JSJavaScriptCallFramePrototype.h:
  • jsc.cpp:

(JSCMemoryFootprint::create):
(JSFileDescriptor::create):

  • runtime/AggregateErrorConstructor.h:
  • runtime/AggregateErrorPrototype.h:
  • runtime/ArrayConstructor.h:
  • runtime/ArrayIteratorPrototype.h:
  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::create):

  • runtime/AsyncFromSyncIteratorPrototype.cpp:

(JSC::AsyncFromSyncIteratorPrototype::create):

  • runtime/AsyncFunctionConstructor.h:
  • runtime/AsyncFunctionPrototype.h:
  • runtime/AsyncGeneratorFunctionConstructor.h:
  • runtime/AsyncGeneratorFunctionPrototype.h:
  • runtime/AsyncGeneratorPrototype.h:
  • runtime/AsyncIteratorPrototype.h:
  • runtime/AtomicsObject.cpp:

(JSC::AtomicsObject::create):

  • runtime/BigIntConstructor.h:
  • runtime/BigIntObject.cpp:

(JSC::BigIntObject::create):

  • runtime/BigIntPrototype.h:
  • runtime/BooleanConstructor.h:
  • runtime/BooleanObject.h:

(JSC::BooleanObject::create):

  • runtime/BooleanPrototype.h:
  • runtime/BrandedStructure.cpp:

(JSC::BrandedStructure::create):

  • runtime/CachedTypes.cpp:

(JSC::CachedProgramCodeBlock::decode const):
(JSC::CachedModuleCodeBlock::decode const):
(JSC::CachedEvalCodeBlock::decode const):
(JSC::CachedFunctionCodeBlock::decode const):
(JSC::CachedFunctionExecutable::decode const):

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createEmpty):

  • runtime/ConsoleObject.h:
  • runtime/CustomGetterSetter.h:

(JSC::CustomGetterSetter::create):

  • runtime/DOMAttributeGetterSetter.h:
  • runtime/DateConstructor.h:
  • runtime/DateInstance.h:
  • runtime/DatePrototype.h:
  • runtime/DirectArguments.cpp:

(JSC::DirectArguments::createUninitialized):

  • runtime/DirectEvalExecutable.cpp:

(JSC::DirectEvalExecutable::create):

  • runtime/ErrorConstructor.h:
  • runtime/ErrorInstance.h:

(JSC::ErrorInstance::create):

  • runtime/ErrorPrototype.h:
  • runtime/Exception.cpp:

(JSC::Exception::create):

  • runtime/FinalizationRegistryConstructor.h:
  • runtime/FinalizationRegistryPrototype.h:
  • runtime/FunctionConstructor.h:
  • runtime/FunctionExecutable.h:
  • runtime/FunctionPrototype.h:
  • runtime/FunctionRareData.cpp:

(JSC::FunctionRareData::create):

  • runtime/GeneratorFunctionConstructor.h:
  • runtime/GeneratorFunctionPrototype.h:
  • runtime/GeneratorPrototype.h:
  • runtime/GetterSetter.h:
  • runtime/HashMapImpl.h:
  • runtime/IndirectEvalExecutable.cpp:

(JSC::IndirectEvalExecutable::createImpl):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::createFunctionThatMasqueradesAsUndefined):

  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::create):

  • runtime/IntlCollatorConstructor.cpp:

(JSC::IntlCollatorConstructor::create):

  • runtime/IntlCollatorPrototype.cpp:

(JSC::IntlCollatorPrototype::create):

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::create):

  • runtime/IntlDateTimeFormatConstructor.cpp:

(JSC::IntlDateTimeFormatConstructor::create):

  • runtime/IntlDateTimeFormatPrototype.cpp:

(JSC::IntlDateTimeFormatPrototype::create):

  • runtime/IntlDisplayNames.cpp:

(JSC::IntlDisplayNames::create):

  • runtime/IntlDisplayNamesConstructor.cpp:

(JSC::IntlDisplayNamesConstructor::create):

  • runtime/IntlDisplayNamesPrototype.cpp:

(JSC::IntlDisplayNamesPrototype::create):

  • runtime/IntlListFormat.cpp:

(JSC::IntlListFormat::create):

  • runtime/IntlListFormatConstructor.cpp:

(JSC::IntlListFormatConstructor::create):

  • runtime/IntlListFormatPrototype.cpp:

(JSC::IntlListFormatPrototype::create):

  • runtime/IntlLocale.cpp:

(JSC::IntlLocale::create):

  • runtime/IntlLocaleConstructor.cpp:

(JSC::IntlLocaleConstructor::create):

  • runtime/IntlLocalePrototype.cpp:

(JSC::IntlLocalePrototype::create):

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::create):

  • runtime/IntlNumberFormatConstructor.cpp:

(JSC::IntlNumberFormatConstructor::create):

  • runtime/IntlNumberFormatPrototype.cpp:

(JSC::IntlNumberFormatPrototype::create):

  • runtime/IntlObject.cpp:

(JSC::IntlObject::create):

  • runtime/IntlPluralRules.cpp:

(JSC::IntlPluralRules::create):

  • runtime/IntlPluralRulesConstructor.cpp:

(JSC::IntlPluralRulesConstructor::create):

  • runtime/IntlPluralRulesPrototype.cpp:

(JSC::IntlPluralRulesPrototype::create):

  • runtime/IntlRelativeTimeFormat.cpp:

(JSC::IntlRelativeTimeFormat::create):

  • runtime/IntlRelativeTimeFormatConstructor.cpp:

(JSC::IntlRelativeTimeFormatConstructor::create):

  • runtime/IntlRelativeTimeFormatPrototype.cpp:

(JSC::IntlRelativeTimeFormatPrototype::create):

  • runtime/IntlSegmentIterator.cpp:

(JSC::IntlSegmentIterator::create):

  • runtime/IntlSegmentIteratorPrototype.cpp:

(JSC::IntlSegmentIteratorPrototype::create):

  • runtime/IntlSegmenter.cpp:

(JSC::IntlSegmenter::create):

  • runtime/IntlSegmenterConstructor.cpp:

(JSC::IntlSegmenterConstructor::create):

  • runtime/IntlSegmenterPrototype.cpp:

(JSC::IntlSegmenterPrototype::create):

  • runtime/IntlSegments.cpp:

(JSC::IntlSegments::create):

  • runtime/IntlSegmentsPrototype.cpp:

(JSC::IntlSegmentsPrototype::create):

  • runtime/IteratorPrototype.h:
  • runtime/JSArray.h:

(JSC::JSArray::createWithButterfly):

  • runtime/JSArrayBuffer.cpp:

(JSC::JSArrayBuffer::create):

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

(JSC::JSArrayBufferPrototype::create):

  • runtime/JSArrayIterator.cpp:

(JSC::JSArrayIterator::create):
(JSC::JSArrayIterator::createWithInitialValues):

  • runtime/JSAsyncFunction.cpp:

(JSC::JSAsyncFunction::createImpl):

  • runtime/JSAsyncGenerator.cpp:

(JSC::JSAsyncGenerator::create):

  • runtime/JSAsyncGeneratorFunction.cpp:

(JSC::JSAsyncGeneratorFunction::createImpl):

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::createWithLength):

  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::create):

  • runtime/JSCallee.h:

(JSC::JSCallee::create):

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

(JSC::allocateCell):
(JSC::tryAllocateCell):

  • runtime/JSCustomGetterFunction.cpp:

(JSC::JSCustomGetterFunction::create):

  • runtime/JSCustomSetterFunction.cpp:

(JSC::JSCustomSetterFunction::create):

  • runtime/JSDataView.cpp:

(JSC::JSDataView::create):

  • runtime/JSDataViewPrototype.cpp:

(JSC::JSDataViewPrototype::create):

  • runtime/JSFinalizationRegistry.cpp:

(JSC::JSFinalizationRegistry::create):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::create):

  • runtime/JSFunction.h:

(JSC::JSFunction::createImpl):

  • runtime/JSGenerator.cpp:

(JSC::JSGenerator::create):

  • runtime/JSGeneratorFunction.cpp:

(JSC::JSGeneratorFunction::createImpl):

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::JSGenericTypedArrayViewConstructor<ViewClass>::create):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::create):
(JSC::JSGenericTypedArrayView<Adaptor>::createWithFastVector):
(JSC::JSGenericTypedArrayView<Adaptor>::createUninitialized):

  • runtime/JSGenericTypedArrayViewPrototypeInlines.h:

(JSC::JSGenericTypedArrayViewPrototype<ViewClass>::create):

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

(JSC::JSGlobalObject::create):
(JSC::JSGlobalObject::createWithCustomMethodTable):

  • runtime/JSImmutableButterfly.h:

(JSC::JSImmutableButterfly::tryCreate):

  • runtime/JSInternalPromise.cpp:

(JSC::JSInternalPromise::create):

  • runtime/JSInternalPromiseConstructor.cpp:

(JSC::JSInternalPromiseConstructor::create):

  • runtime/JSInternalPromisePrototype.cpp:

(JSC::JSInternalPromisePrototype::create):

  • runtime/JSLexicalEnvironment.h:

(JSC::JSLexicalEnvironment::create):

  • runtime/JSMap.cpp:

(JSC::JSMap::clone):

  • runtime/JSMap.h:
  • runtime/JSMapIterator.cpp:

(JSC::JSMapIterator::createWithInitialValues):

  • runtime/JSMapIterator.h:
  • runtime/JSModuleEnvironment.cpp:

(JSC::JSModuleEnvironment::create):

  • runtime/JSModuleLoader.h:
  • runtime/JSModuleNamespaceObject.h:
  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::create):

  • runtime/JSNativeStdFunction.cpp:

(JSC::JSNativeStdFunction::create):

  • runtime/JSONObject.h:
  • runtime/JSObject.h:

(JSC::JSFinalObject::createWithButterfly):

  • runtime/JSPromise.cpp:

(JSC::JSPromise::create):

  • runtime/JSPromiseConstructor.cpp:

(JSC::JSPromiseConstructor::create):

  • runtime/JSPromisePrototype.cpp:

(JSC::JSPromisePrototype::create):

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::create):

  • runtime/JSProxy.h:

(JSC::JSProxy::create):

  • runtime/JSScriptFetchParameters.h:
  • runtime/JSScriptFetcher.h:
  • runtime/JSSet.cpp:

(JSC::JSSet::clone):

  • runtime/JSSet.h:
  • runtime/JSSetIterator.cpp:

(JSC::JSSetIterator::createWithInitialValues):

  • runtime/JSSetIterator.h:
  • runtime/JSSourceCode.h:
  • runtime/JSString.cpp:

(JSC::JSString::createEmptyString):
(JSC::StringObject::create):

  • runtime/JSString.h:

(JSC::JSString::create):
(JSC::JSString::createHasOtherOwner):

  • runtime/JSStringIterator.h:
  • runtime/JSTemplateObjectDescriptor.cpp:

(JSC::JSTemplateObjectDescriptor::create):

  • runtime/JSTypedArrayViewConstructor.h:
  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::JSTypedArrayViewPrototype::create):

  • runtime/JSWeakMap.h:
  • runtime/JSWeakObjectRef.h:
  • runtime/JSWeakSet.h:
  • runtime/JSWithScope.cpp:

(JSC::JSWithScope::create):

  • runtime/MapConstructor.h:
  • runtime/MapIteratorPrototype.h:
  • runtime/MapPrototype.h:
  • runtime/MathObject.h:
  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::create):

  • runtime/NativeErrorConstructor.h:
  • runtime/NativeErrorPrototype.h:
  • runtime/NativeExecutable.cpp:

(JSC::NativeExecutable::create):

  • runtime/NullGetterFunction.h:
  • runtime/NullSetterFunction.h:
  • runtime/NumberConstructor.h:
  • runtime/NumberObject.h:

(JSC::NumberObject::create):

  • runtime/NumberPrototype.h:
  • runtime/ObjectConstructor.h:
  • runtime/ObjectPrototype.cpp:

(JSC::ObjectPrototype::create):

  • runtime/ProgramExecutable.h:
  • runtime/PropertyTable.cpp:

(JSC::PropertyTable::create):
(JSC::PropertyTable::clone):

  • runtime/ProxyConstructor.cpp:

(JSC::ProxyConstructor::create):

  • runtime/ProxyObject.h:
  • runtime/ProxyRevoke.cpp:

(JSC::ProxyRevoke::create):

  • runtime/ReflectObject.h:
  • runtime/RegExp.cpp:

(JSC::RegExp::createWithoutCaching):

  • runtime/RegExpConstructor.h:
  • runtime/RegExpObject.h:
  • runtime/RegExpPrototype.h:
  • runtime/RegExpStringIteratorPrototype.h:
  • runtime/ScopedArguments.cpp:

(JSC::ScopedArguments::createUninitialized):

  • runtime/ScopedArgumentsTable.cpp:

(JSC::ScopedArgumentsTable::create):
(JSC::ScopedArgumentsTable::tryCreate):

  • runtime/SetConstructor.h:
  • runtime/SetIteratorPrototype.h:
  • runtime/SetPrototype.h:
  • runtime/ShadowRealmConstructor.h:
  • runtime/ShadowRealmObject.cpp:

(JSC::ShadowRealmObject::create):

  • runtime/ShadowRealmPrototype.h:
  • runtime/SparseArrayValueMap.cpp:

(JSC::SparseArrayValueMap::create):

  • runtime/StrictEvalActivation.h:
  • runtime/StringConstructor.h:
  • runtime/StringIteratorPrototype.h:
  • runtime/StringObject.h:

(JSC::StringObject::create):

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::create):

  • runtime/StructureChain.cpp:

(JSC::StructureChain::create):

  • runtime/StructureInlines.h:

(JSC::Structure::create):
(JSC::Structure::createStructure):

  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::create):

  • runtime/Symbol.cpp:

(JSC::SymbolObject::create):
(JSC::Symbol::create):
(JSC::Symbol::createWithDescription):

  • runtime/SymbolConstructor.h:
  • runtime/SymbolObject.h:
  • runtime/SymbolPrototype.h:
  • runtime/SymbolTable.h:
  • runtime/TemporalCalendar.cpp:

(JSC::TemporalCalendar::create):

  • runtime/TemporalCalendarConstructor.cpp:

(JSC::TemporalCalendarConstructor::create):

  • runtime/TemporalCalendarPrototype.cpp:

(JSC::TemporalCalendarPrototype::create):

  • runtime/TemporalDuration.cpp:

(JSC::TemporalDuration::create):

  • runtime/TemporalDurationConstructor.cpp:

(JSC::TemporalDurationConstructor::create):

  • runtime/TemporalDurationPrototype.cpp:

(JSC::TemporalDurationPrototype::create):

  • runtime/TemporalInstant.cpp:

(JSC::TemporalInstant::create):

  • runtime/TemporalInstantConstructor.cpp:

(JSC::TemporalInstantConstructor::create):

  • runtime/TemporalInstantPrototype.cpp:

(JSC::TemporalInstantPrototype::create):

  • runtime/TemporalNow.cpp:

(JSC::TemporalNow::create):

  • runtime/TemporalObject.cpp:

(JSC::TemporalObject::create):

  • runtime/TemporalPlainTime.cpp:

(JSC::TemporalPlainTime::create):

  • runtime/TemporalPlainTimeConstructor.cpp:

(JSC::TemporalPlainTimeConstructor::create):

  • runtime/TemporalPlainTimePrototype.cpp:

(JSC::TemporalPlainTimePrototype::create):

  • runtime/TemporalTimeZone.cpp:

(JSC::TemporalTimeZone::createFromID):
(JSC::TemporalTimeZone::createFromUTCOffset):

  • runtime/TemporalTimeZoneConstructor.cpp:

(JSC::TemporalTimeZoneConstructor::create):

  • runtime/TemporalTimeZonePrototype.cpp:

(JSC::TemporalTimeZonePrototype::create):

  • runtime/WeakMapConstructor.h:
  • runtime/WeakMapPrototype.h:
  • runtime/WeakObjectRefConstructor.h:
  • runtime/WeakObjectRefPrototype.h:
  • runtime/WeakSetConstructor.h:
  • runtime/WeakSetPrototype.h:
  • testRegExp.cpp:
  • tools/JSDollarVM.cpp:
  • tools/JSDollarVM.h:
  • wasm/js/JSToWasmICCallee.cpp:

(JSC::JSToWasmICCallee::create):

  • wasm/js/JSWebAssembly.cpp:

(JSC::JSWebAssembly::create):

  • wasm/js/JSWebAssemblyCodeBlock.cpp:

(JSC::JSWebAssemblyCodeBlock::create):

  • wasm/js/JSWebAssemblyException.h:
  • wasm/js/JSWebAssemblyGlobal.cpp:

(JSC::JSWebAssemblyGlobal::tryCreate):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::tryCreate):

  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::tryCreate):

  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::createStub):

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::tryCreate):

  • wasm/js/JSWebAssemblyTag.cpp:

(JSC::JSWebAssemblyTag::create):

  • wasm/js/WebAssemblyCompileErrorConstructor.cpp:

(JSC::WebAssemblyCompileErrorConstructor::create):

  • wasm/js/WebAssemblyCompileErrorPrototype.cpp:

(JSC::WebAssemblyCompileErrorPrototype::create):

  • wasm/js/WebAssemblyExceptionConstructor.cpp:

(JSC::WebAssemblyExceptionConstructor::create):

  • wasm/js/WebAssemblyExceptionPrototype.cpp:

(JSC::WebAssemblyExceptionPrototype::create):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::create):

  • wasm/js/WebAssemblyGlobalConstructor.cpp:

(JSC::WebAssemblyGlobalConstructor::create):

  • wasm/js/WebAssemblyGlobalPrototype.cpp:

(JSC::WebAssemblyGlobalPrototype::create):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::WebAssemblyInstanceConstructor::create):

  • wasm/js/WebAssemblyInstancePrototype.cpp:

(JSC::WebAssemblyInstancePrototype::create):

  • wasm/js/WebAssemblyLinkErrorConstructor.cpp:

(JSC::WebAssemblyLinkErrorConstructor::create):

  • wasm/js/WebAssemblyLinkErrorPrototype.cpp:

(JSC::WebAssemblyLinkErrorPrototype::create):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::WebAssemblyMemoryConstructor::create):

  • wasm/js/WebAssemblyMemoryPrototype.cpp:

(JSC::WebAssemblyMemoryPrototype::create):

  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::WebAssemblyModuleConstructor::create):

  • wasm/js/WebAssemblyModulePrototype.cpp:

(JSC::WebAssemblyModulePrototype::create):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::create):

  • wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:

(JSC::WebAssemblyRuntimeErrorConstructor::create):

  • wasm/js/WebAssemblyRuntimeErrorPrototype.cpp:

(JSC::WebAssemblyRuntimeErrorPrototype::create):

  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::WebAssemblyTableConstructor::create):

  • wasm/js/WebAssemblyTablePrototype.cpp:

(JSC::WebAssemblyTablePrototype::create):

  • wasm/js/WebAssemblyTagConstructor.cpp:

(JSC::WebAssemblyTagConstructor::create):

  • wasm/js/WebAssemblyTagPrototype.cpp:

(JSC::WebAssemblyTagPrototype::create):

  • wasm/js/WebAssemblyWrapperFunction.cpp:

(JSC::WebAssemblyWrapperFunction::create):

Source/WebCore:

  • bindings/js/JSDOMAsyncIterator.h:
  • bindings/js/JSDOMBuiltinConstructor.h:

(WebCore::JSDOMBuiltinConstructor<JSClass>::create):

  • bindings/js/JSDOMConstructor.h:

(WebCore::JSDOMConstructor<JSClass>::create):

  • bindings/js/JSDOMConstructorNotCallable.h:

(WebCore::JSDOMConstructorNotCallable<JSClass>::create):

  • bindings/js/JSDOMConstructorNotConstructable.h:

(WebCore::JSDOMConstructorNotConstructable<JSClass>::create):

  • bindings/js/JSDOMIterator.h:
  • bindings/js/JSDOMLegacyFactoryFunction.h:

(WebCore::JSDOMLegacyFactoryFunction<JSClass>::create):

  • bindings/js/JSDOMWindowProperties.h:
  • bindings/js/JSFileSystemDirectoryHandleIterator.h:
  • bindings/js/JSIDBSerializationGlobalObject.cpp:

(WebCore::JSIDBSerializationGlobalObject::create):

  • bindings/js/JSWindowProxy.cpp:

(WebCore::JSWindowProxy::create):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateIterableDefinition):
(GeneratePrototypeDeclaration):

  • bindings/scripts/test/JS/JSDOMWindow.h:

(WebCore::JSDOMWindow::create):

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

(WebCore::JSDedicatedWorkerGlobalScope::create):

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

(WebCore::JSExposedStarDOMConstructor::prototypeForStructure):

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

(WebCore::JSExposedStar::create):

  • bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp:
  • bindings/scripts/test/JS/JSExposedToWorkerAndWindow.h:

(WebCore::JSExposedToWorkerAndWindow::create):

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

(WebCore::JSPaintWorkletGlobalScope::create):

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

(WebCore::JSServiceWorkerGlobalScope::create):

  • bindings/scripts/test/JS/JSSharedWorkerGlobalScope.h:

(WebCore::JSSharedWorkerGlobalScope::create):

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

(WebCore::JSTestCEReactionsDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestCEReactions.h:

(WebCore::JSTestCEReactions::create):

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

(WebCore::JSTestCEReactionsStringifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:

(WebCore::JSTestCEReactionsStringifier::create):

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

(WebCore::JSTestCallTracerDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestCallTracer.h:

(WebCore::JSTestCallTracer::create):

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

(WebCore::JSTestClassWithJSBuiltinConstructorDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:

(WebCore::JSTestClassWithJSBuiltinConstructor::create):

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

(WebCore::JSTestConditionalIncludesDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestConditionalIncludes.h:

(WebCore::JSTestConditionalIncludes::create):

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

(WebCore::JSTestConditionallyReadWriteDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestConditionallyReadWrite.h:

(WebCore::JSTestConditionallyReadWrite::create):

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

(WebCore::JSTestDOMJITDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestDOMJIT.h:

(WebCore::JSTestDOMJIT::create):

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

(WebCore::JSTestDefaultToJSONDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestDefaultToJSON.h:

(WebCore::JSTestDefaultToJSON::create):

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

(WebCore::JSTestDefaultToJSONFilteredByExposedDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h:

(WebCore::JSTestDefaultToJSONFilteredByExposed::create):

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

(WebCore::JSTestDefaultToJSONIndirectInheritanceDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.h:

(WebCore::JSTestDefaultToJSONIndirectInheritance::create):

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

(WebCore::JSTestDefaultToJSONInheritDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestDefaultToJSONInherit.h:

(WebCore::JSTestDefaultToJSONInherit::create):

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

(WebCore::JSTestDefaultToJSONInheritFinalDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.h:

(WebCore::JSTestDefaultToJSONInheritFinal::create):

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

(WebCore::JSTestDelegateToSharedSyntheticAttributeDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.h:

(WebCore::JSTestDelegateToSharedSyntheticAttribute::create):

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

(WebCore::JSTestDomainSecurityDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestDomainSecurity.h:

(WebCore::JSTestDomainSecurity::create):

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

(WebCore::JSTestEnabledBySettingDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.h:

(WebCore::JSTestEnabledBySetting::create):

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

(WebCore::JSTestEnabledForContextDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestEnabledForContext.h:

(WebCore::JSTestEnabledForContext::create):

  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:
  • bindings/scripts/test/JS/JSTestEventConstructor.h:

(WebCore::JSTestEventConstructor::create):

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

(WebCore::JSTestEventTargetDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestEventTarget.h:

(WebCore::JSTestEventTarget::create):

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

(WebCore::JSTestExceptionDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestException.h:

(WebCore::JSTestException::create):

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

(WebCore::JSTestGenerateAddOpaqueRootDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.h:

(WebCore::JSTestGenerateAddOpaqueRoot::create):

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

(WebCore::JSTestGenerateIsReachableDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.h:

(WebCore::JSTestGenerateIsReachable::create):

  • bindings/scripts/test/JS/JSTestGlobalObject.h:

(WebCore::JSTestGlobalObject::create):

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

(WebCore::JSTestIndexedSetterNoIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:

(WebCore::JSTestIndexedSetterNoIdentifier::create):

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

(WebCore::JSTestIndexedSetterThrowingExceptionDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:

(WebCore::JSTestIndexedSetterThrowingException::create):

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

(WebCore::JSTestIndexedSetterWithIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:

(WebCore::JSTestIndexedSetterWithIdentifier::create):

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

(WebCore::JSTestInterfaceDOMConstructor::construct):
(WebCore::jsTestInterfacePrototypeFunction_entriesCaller):

  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:

(WebCore::JSTestInterfaceLeadingUnderscoreDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:

(WebCore::JSTestInterfaceLeadingUnderscore::create):

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

(WebCore::JSTestIterableDOMConstructor::prototypeForStructure):
(WebCore::jsTestIterablePrototypeFunction_entriesCaller):

  • bindings/scripts/test/JS/JSTestIterable.h:

(WebCore::JSTestIterable::create):

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

(WebCore::JSTestJSBuiltinConstructorDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:

(WebCore::JSTestJSBuiltinConstructor::create):

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

(WebCore::JSTestLegacyFactoryFunctionDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestLegacyFactoryFunction.h:

(WebCore::JSTestLegacyFactoryFunction::create):

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

(WebCore::JSTestLegacyNoInterfaceObjectPrototype::finishCreation):

  • bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.h:

(WebCore::JSTestLegacyNoInterfaceObject::create):

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

(WebCore::JSTestLegacyOverrideBuiltInsDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.h:

(WebCore::JSTestLegacyOverrideBuiltIns::create):

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

(WebCore::JSTestMapLikeDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestMapLike.h:

(WebCore::JSTestMapLike::create):

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

(WebCore::JSTestMapLikeWithOverriddenOperationsDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.h:

(WebCore::JSTestMapLikeWithOverriddenOperations::create):

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

(WebCore::JSTestNamedAndIndexedSetterNoIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::create):

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

(WebCore::JSTestNamedAndIndexedSetterThrowingExceptionDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:

(WebCore::JSTestNamedAndIndexedSetterThrowingException::create):

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

(WebCore::JSTestNamedAndIndexedSetterWithIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::create):

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

(WebCore::JSTestNamedDeleterNoIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:

(WebCore::JSTestNamedDeleterNoIdentifier::create):

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

(WebCore::JSTestNamedDeleterThrowingExceptionDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:

(WebCore::JSTestNamedDeleterThrowingException::create):

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

(WebCore::JSTestNamedDeleterWithIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:

(WebCore::JSTestNamedDeleterWithIdentifier::create):

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

(WebCore::JSTestNamedDeleterWithIndexedGetterDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:

(WebCore::JSTestNamedDeleterWithIndexedGetter::create):

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

(WebCore::JSTestNamedGetterCallWithDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:

(WebCore::JSTestNamedGetterCallWith::create):

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

(WebCore::JSTestNamedGetterNoIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:

(WebCore::JSTestNamedGetterNoIdentifier::create):

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

(WebCore::JSTestNamedGetterWithIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:

(WebCore::JSTestNamedGetterWithIdentifier::create):

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

(WebCore::JSTestNamedSetterNoIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:

(WebCore::JSTestNamedSetterNoIdentifier::create):

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

(WebCore::JSTestNamedSetterThrowingExceptionDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:

(WebCore::JSTestNamedSetterThrowingException::create):

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

(WebCore::JSTestNamedSetterWithIdentifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:

(WebCore::JSTestNamedSetterWithIdentifier::create):

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

(WebCore::JSTestNamedSetterWithIndexedGetterDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:

(WebCore::JSTestNamedSetterWithIndexedGetter::create):

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

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetterDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::create):

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

(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltInsDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h:

(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::create):

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

(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h:

(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::create):

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

(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltInsDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h:

(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::create):

  • bindings/scripts/test/JS/JSTestNamespaceObject.h:

(WebCore::JSTestNamespaceObject::create):

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

(WebCore::jsTestNodePrototypeFunction_entriesCaller):

  • bindings/scripts/test/JS/JSTestNode.h:
  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObjDOMConstructor::construct):

  • bindings/scripts/test/JS/JSTestObj.h:

(WebCore::JSTestObj::create):

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

(WebCore::JSTestOperationConditionalDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestOperationConditional.h:

(WebCore::JSTestOperationConditional::create):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.h:

(WebCore::JSTestOverloadedConstructors::create):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:

(WebCore::JSTestOverloadedConstructorsWithSequence::create):

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

(WebCore::JSTestPluginInterfaceDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestPluginInterface.h:

(WebCore::JSTestPluginInterface::create):

  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h:

(WebCore::JSTestPromiseRejectionEvent::create):

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

(WebCore::JSTestReadOnlyMapLikeDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestReadOnlyMapLike.h:

(WebCore::JSTestReadOnlyMapLike::create):

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

(WebCore::JSTestReadOnlySetLikeDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestReadOnlySetLike.h:

(WebCore::JSTestReadOnlySetLike::create):

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

(WebCore::JSTestReportExtraMemoryCostDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestReportExtraMemoryCost.h:

(WebCore::JSTestReportExtraMemoryCost::create):

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

(WebCore::JSTestSerializedScriptValueInterfaceDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:

(WebCore::JSTestSerializedScriptValueInterface::create):

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

(WebCore::JSTestSetLikeDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestSetLike.h:

(WebCore::JSTestSetLike::create):

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

(WebCore::JSTestSetLikeWithOverriddenOperationsDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.h:

(WebCore::JSTestSetLikeWithOverriddenOperations::create):

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

(WebCore::JSTestStringifierDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestStringifier.h:

(WebCore::JSTestStringifier::create):

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

(WebCore::JSTestStringifierAnonymousOperationDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h:

(WebCore::JSTestStringifierAnonymousOperation::create):

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

(WebCore::JSTestStringifierNamedOperationDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.h:

(WebCore::JSTestStringifierNamedOperation::create):

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

(WebCore::JSTestStringifierOperationImplementedAsDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h:

(WebCore::JSTestStringifierOperationImplementedAs::create):

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

(WebCore::JSTestStringifierOperationNamedToStringDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h:

(WebCore::JSTestStringifierOperationNamedToString::create):

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

(WebCore::JSTestStringifierReadOnlyAttributeDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h:

(WebCore::JSTestStringifierReadOnlyAttribute::create):

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

(WebCore::JSTestStringifierReadWriteAttributeDOMConstructor::prototypeForStructure):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h:

(WebCore::JSTestStringifierReadWriteAttribute::create):

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

(WebCore::JSTestTypedefsDOMConstructor::construct):

  • bindings/scripts/test/JS/JSTestTypedefs.h:

(WebCore::JSTestTypedefs::create):

  • bindings/scripts/test/JS/JSWorkerGlobalScope.h:

(WebCore::JSWorkerGlobalScope::create):

  • bindings/scripts/test/JS/JSWorkletGlobalScope.h:

(WebCore::JSWorkletGlobalScope::create):

  • bridge/objc/ObjCRuntimeObject.h:
  • bridge/objc/objc_instance.mm:

(JSC::Bindings::ObjcInstance::getMethod):

  • bridge/objc/objc_runtime.h:
  • bridge/runtime_array.h:
  • bridge/runtime_method.h:
  • bridge/runtime_object.h:
9:52 AM Changeset in webkit [285729] by Chris Dumez
  • 3 edits
    1 copy
    1 add
    1 delete in trunk/Source/WebKit

Rename ProcessLauncherMac.mm to ProcessLauncherDarwin.mm
https://bugs.webkit.org/show_bug.cgi?id=233045

Reviewed by Brent Fulgham.

Rename ProcessLauncherMac.mm to ProcessLauncherDarwin.mm since this implementation is used by both macOS and iOS.
I chose the Darwin naming (as opposed to the Cocoa one) because the implementation only relies on libXPC and mach.

  • SourcesCocoa.txt:
  • UIProcess/Launcher/darwin/ProcessLauncherDarwin.mm: Renamed from Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm.

(WebKit::serviceName):
(WebKit::shouldLeakBoost):
(WebKit::systemDirectoryPath):
(WebKit::ProcessLauncher::launchProcess):
(WebKit::ProcessLauncher::terminateProcess):
(WebKit::ProcessLauncher::platformInvalidate):
(WebKit::ProcessLauncher::terminateXPCConnection):
(WebKit::terminateWithReason):

  • WebKit.xcodeproj/project.pbxproj:
9:40 AM Changeset in webkit [285728] by graouts@webkit.org
  • 3 edits
    2 adds in trunk

[Web Animations] Accelerated animations with a single keyframe don't account for prior forward-filling animations
https://bugs.webkit.org/show_bug.cgi?id=233041
<rdar://problem/85236241>

Reviewed by Dean Jackson.

Source/WebCore:

Test: webanimations/accelerated-animation-after-forward-filling-animation.html

When starting an accelerated animation, we would fill any implicit keyframes based on the unanimated style.
We now also apply all animations below this animation in the target's effect stack such that a previous
forward-filling animation is accounted for.

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::applyPendingAcceleratedActions):

LayoutTests:

Add a new test that runs a forward-filling animation for transform, waits for its completion,
then runs another transform animation with an implicit initial keyframe, ensuring that the
result of the first forward-filling animation is accounted for when computing the initial
keyframe.

This test would fail prior to this patch.

  • webanimations/accelerated-animation-after-forward-filling-animation-expected.html: Added.
  • webanimations/accelerated-animation-after-forward-filling-animation.html: Added.
9:37 AM Changeset in webkit [285727] by Patrick Angle
  • 2 edits in trunk/LayoutTests

Web Inspector: Mark inspector/page/setShowPaintRects.html as flakey in test expectations for Mac
https://bugs.webkit.org/show_bug.cgi?id=233048

Unreviewed test gardening.

  • platform/mac/TestExpectations: Add expectation for inspector/page/setShowPaintRects.html while the flakey

failure is investigated.

8:53 AM Changeset in webkit [285726] by Chris Dumez
  • 5 edits in trunk/Source

Unreviewed, partial revert of r285565 to resolve a PLT5 regression.
<rdar://85269156>

Source/WebKit:

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::sessionWrapperForTask):
(WebKit::NetworkSessionCocoa::isolatedSession):
(WebKit::SessionSet::isolatedSession):
(WebKit::NetworkSessionCocoa::hasIsolatedSession const):
(WebKit::NetworkSessionCocoa::clearIsolatedSessions):
(WebKit::NetworkSessionCocoa::invalidateAndCancelSessionSet):

Source/WTF:

  • wtf/PlatformHave.h:
8:52 AM Changeset in webkit [285725] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Move subtree update logic in ImageOverlay::updateWithTextRecognitionResult() into a separate helper
https://bugs.webkit.org/show_bug.cgi?id=233010

Reviewed by Aditya Keerthi.

Split updateWithTextRecognitionResult() into two phases: the first of which updates the UA shadow DOM to
reflect the given text recognition results, and a second phase that updates inline styles for each of the image
overlay elements by mapping normalized OCR quads onto rotated bounding rects in client coordinates. This will
make it easier to add support for representing TextRecognitionBlockData as image overlay content in the next
patch.

  • dom/ImageOverlay.cpp:

(WebCore::ImageOverlay::imageOverlayLineClass):
(WebCore::ImageOverlay::imageOverlayTextClass):
(WebCore::ImageOverlay::updateSubtree):

Now that this is all namespaced inside ImageOverlay, we can also simplify some of these names. Instead of
TextRecognitionLineElements and TextRecognitionElements, we can just call them LineElements and Elements.

(WebCore::ImageOverlay::updateWithTextRecognitionResult):

8:39 AM Changeset in webkit [285724] by Adrian Perez de Castro
  • 11 edits in trunk/Source

Some C++ source files use #pragma once
https://bugs.webkit.org/show_bug.cgi?id=233040

Source/WebCore:

Reviewed by Chris Dumez.

Remove spurious usage of "#pragma once" in implementation files.

No new tests needed.

  • Modules/WebGPU/GPUBuffer.cpp:
  • Modules/WebGPU/GPUCommandEncoder.cpp:
  • Modules/WebGPU/GPUComputePassEncoder.cpp:
  • Modules/WebGPU/GPUQuerySet.cpp:
  • Modules/WebGPU/GPUQueue.cpp:
  • Modules/WebGPU/GPURenderBundleEncoder.cpp:
  • Modules/WebGPU/GPURenderPassEncoder.cpp:
  • page/PerformanceNavigationTiming.cpp:

Source/WebKit:

Remove spurious usage of "#pragma once" in implementation files.

Reviewed by Chris Dumez.

  • WebProcess/WebCoreSupport/WebCaptionPreferencesDelegate.cpp:
8:38 AM Changeset in webkit [285723] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][GPUP] Remove sandbox write access to files
https://bugs.webkit.org/show_bug.cgi?id=232247
<rdar://problem/84620023>

Reviewed by Brent Fulgham.

Based on telemetry, remove sandbox write access to files in the GPU process on macOS.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
8:32 AM Changeset in webkit [285722] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS][GPU] Remove access to IOKit classes
https://bugs.webkit.org/show_bug.cgi?id=232344
<rdar://problem/84684751>

Reviewed by Darin Adler.

Based on telemetry, remove access to unused IOKit classes in the GPU process' sandbox on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
8:31 AM Changeset in webkit [285721] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][GPUP] Add syscalls to sandbox
https://bugs.webkit.org/show_bug.cgi?id=232210
<rdar://problem/84584844>

Reviewed by Brent Fulgham.

Based on telemetry, add syscalls to the GPU process' sandbox on macOS.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
8:18 AM Changeset in webkit [285720] by Chris Dumez
  • 8 edits in trunk

WebKit is unable to recover if a WebProcess gets terminated while it is launching
https://bugs.webkit.org/show_bug.cgi?id=233001
<rdar://85302938>

Reviewed by Brent Fulgham.

Source/WebKit:

While investigating <rdar://83941760>, I found that the WebAuthn Process would get
jetsammed, which would cause us to call WebProcessPool::terminateAllWebContentProcesses().
I also noticed that if one of these WebProcesses was still launching at the time
of the termination, then the WebProcessProxy / WebPageProxy would keep thinking the
WebProcess is still launching and would never attempt to relaunch it. This would result
in a blank and unresponsive WKWebView which wouldn't be able to do any loads.

The issue was due to ProcessLauncher::terminateProcess() calling invalidate(), which
it would not only terminate the XPC connection, it would also null out m_client. As a
result, we wouldn't notify the client that the process failed to launch. To address
the issue, I move the XPC connection termination logic out of invalidate() and into
its own terminateXPCConnection() function. I then called terminateXPCConnection()
instead of invalidate() inside ProcessLauncher::terminateProcess().

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _terminateAllWebContentProcesses]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/Launcher/ProcessLauncher.cpp:

(WebKit::ProcessLauncher::invalidate):

  • UIProcess/Launcher/ProcessLauncher.h:
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::terminateProcess):
(WebKit::ProcessLauncher::platformInvalidate):
(WebKit::ProcessLauncher::terminateXPCConnection):

Tools:

Add API test coverage, this test was timing out before the fix.

  • TestWebKitAPI/Tests/WebKitCocoa/WebProcessTerminate.mm:

(TEST):

7:59 AM Changeset in webkit [285719] by Chris Dumez
  • 2 edits in trunk/LayoutTests

fast/dom/Geolocation/cached-position-iframe.html is frequently crashing on Mac-wk1
https://bugs.webkit.org/show_bug.cgi?id=233043

Unreviewed, skip test to make EWS happy while the issue is being investigated.

  • platform/mac-wk1/TestExpectations:
7:44 AM Changeset in webkit [285718] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GLib] Developer build with release logs disabled fails
https://bugs.webkit.org/show_bug.cgi?id=232931

Patch by Philippe Normand <pnormand@igalia.com> on 2021-11-12
Reviewed by Adrian Perez de Castro.

  • platform/audio/PlatformMediaSession.cpp: Remove ifdef around convertEnumerationToString

functions, required by Internals.

6:57 AM Changeset in webkit [285717] by Chris Dumez
  • 4 edits in trunk

Disable getUserMedia() when in Captive Portal Mode
https://bugs.webkit.org/show_bug.cgi?id=233021

Reviewed by Brent Fulgham.

Source/WebKit:

Disable getUserMedia() when in Captive Portal Mode.

No new tests, covered by updated API test.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
6:40 AM Changeset in webkit [285716] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Add inline box margin-start support for visual ordering (bidi)
https://bugs.webkit.org/show_bug.cgi?id=233022

Reviewed by Antti Koivisto.

Line run geometry is margin box based (only applicable for inline level boxes), while
the displayRect() returns border box based geometry (again, only relevant for inline level boxes).
When computing the border box based left position using the distanceFromLogicalPreviousRun (line run based)
we have to offset it with the margin value.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

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

6:25 AM Changeset in webkit [285715] by Adrian Perez de Castro
  • 4 edits in trunk/Source

Non-unified build fixes, early November 2021 edition, bis x2

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • jit/JITWorklist.cpp: Add missing DeferGCInlines.h header.

Source/WebCore:

  • platform/gamepad/GamepadConstants.h: Use wtf/Forward.h instead of manually

forward-declaring the WTF::String type in the file.

4:48 AM Changeset in webkit [285714] by ntim@apple.com
  • 3 edits in trunk/Source/WebCore

Re-use isCSSWideKeyword in CSSCustomPropertyValue::createWithID
https://bugs.webkit.org/show_bug.cgi?id=233035

Reviewed by Antti Koivisto.

  • css/CSSCustomPropertyValue.cpp:

(WebCore::CSSCustomPropertyValue::createWithID):

  • css/CSSCustomPropertyValue.h:
4:28 AM Changeset in webkit [285713] by Antti Koivisto
  • 3 edits
    2 adds in trunk

Stack overflow with revert and revert-layer
https://bugs.webkit.org/show_bug.cgi?id=233033
rdar://85336439

Reviewed by Antoine Quint.

Source/WebCore:

Test: fast/css/revert-layer-stack-overflow.html

We end up using a rollback cascade made for revert-layer to do revert and that leads to eternal recursion.

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::ensureRollbackCascadeForRevert):
(WebCore::Style::Builder::ensureRollbackCascadeForRevertLayer):

Key the rollback cascade map with the reverted values instead of the original ones since the same
original keys produce different rollbacks depending on whether it is made for revert or revert-layer.

LayoutTests:

  • fast/css/revert-layer-stack-overflow-expected.txt: Added.
  • fast/css/revert-layer-stack-overflow.html: Added.
3:43 AM Changeset in webkit [285712] by commit-queue@webkit.org
  • 2 edits in trunk/JSTests

[JSC][32bit] Unskip JSTests/microbenchmarks/redefine-property-accessor-dictionary.js
https://bugs.webkit.org/show_bug.cgi?id=233034

Unreviewed gardening.

This is skipped for memoryLimited *and* mips|arm systems, but a)
seems to run fine on both setups and b) is almost identical to the
other tests/benchmarks that landed in the same patch, that do not
have that limitation. Optimistically remove the skip and let's see
if it sticks.

Patch by Xan Lopez <Xan Lopez> on 2021-11-12

  • microbenchmarks/redefine-property-accessor-dictionary.js:
2:54 AM Changeset in webkit [285711] by Razvan Caliman
  • 5 edits
    1 copy
    1 move
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Extract reusable logic from ResourceQueryController, ResourceQueryResult and ResourceQueryMatch
https://bugs.webkit.org/show_bug.cgi?id=231604
<rdar://problem/84160281>

Reviewed by Devin Rousso.

Extract reusable logic from ResourceQueryController into a generic QueryController
to enable subclassing for other specialized use cases.

  • UserInterface/Controllers/QueryController.js: Added.

(WI.QueryController.prototype.executeQuery):
(WI.QueryController.prototype.findQueryMatches.pushMatch):
(WI.QueryController.prototype.findQueryMatches.matchNextSpecialCharacter):
(WI.QueryController.prototype.findQueryMatches.backtrack):
(WI.QueryController.prototype.findQueryMatches):
(WI.QueryController):

Keep only the reusable matching logic in QueryController.
Subclasses like ResourceQueryController are responsible for agregating
the data to be queried, customization for special characters and sorting results.

  • UserInterface/Controllers/ResourceQueryController.js:

(WI.ResourceQueryController.prototype.executeQuery):
(WI.ResourceQueryController.prototype._findQueryMatches.pushMatch): Deleted.
(WI.ResourceQueryController.prototype._findQueryMatches.matchNextSpecialCharacter): Deleted.
(WI.ResourceQueryController.prototype._findQueryMatches.backtrack): Deleted.
(WI.ResourceQueryController.prototype._findQueryMatches): Deleted.

  • UserInterface/Main.html:
  • UserInterface/Models/QueryMatch.js: Renamed from Source/WebInspectorUI/UserInterface/Models/ResourceQueryMatch.js.

ResourceQueryMatch doesn't contain any resource-specific logic. It can be generalized to QueryMatch.

  • UserInterface/Models/QueryResult.js: Copied from Source/WebInspectorUI/UserInterface/Models/ResourceQueryResult.js.

(WI.QueryResult):
(WI.QueryResult.prototype.get value):
(WI.QueryResult.prototype.get rank):
(WI.QueryResult.prototype.get matchingTextRanges):
(WI.QueryResult.prototype._calculateRank.getMultiplier):
(WI.QueryResult.prototype._calculateRank):
(WI.QueryResult.prototype._createMatchingTextRanges):

A generic QueryResult can be extracted from ResourceQueryResult containing
the reusable logic for ranking results and identifing matching text ranges.

  • UserInterface/Models/ResourceQueryResult.js:

(WI.ResourceQueryResult):
(WI.ResourceQueryResult.prototype.get resource):
(WI.ResourceQueryResult.prototype.test_createMatchesMask):
(WI.ResourceQueryResult.prototype.get rank): Deleted.
(WI.ResourceQueryResult.prototype.get matchingTextRanges): Deleted.
(WI.ResourceQueryResult.prototype._calculateRank.getMultiplier): Deleted.
(WI.ResourceQueryResult.prototype._calculateRank): Deleted.
(WI.ResourceQueryResult.prototype._createMatchingTextRanges): Deleted.

ResourceQueryResult extends QueryResult with resource-specifc members:

  • the cookie property which holds the optional line and column info used when jumping to matched files
  • the resource property which maps to the generic QueryResult.value; this is used in tests and when sorting in ResourceQueryController
  • UserInterface/Test.html:
2:50 AM Changeset in webkit [285710] by Antti Koivisto
  • 3 edits
    2 adds in trunk

REGRESSION(r285624) Using revert keyword with a css variable hits assert
https://bugs.webkit.org/show_bug.cgi?id=233031
rdar://85332271

Reviewed by Tim Horton.

Source/WebCore:

Test: fast/selectors/variable-revert-crash.html

  • style/StyleBuilderState.h:

Default initialization set the variable to a value that is not in the enumeration.

LayoutTests:

  • fast/selectors/variable-revert-crash-expected.txt: Added.
  • fast/selectors/variable-revert-crash.html: Added.
2:17 AM Changeset in webkit [285709] by svillar@igalia.com
  • 20 edits in trunk

[css-flexbox] Add flex-basis: content support
https://bugs.webkit.org/show_bug.cgi?id=221479

Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/parsing/flex-basis-computed-expected.txt: Replaced FAIL

by PASS expectations.

  • web-platform-tests/css/css-flexbox/parsing/flex-basis-valid-expected.txt: Ditto.
  • web-platform-tests/css/css-flexbox/parsing/flex-shorthand-expected.txt: Ditto.

Source/WebCore:

Add support for the content keyword as a valid value for the flex-basis property.
It indicates an automated size based on the contents of the flex item. It's typically
equivalent to the max-content size but it has some adjustments for aspect ratios,
orthogonal flows and intrinsic sizing constraints.

Apart from adding the parsing support, it required very little adjustments in the
flexbox code after the refactoring in r284359.

This makes WebKit pass all of the flex-basis:content tests in WPT. We're talking
about 6 tests testing the feature and 6 subtests related to parsing.

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Handle Content in switch.
(WebCore::CSSPrimitiveValue::init): Initialization for content CSS value.

  • css/CSSProperties.json:
  • css/LengthFunctions.cpp: Replaced LengthOrAuto by LengthSizing.

(WebCore::valueForLength): Handle Content in switch.
(WebCore::floatValueForLength): Ditto.

  • css/LengthFunctions.h:

(WebCore::minimumValueForLength): Ditto.

  • css/calc/CSSCalcValue.cpp:

(WebCore::createCSS): Ditto.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeFlexBasis): Consume CSSValueContent.
(WebCore::CSSPropertyParser::consumeFlex): Ditto.

  • platform/Length.cpp:

(WebCore::operator<<): Added printing support for content.

  • platform/Length.h:

(WebCore::Length::initialize): Added enum for content.
(WebCore::Length::isContent const): New method.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeReplacedLogicalWidthUsing const): Handle content in switch.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::childMainSizeIsDefinite): Treat content as indefinite lenght.
(WebCore::RenderFlexibleBox::computeFlexBaseSizeForChild): Compute flex-basis using max-content
if flex-basis:content is specified.

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertLengthSizing): Handle content in switch.

Source/WebKit:

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Length>::encode): Handle content in switch.
(IPC::ArgumentCoder<Length>::decode): Ditto.

LayoutTests:

  • TestExpectations: Unskipped all the flexbox-flex-basis-content tests that work fine now.
12:59 AM Changeset in webkit [285708] by commit-queue@webkit.org
  • 13 edits
    3 adds in trunk/LayoutTests

[GLIB] Update test expectations and baselines. Unreviewed test gardening.
https://bugs.webkit.org/show_bug.cgi?id=232957

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-11-12

  • platform/glib/TestExpectations:
  • platform/glib/http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/form-controls/resets-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/gtk/TestExpectations:
  • platform/gtk/fast/css/pseudo-first-line-border-width-expected.txt: Added.
  • platform/gtk/fast/selectors/018b-expected.txt:
  • platform/gtk/fast/text/capitalize-boundaries-expected.txt:
  • platform/gtk/fast/text/whitespace/020-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:

Nov 11, 2021:

8:54 PM Changeset in webkit [285707] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][GPUP] Remove access to mach services in sandbox
https://bugs.webkit.org/show_bug.cgi?id=232208
<rdar://problem/84584565>

Reviewed by Darin Adler.

Remove access to mach services in the GPU process on macOS based on telemetry
and similar changes previously made in the WebContent process' sandbox.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
8:20 PM Changeset in webkit [285706] by Kocsen Chung
  • 2 edits in branches/safari-613.1.8-branch/Source/WebKit

Cherry-pick r285688. rdar://problem/85307256

[macOS] Add required methods to IOKit message filter
https://bugs.webkit.org/show_bug.cgi?id=233012
<rdar://85307256>

Reviewed by Brent Fulgham.

Add required methods to IOKit message filter on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:

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

8:20 PM Changeset in webkit [285705] by Kocsen Chung
  • 7 edits in branches/safari-613.1.8-branch

Cherry-pick r285669. rdar://problem/84158655

REGRESSION: (r283871) [ macOS wk2 Release ] 2 css/cssom-view/scroll-behavior-main-frame tests are failing
https://bugs.webkit.org/show_bug.cgi?id=231600

Reviewed by Simon Fraser.

Source/WebCore:

Fix for issue where a scroll animation is not properly cancelled by a second scroll request.
This occurs when the first scroll animation has not been fully started by the time the second
request has been received by the scrolling thread (first animation still in
m_nodesWithPendingScrollAnimations). For the scenario where the second scroll request is animated,
we change ThreadedScrollingTree::scrollingTreeNodeRequestsScroll to use set (add is ignored if
key exists in the hash map which caused the second request to be ignored). For the scenario
where the second scroll request is not animated, we clear the pending request for that
scrolling node (if one exists).

  • page/scrolling/ScrollingTree.h: (WebCore::ScrollingTree::removePendingScrollAnimationForNode):
  • page/scrolling/ScrollingTreeScrollingNode.cpp: (WebCore::ScrollingTreeScrollingNode::handleScrollPositionRequest):
  • page/scrolling/ThreadedScrollingTree.cpp: (WebCore::ThreadedScrollingTree::scrollingTreeNodeRequestsScroll): (WebCore::ThreadedScrollingTree::removePendingScrollAnimationForNode):
  • page/scrolling/ThreadedScrollingTree.h:

LayoutTests:

  • platform/mac-wk2/TestExpectations:

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

8:20 PM Changeset in webkit [285704] by Kocsen Chung
  • 7 edits
    2 adds in branches/safari-613.1.8-branch

Cherry-pick r285620. rdar://problem/84558377

REGRESSION(r283863): <attachment> with a long action do not render correctly
https://bugs.webkit.org/show_bug.cgi?id=232645
<rdar://problem/84558377>

Reviewed by Myles C. Maxfield.

Source/WebCore:

Unlike the DisplayList concept in WebCore, when using CGContextDelegateRef (which is
what DrawGlyphsRecorder uses on Cocoa platforms) the callbacks for each action are only
told about the current state of all-the-things at the time of that action, not each of the
corresponding API-level calls that resulted in that final state (e.g. where DisplayList
would see separate scale and rotate calls, CGContextDelegateRef would only be able to
get the final calculated CTM). In order for DrawGlyphsRecorder to (re)generate WebCore
calls, it needs to have information about the starting state of the CGContext before any
actions are performed so it can at least derive some diff/idea of what happened.

This is further complicated by the fact that when drawing text CG separates the state of
all-the-things into two: the CTM and the text matrix. WebKit does not have this separation,
however, so it needs to combine the two into a single CTM, but only when dealing with text.

A new path (drawNativeText) was added in r283863 that allows DrawGlyphsRecorder to be
used directly with native text-related objects (e.g. CTLineRef) instead of objects/data
derived in WebCore. A result of this on Cocoa platforms is that now a single drawNativeText
can result in multiple recordDrawGlyphs invocations if the CTLineRef contains multiple
"groupings" of glyphs to draw (e.g. if a line is truncated with a "..." in the middle then
the three groups will be the remaining text before, the "..." and the remaining text after).

AFAICT before this new path it was never the case that the text matrix had a translate, only
rotate/skew/etc., meaning that when DrawGlyphsRecorder needed to convert from the CG's
computed glyph positions back into WebCore's glyph advances it could use the text matrix
since there would be no translation. With this new path, however, if a drawNativeText call
results in multiple recordDrawGlyphs then there will be a translation in the text matrix
to account for that. As such, we end up double counting the text matrix: once when we
(re)generate the CTM to give to WebCore and _again_ when we (re)compute the WebCore advances.

Since we've already counted the text matrix once, we don't need to do it again. Also, by
this point we've already modified WebCore's CTM, so we only really need to account for the
difference from the original position when we first called drawNativeText. As such, we
just need invert what was used to generate CG positions from WebCore advances.

Note that in the name of expediently fixing a regression, this change only considers
horizontal text as <attachment> are never drawn vertically. Fixing vertical text will be
done in a followup <https://webkit.org/b/232917>.

Test: fast/attachment/attachment-truncated-action.html

  • platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp: (WebCore::DrawGlyphsRecorder::recordDrawGlyphs):
  • platform/graphics/FontCascade.h:
  • platform/graphics/coretext/FontCascadeCoreText.cpp: (WebCore::fillVectorWithHorizontalGlyphPositions): (WebCore::fillVectorWithVerticalGlyphPositions): Add a comment indicating the related nature of these functions with DrawGlyphsRecorder::recordDrawGlyphs. Drive-by: fillVectorWithHorizontalGlyphPositions is only called by this class, so don't export it.

LayoutTests:

  • fast/attachment/attachment-truncated-action.html: Added.
  • fast/attachment/attachment-truncated-action-expected-mismatch.html: Added.

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

8:19 PM Changeset in webkit [285703] by Kocsen Chung
  • 1881 edits
    692 adds
    48 deletes in branches/safari-613.1.8-branch

Cherry-pick r285577. rdar://problem/85196125

Update libwebrtc to M96
https://bugs.webkit.org/show_bug.cgi?id=232873

LayoutTests/imported/w3c:

Reviewed by Alex Christensen.

  • web-platform-tests/webrtc/RTCPeerConnection-addTrack.https-expected.txt:
  • web-platform-tests/webrtc/RTCPeerConnection-mandatory-getStats.https-expected.txt:
  • web-platform-tests/webrtc/RTCRtpTransceiver.https-expected.txt:
  • web-platform-tests/webrtc/protocol/dtls-setup.https-expected.txt:

Source/ThirdParty/libwebrtc:

Reviewed by Alex Christensen.

Updated libwebrtc code according M96 upstream branch.

  • CMakeLists.txt:
  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:
  • Source/webrtc: resynced.
  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Reviewed by Alex Christensen.

Update WebCore code according updated libwebrtc API, in particular moving from deprecated CreateDataChannel to CreateDataChannelOrError.
Covered by existing tests.

  • Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: (WebCore::LibWebRTCMediaEndpoint::createDataChannel):
  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: (WebCore::BasicPacketSocketFactory::BasicPacketSocketFactory):
  • platform/mediastream/AudioMediaStreamTrackRenderer.cpp: (WebCore::AudioMediaStreamTrackRenderer::create):
  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoCommon.cpp: (WebCore::createH264Format): (WebCore::supportedH264Formats):
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.cpp:
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.cpp:
  • testing/MockLibWebRTCPeerConnection.cpp: (WebCore::MockLibWebRTCPeerConnection::CreateDataChannelOrError): (WebCore::MockLibWebRTCPeerConnection::CreateDataChannel): Deleted.
  • testing/MockLibWebRTCPeerConnection.h:

Source/WebKit:

Reviewed by Alex Christensen.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp: (WebKit::NetworkRTCProvider::NetworkRTCProvider):

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

8:11 PM Changeset in webkit [285702] by Kocsen Chung
  • 3 edits in branches/safari-613.1.8-branch/LayoutTests

Cherry-pick r285554. rdar://problem/83770133

Unreviewed test gardening, skip failing test.
https://bugs.webkit.org/show_bug.cgi?id=231084
rdar://problem/83770133

Bug 230210 caused a progression on how we would detect stall during playback.
This exposed an issue with the existing test where it could fail differently
if a temporary stall occurred.
This test can't pass as we do not support change of resolution mid-stream
in plain mp4 playback (see bug 232916)

Patch by Jean-Yves Avenard <jyavenard@gmail.com> on 2021-11-09

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac/TestExpectations:

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

7:55 PM Changeset in webkit [285701] by Kocsen Chung
  • 8 edits in branches/safari-613.1.8-branch/Source

Versioning.

WebKit-7613.1.8.1

6:18 PM Changeset in webkit [285700] by Kocsen Chung
  • 1 copy in tags/Safari-613.1.7.3

Tag Safari-613.1.7.3.

5:57 PM Changeset in webkit [285699] by Kocsen Chung
  • 8 edits in branches/safari-613.1.7-branch/Source

Versioning.

WebKit-7613.1.7.3

5:42 PM Changeset in webkit [285698] by Brent Fulgham
  • 22 edits in trunk

[WebAuthn] Stop serializing BufferSource and Vector<uint8_t> duplicates of identifiers
https://bugs.webkit.org/show_bug.cgi?id=233011
<rdar://problem/85313807>

Reviewed by Chris Dumez.

The original WebAuthn logic converted WebCore::BufferSource objects to Vector<uint8_t>
during serialization, which created a weird design where some code dealt with BufferSource
objects, and other with Vectors, and lots of converting to and from these types. It also caused
WebAuthn data structures to have two places where this information might live, with the
UIProcess using one representation, and the WebContent process using another.

This patch revises the code as follows:

  1. The identifiers are always stored as BufferSource, and the same member is used in UIProcess and WebContent process when accessing this information.
  2. We now serialize BufferSource directly.

Tested by existing WebAuthn test cases (API and Layout tests)

Source/WebCore:

  • Modules/webauthn/PublicKeyCredentialCreationOptions.h:

(WebCore::PublicKeyCredentialCreationOptions::encode const):
(WebCore::PublicKeyCredentialCreationOptions::decode):

  • Modules/webauthn/PublicKeyCredentialDescriptor.h:

(WebCore::PublicKeyCredentialDescriptor::encode const):
(WebCore::PublicKeyCredentialDescriptor::decode):

  • Modules/webauthn/PublicKeyCredentialRequestOptions.h:

(WebCore::PublicKeyCredentialRequestOptions::decode):

  • Modules/webauthn/cbor/CBORValue.cpp:

(cbor::CBORValue::CBORValue):

  • Modules/webauthn/cbor/CBORValue.h:
  • Modules/webauthn/fido/DeviceRequestConverter.cpp:

(fido::convertUserEntityToCBOR):
(fido::convertDescriptorToCBOR):

  • Modules/webauthn/fido/U2fCommandConstructor.cpp:

(fido::WebCore::constructU2fSignCommand):
(fido::convertToU2fCheckOnlySignCommand):
(fido::convertToU2fSignCommand):

  • Modules/webauthn/fido/U2fCommandConstructor.h:
  • Modules/webauthn/fido/U2fResponseConverter.cpp:

(fido::readU2fSignResponse):

  • Modules/webauthn/fido/U2fResponseConverter.h:
  • bindings/js/BufferSource.h:

(WebCore::BufferSource::encode const):
(WebCore::BufferSource::decode):
(WebCore::toBufferSource):

Source/WebKit:

  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(publicKeyCredentialUserEntity):
(publicKeyCredentialDescriptors):

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticatorInternal::produceHashSet):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserVerification):
(WebKit::LocalAuthenticator::deleteDuplicateCredential const):

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm:

(WebKit::toASCDescriptor):
(WebKit::configureRegistrationRequestContext):
(WebKit::configurationAssertionRequestContext):

  • UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp:

(WebKit::U2fAuthenticator::issueSignCommand):
(WebKit::U2fAuthenticator::continueSignCommandAfterResponseReceived):

Tools:

  • TestWebKitAPI/Tests/WebCore/CtapRequestTest.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:

(TestWebKitAPI::getTestCredentialRawIdBytes):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/U2fCommandConstructorTest.cpp:

(TestWebKitAPI::constructMakeCredentialRequest):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):

5:37 PM Changeset in webkit [285697] by Kocsen Chung
  • 1 copy in tags/Safari-613.1.7.2

Tag Safari-613.1.7.2.

5:35 PM Changeset in webkit [285696] by Kocsen Chung
  • 2 edits in branches/safari-613.1.7-branch/Source/WebKit

Cherry-pick r285688. rdar://problem/85307256

[macOS] Add required methods to IOKit message filter
https://bugs.webkit.org/show_bug.cgi?id=233012
<rdar://85307256>

Reviewed by Brent Fulgham.

Add required methods to IOKit message filter on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:

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

5:32 PM Changeset in webkit [285695] by Kocsen Chung
  • 8 edits in branches/safari-613.1.7-branch/Source

Versioning.

WebKit-7613.1.7.2

5:20 PM Changeset in webkit [285694] by commit-queue@webkit.org
  • 6 edits in trunk/Source

Misc compiler warnings
https://bugs.webkit.org/show_bug.cgi?id=232989

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-11-11
Reviewed by Darin Adler.

Source/WebCore:

  • contentextensions/ContentExtensionActions.cpp:

(WebCore::ContentExtensions::RedirectAction::URLTransformAction::parse):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::QueryTransform::parse):

  • platform/graphics/transforms/ScaleTransformOperation.cpp:

(WebCore::blendScaleComponent):

  • style/CascadeLevel.h:

(WebCore::Style::operator--):

Source/WebKit:

  • UIProcess/WebPageProxy.cpp:
5:10 PM Changeset in webkit [285693] by Alan Coon
  • 9 edits in branches/safari-612.3.6.1-branch

Cherry-pick r285565. rdar://problem/83159358

[macOS] Enable NSURLSession partitioning based on first-party domain at CFNetwork level
https://bugs.webkit.org/show_bug.cgi?id=230750
<rdar://problem/83159358>

Reviewed by Alex Christensen.

Source/WebKit:

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): (overrideAttributionContext): Deleted. Stop disabling CFNetwork NSURLSession partitioning based on first-party domain on macOS.
  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSessionCocoa::sessionWrapperForTask): (WebKit::NetworkSessionCocoa::hasIsolatedSession const): (WebKit::NetworkSessionCocoa::clearIsolatedSessions): (WebKit::NetworkSessionCocoa::invalidateAndCancelSessionSet): Disable ITP session partitioning of certain prevalent domains on platforms where CFNetwork already does full partitioning of all domains (now that it is enabled on macOS 12+ and iOS15+).

Source/WTF:

Add HAVE(CFNETWORK_SESSION_PARTITIONING_BASED_ON_FIRST_PARTY_DOMAIN) build time flag that is true
on newer Apple OSes where CFNetwork does NSURLSession partitioning based on first-party domain for
us.

  • wtf/PlatformHave.h:

LayoutTests:

Skip a few ITP session partitioning tests on newer OSes now that session partitioning
happens for all first-party domains at CFNetwork level on these OSes.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:

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

5:09 PM Changeset in webkit [285692] by Alan Coon
  • 2 edits in branches/safari-612.3.6.1-branch/Source/WebKit

Cherry-pick r285550. rdar://problem/85075538

REGRESSION (Safari 15): AudioContext.currentTime speeds up (and audio won't play) when Bluetooth speaker connected
https://bugs.webkit.org/show_bug.cgi?id=232728
<rdar://problem/85075538>

Reviewed by Jer Noble.

This was a regression from us moving WebAudio to the GPUProcess in Safari 15. The issue occurred because the
WebProcess (writer) would get further and further ahead of the GPUProcess (reader) after a hardware sample
rate change.

When rendering on https://mdn.github.io/webaudio-examples/audiocontext-states/ with a hardware sample rate of
96Khz, RemoteAudioDestination::render() would get called with a numberOfFrame=128. Each time
RemoteAudioDestination::render() was called, it would signal the IPC semaphore, causing the WebProcess to
produce one WebAudio rendering quantum (128 frames). This would match perfectly and there would be no issues.
However, if during playback, the hardware sample rate changes (which can happen when connecting to bluetooth
speakers), CoreAudio would start calling RemoteAudioDestination::render() with a different numberOfFrame.
For example, when switching the hardware sample rate to 44.1Khz, numberOfFrames would be 278. Every time it
is called, render() would signal the semaphore 3 times, causing the WebProcess to produce 3 WebAudio rendering
quantums (3 * 128 = 384 frames). So each time render() is called, the WebProcess would generate 384 - 278 = 105
frames too many, causing it to get further and further ahead of the GPUProcess. One symptom would be that
AudioContext.currentTime would progress too fast. Also, eventually, our RingBuffer between the 2 process would
fill up and lead to rendering issues.

To address the issue, I updated RemoteAudioDestination::render() to keep track of how many extra samples it
requested from the WebProcess previously. This avoids signalling the IPC semaphore too many times and the
WebProcess can no longer get too far ahead of the GPUProcess. The logic matches what was already done in
RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::render().

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

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

5:09 PM Changeset in webkit [285691] by Alan Coon
  • 2 edits in branches/safari-612.3.6.1-branch/Source/WebCore

Cherry-pick r285531. rdar://problem/83381842

Fix macCatalyst build after r285509
https://bugs.webkit.org/show_bug.cgi?id=232863

Unreviewed.

  • Modules/speech/cocoa/SpeechRecognizerCocoa.mm:

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

5:09 PM Changeset in webkit [285690] by Alan Coon
  • 3 edits in branches/safari-612.3.6.1-branch/Source/WebKit

Cherry-pick r285509. rdar://problem/83381842

Fix wrong frame count of CARingBuffer in SpeechRecognitionRemoteRealtimeMediaSource
https://bugs.webkit.org/show_bug.cgi?id=232863
<rdar://83381842>

Reviewed by Youenn Fablet.

SpeechRecognitionRealtimeMediaSourceManager::Source uses shared ring buffer to pass audio data to
SpeechRecognitionRemoteRealtimeMediaSource. We used to ask CARingBuffer in
SpeechRecognitionRealtimeMediaSourceManager::Source to allocate with m_numberOfFrames and send m_numberOfFrames
to SpeechRecognitionRemoteRealtimeMediaSource (so SpeechRecognitionRemoteRealtimeMediaSource can create a
corresponding CARingBuffer). This is wrong because CARingBuffer::allocate() rounds up frameCount to power of
two, which means m_numberOfFrames may be not the number used. We should get the actual frameCount in the
setStorage callback of SharedRingBufferStorage, and pass that value to SpeechRecognitionRemoteRealtimeMediaSource.

Manually tested.

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp: (WebKit::SpeechRecognitionRemoteRealtimeMediaSource::setStorage):
  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp: (WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::Source): (WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::storageChanged):

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

4:43 PM Changeset in webkit [285689] by Alan Coon
  • 7 edits in branches/safari-612.3.6.0-branch/Source

Apply patch. rdar://problem/83673859

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

[macOS] Add required methods to IOKit message filter
https://bugs.webkit.org/show_bug.cgi?id=233012
<rdar://85307256>

Reviewed by Brent Fulgham.

Add required methods to IOKit message filter on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:
3:58 PM Changeset in webkit [285687] by mark.lam@apple.com
  • 51 edits in trunk/Source

Add VM::writeBarrier() and VM::mutatorFence().
https://bugs.webkit.org/show_bug.cgi?id=233019
rdar://85318693

Reviewed by Saam Barati.

Source/JavaScriptCore:

These are ALWAYS_INLINE functions that will forward the call to the Heap versions.
Adding these allows us to make all the client code more terse, and also makes it
easier to redirect the underlying writeBarrier implementation later for global GC
work. Additionally, this will help make the global GC patch less of a mega patch
and easier to review later.

Also remove unused Heap::writeBarrierWithoutFence().

This is a refactoring patch. There is no behavior change.

  • bytecode/LLIntCallLinkInfo.h:

(JSC::LLIntCallLinkInfo::link):

  • bytecode/ObjectPropertyCondition.h:

(JSC::ObjectPropertyCondition::presence):
(JSC::ObjectPropertyCondition::absence):
(JSC::ObjectPropertyCondition::absenceOfSetEffect):
(JSC::ObjectPropertyCondition::equivalence):
(JSC::ObjectPropertyCondition::hasStaticProperty):
(JSC::ObjectPropertyCondition::hasPrototype):

  • bytecode/PropertyCondition.h:

(JSC::PropertyCondition::absence):
(JSC::PropertyCondition::absenceOfSetEffect):
(JSC::PropertyCondition::equivalence):
(JSC::PropertyCondition::hasPrototype):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::initGetByIdSelf):
(JSC::StructureStubInfo::initPutByIdReplace):
(JSC::StructureStubInfo::initInByIdSelf):
(JSC::StructureStubInfo::addAccessCase):

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::considerCaching):

  • bytecode/UnlinkedCodeBlockGenerator.cpp:

(JSC::UnlinkedCodeBlockGenerator::finalize):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::decodeCachedCodeBlocks):

  • dfg/DFGJITFinalizer.cpp:

(JSC::DFG::JITFinalizer::finalize):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::finalize):

  • ftl/FTLJITFinalizer.cpp:

(JSC::FTL::JITFinalizer::finalize):

  • heap/Heap.h:
  • heap/HeapInlines.h:

(JSC::Heap::writeBarrierWithoutFence): Deleted.

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setupGetByIdPrototypeCache):
(JSC::LLInt::performLLIntGetByID):
(JSC::LLInt::llint_write_barrier_slow):

  • runtime/ArrayPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/AuxiliaryBarrierInlines.h:

(JSC::AuxiliaryBarrier<T>::AuxiliaryBarrier):
(JSC::AuxiliaryBarrier<T>::set):

  • runtime/CommonSlowPaths.cpp:

(JSC::JSC_DEFINE_COMMON_SLOW_PATH):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::finishCreation):

  • runtime/InferredValue.h:

(JSC::InferredValue<JSCellType>::InferredValueWatchpointSet::notifyWriteSlow):
(JSC::InferredValue<JSCellType>::notifyWriteSlow):

  • runtime/JSArray.cpp:

(JSC::JSArray::appendMemcpy):
(JSC::JSArray::shiftCountWithAnyIndexingType):
(JSC::JSArray::unshiftCountWithAnyIndexingType):

  • runtime/JSArrayInlines.h:

(JSC::JSArray::pushInline):

  • runtime/JSCellInlines.h:

(JSC::JSCell::finishCreation):
(JSC::JSCell::setStructure):

  • runtime/JSFinalizationRegistry.cpp:

(JSC::JSFinalizationRegistry::registerTarget):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::allocateRareData):
(JSC::JSFunction::allocateAndInitializeRareData):

  • runtime/JSObject.cpp:

(JSC::JSObject::putByIndex):

  • runtime/JSObject.h:

(JSC::JSObject::trySetIndexQuickly):
(JSC::JSObject::setIndexQuickly):

  • runtime/JSWeakObjectRef.h:
  • runtime/LazyPropertyInlines.h:

(JSC::ElementType>::setMayBeNull):

  • runtime/ObjectInitializationScope.cpp:

(JSC::ObjectInitializationScope::~ObjectInitializationScope):

  • runtime/ObjectInitializationScope.h:

(JSC::ObjectInitializationScope::~ObjectInitializationScope):

  • runtime/RegExpCachedResult.cpp:

(JSC::RegExpCachedResult::lastResult):

  • runtime/RegExpCachedResult.h:

(JSC::RegExpCachedResult::record):

  • runtime/RegExpObject.h:
  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::installCode):

  • runtime/Structure.cpp:

(JSC::Structure::flattenDictionaryStructure):

  • runtime/StructureChain.cpp:

(JSC::StructureChain::finishCreation):

  • runtime/StructureRareDataInlines.h:

(JSC::StructureRareData::setCachedPropertyNameEnumerator):

  • runtime/VM.h:

(JSC::VM::writeBarrier):
(JSC::VM::writeBarrierSlowPath):
(JSC::VM::mutatorFence):

  • runtime/WriteBarrierInlines.h:

(JSC::Traits>::setEarlyValue):
(JSC::RawValueTraits<Unknown>>::set):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/js/JSWebAssemblyInstance.h:

Source/WebCore:

  • bindings/js/JSDOMGuardedObject.cpp:

(WebCore::DOMGuardedObject::DOMGuardedObject):

  • bindings/js/JSEventListener.h:

(WebCore::JSEventListener::ensureJSFunction const):

  • bindings/js/JSValueInWrappedObject.h:

(WebCore::cachedPropertyValue):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateAttributeSetterBodyDefinition):
(GenerateWriteBarriersForArguments):

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

(WebCore::setJSTestDefaultToJSON_eventHandlerAttributeSetter):

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

(WebCore::setJSTestObj_onfooSetter):
(WebCore::setJSTestObj_onwebkitfooSetter):
(WebCore::jsTestObjPrototypeFunction_addEventListenerBody):
(WebCore::jsTestObjPrototypeFunction_removeEventListenerBody):

  • worklets/PaintWorkletGlobalScope.cpp:

(WebCore::PaintWorkletGlobalScope::registerPaint):

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

AX: Add missing AXID variant to AXPropertyValueVariant
https://bugs.webkit.org/show_bug.cgi?id=233004

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-11-11
Reviewed by Chris Fleizach.

In AXIsolatedObject::setObjectProperty, we set property values to be
AXIDs. However, there is no AXID variant in AXPropertyValueVariant,
so none of these property lookups ever returned values.

This patch adds AXID as a variant to AXPropertyValueVariant, fixing
~15 text-only failures.

  • accessibility/isolatedtree/AXIsolatedTree.h:

Add AXID as a variant to AXPropertyValueVariant.

3:48 PM Changeset in webkit [285685] by Alan Coon
  • 2 edits in branches/safari-612.3.6.0-branch/Source/WebKit

Cherry-pick r285550. rdar://problem/85075538

REGRESSION (Safari 15): AudioContext.currentTime speeds up (and audio won't play) when Bluetooth speaker connected
https://bugs.webkit.org/show_bug.cgi?id=232728
<rdar://problem/85075538>

Reviewed by Jer Noble.

This was a regression from us moving WebAudio to the GPUProcess in Safari 15. The issue occurred because the
WebProcess (writer) would get further and further ahead of the GPUProcess (reader) after a hardware sample
rate change.

When rendering on https://mdn.github.io/webaudio-examples/audiocontext-states/ with a hardware sample rate of
96Khz, RemoteAudioDestination::render() would get called with a numberOfFrame=128. Each time
RemoteAudioDestination::render() was called, it would signal the IPC semaphore, causing the WebProcess to
produce one WebAudio rendering quantum (128 frames). This would match perfectly and there would be no issues.
However, if during playback, the hardware sample rate changes (which can happen when connecting to bluetooth
speakers), CoreAudio would start calling RemoteAudioDestination::render() with a different numberOfFrame.
For example, when switching the hardware sample rate to 44.1Khz, numberOfFrames would be 278. Every time it
is called, render() would signal the semaphore 3 times, causing the WebProcess to produce 3 WebAudio rendering
quantums (3 * 128 = 384 frames). So each time render() is called, the WebProcess would generate 384 - 278 = 105
frames too many, causing it to get further and further ahead of the GPUProcess. One symptom would be that
AudioContext.currentTime would progress too fast. Also, eventually, our RingBuffer between the 2 process would
fill up and lead to rendering issues.

To address the issue, I updated RemoteAudioDestination::render() to keep track of how many extra samples it
requested from the WebProcess previously. This avoids signalling the IPC semaphore too many times and the
WebProcess can no longer get too far ahead of the GPUProcess. The logic matches what was already done in
RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::render().

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

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

3:48 PM Changeset in webkit [285684] by Alan Coon
  • 2 edits in branches/safari-612.3.6.0-branch/Source/WebCore

Cherry-pick r285531. rdar://problem/83381842

Fix macCatalyst build after r285509
https://bugs.webkit.org/show_bug.cgi?id=232863

Unreviewed.

  • Modules/speech/cocoa/SpeechRecognizerCocoa.mm:

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

3:48 PM Changeset in webkit [285683] by Alan Coon
  • 3 edits in branches/safari-612.3.6.0-branch/Source/WebKit

Cherry-pick r285509. rdar://problem/83381842

Fix wrong frame count of CARingBuffer in SpeechRecognitionRemoteRealtimeMediaSource
https://bugs.webkit.org/show_bug.cgi?id=232863
<rdar://83381842>

Reviewed by Youenn Fablet.

SpeechRecognitionRealtimeMediaSourceManager::Source uses shared ring buffer to pass audio data to
SpeechRecognitionRemoteRealtimeMediaSource. We used to ask CARingBuffer in
SpeechRecognitionRealtimeMediaSourceManager::Source to allocate with m_numberOfFrames and send m_numberOfFrames
to SpeechRecognitionRemoteRealtimeMediaSource (so SpeechRecognitionRemoteRealtimeMediaSource can create a
corresponding CARingBuffer). This is wrong because CARingBuffer::allocate() rounds up frameCount to power of
two, which means m_numberOfFrames may be not the number used. We should get the actual frameCount in the
setStorage callback of SharedRingBufferStorage, and pass that value to SpeechRecognitionRemoteRealtimeMediaSource.

Manually tested.

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp: (WebKit::SpeechRecognitionRemoteRealtimeMediaSource::setStorage):
  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp: (WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::Source): (WebKit::SpeechRecognitionRealtimeMediaSourceManager::Source::storageChanged):

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

3:48 PM Changeset in webkit [285682] by Alan Coon
  • 3 edits in branches/safari-612.3.6.0-branch/Source/WebCore

Cherry-pick r285330. rdar://problem/85004449

Nested run loops under MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange can cause hang when timeout fires
https://bugs.webkit.org/show_bug.cgi?id=232695
<rdar://problem/85004449>

Reviewed by Jer Noble.

It's possible for MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange
to be called re-entrantly, if the RunLoop::run call ends up processing
an event that also wants to synchronously update the media image. This
can cause a hang:

  1. Enter the outer waitForVideoOutputMediaDataWillChange call.
  2. Set up the outer timeout timer.
  3. Call RunLoop::run.

3.1. Enter the inner waitForVideoOutputMediaDataWillChange call.
3.2. Set up the inner timeout timer.
3.3. Call RunLoop::run.

3.3.1. Wait for new RunLoop events, and none arrive.
3.3.2. The outer timeout timer fires, calling RunLoop::stop.

3.4. Return from waitForVideoOutputMediaDataWillChange, cancelling

the inner timeout timer.

3.5. Wait for more events on the run loop, forever.

To avoid this, we can set up a single timeout timer, and track the
nesting level of our RunLoop::run calls. The innermost RunLoop::run call
will finish either by the timer firing (which calls RunLoop::stop) or by
the video data updating (which also calls RunLoop::stop, under
outputMediaDataWillChange). Either way, once the innermost
RunLoop::run call is finished, we know we can stop processing all of
the ancestor RunLoop:run calls.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange): (WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):

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

3:48 PM Changeset in webkit [285681] by Alan Coon
  • 3 edits
    1 add in branches/safari-612.3.6.0-branch

Cherry-pick r283300. rdar://problem/85259264

DFG strength reduction on % operator should handle an INT_MIN divisor.
https://bugs.webkit.org/show_bug.cgi?id=230391
<rdar://problem/83229740>

Reviewed by Robin Morisset.

JSTests:

  • stress/dfg-strength-reduction-on-mod-should-handle-INT_MIN.js: Added.

Source/JavaScriptCore:

  • dfg/DFGStrengthReductionPhase.cpp: (JSC::DFG::StrengthReductionPhase::handleNode):

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

3:41 PM Changeset in webkit [285680] by Alan Coon
  • 3 edits in branches/safari-612.3.6.1-branch/Source/WebCore

Cherry-pick r285330. rdar://problem/85004449

Nested run loops under MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange can cause hang when timeout fires
https://bugs.webkit.org/show_bug.cgi?id=232695
<rdar://problem/85004449>

Reviewed by Jer Noble.

It's possible for MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange
to be called re-entrantly, if the RunLoop::run call ends up processing
an event that also wants to synchronously update the media image. This
can cause a hang:

  1. Enter the outer waitForVideoOutputMediaDataWillChange call.
  2. Set up the outer timeout timer.
  3. Call RunLoop::run.

3.1. Enter the inner waitForVideoOutputMediaDataWillChange call.
3.2. Set up the inner timeout timer.
3.3. Call RunLoop::run.

3.3.1. Wait for new RunLoop events, and none arrive.
3.3.2. The outer timeout timer fires, calling RunLoop::stop.

3.4. Return from waitForVideoOutputMediaDataWillChange, cancelling

the inner timeout timer.

3.5. Wait for more events on the run loop, forever.

To avoid this, we can set up a single timeout timer, and track the
nesting level of our RunLoop::run calls. The innermost RunLoop::run call
will finish either by the timer firing (which calls RunLoop::stop) or by
the video data updating (which also calls RunLoop::stop, under
outputMediaDataWillChange). Either way, once the innermost
RunLoop::run call is finished, we know we can stop processing all of
the ancestor RunLoop:run calls.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange): (WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):

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

3:41 PM Changeset in webkit [285679] by Alan Coon
  • 3 edits
    3 adds in branches/safari-612.3.6.1-branch

Cherry-pick r284434. rdar://problem/77969801

WebM with invalid size should fail to load with error
https://bugs.webkit.org/show_bug.cgi?id=231886
rdar://77969801

Reviewed by Jer Noble.

Source/WebCore:

libwebm for some elements are using a std::string or a std::vector<uint8_t>
to store their content. Those have infallible memory allocators.
We limit the size we allow the parser to use to some reasonable values.

Test: media/media-webm-invalid-check.html

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp: (WebCore::SourceBufferParserWebM::OnElementBegin):

LayoutTests:

  • media/content/invalid-size.webm: Added.
  • media/media-webm-invalid-check-expected.txt: Added.
  • media/media-webm-invalid-check.html: Added.

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

3:41 PM Changeset in webkit [285678] by Alan Coon
  • 3 edits
    1 add in branches/safari-612.3.6.1-branch

Cherry-pick r283300. rdar://problem/85259264

DFG strength reduction on % operator should handle an INT_MIN divisor.
https://bugs.webkit.org/show_bug.cgi?id=230391
<rdar://problem/83229740>

Reviewed by Robin Morisset.

JSTests:

  • stress/dfg-strength-reduction-on-mod-should-handle-INT_MIN.js: Added.

Source/JavaScriptCore:

  • dfg/DFGStrengthReductionPhase.cpp: (JSC::DFG::StrengthReductionPhase::handleNode):

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

3:38 PM Changeset in webkit [285677] by Andres Gonzalez
  • 2 edits in trunk/Tools

Fix for crash in LayoutTests in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=233014

Reviewed by Chris Fleizach.

This fixes the following tests in isolated tree mode:
accessibility/image-link-inline-cont.html [ Crash ]
accessibility/image-link.html [ Crash ]
accessibility/internal-link-anchors2.html [ Crash ]

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::allAttributes):
Need to retain the pointer returned by
AccessibilityUIElement::descriptionOfValue.

3:36 PM Changeset in webkit [285676] by Alan Coon
  • 8 edits in branches/safari-612.3.6.0-branch/Source

Versioning.

WebKit-7612.3.6.0.1

3:29 PM Changeset in webkit [285675] by Alan Coon
  • 17 edits in branches/safari-612.3.6.2-branch/Source

Cherry-pick r285648. rdar://problem/85171163

Log memory usage metadata when WebContent crosses critical or warning level memory thresholds
https://bugs.webkit.org/show_bug.cgi?id=232976

Reviewed by Darin Adler.

Source/WebCore:

WebCore::logMemoryStatistics was changed to:

  • Emit VM tag names as public strings to the log. There isn't anything privacy sensitive about our 256 fixed VM tags, and emitting them to the logs as as private string (as we were doing before) made those log lines useless.
  • Use WebCore::memoryUsageStatistics to gather memory metadata, since other WebCore callsites were already using that and it reduces code duplication.
  • Only log JS object type counts on internal OS builds. Previously we also logged those counts on public OS builds, but that was useless since all the class names were redacted in the log.
  • page/MemoryRelease.cpp: (WebCore::logMemoryStatistics): (WebCore::logMemoryStatisticsReasonDescription): (WebCore::pageCount): Deleted. (WebCore::logMemoryStatisticsAtTimeOfDeath): Deleted.
  • page/MemoryRelease.h:
  • page/PerformanceLogging.cpp: (WebCore::PerformanceLogging::memoryUsageStatistics): (WebCore::PerformanceLogging::didReachPointOfInterest):
  • page/PerformanceLogging.h:
  • page/cocoa/PerformanceLoggingCocoa.mm: (WebCore::PerformanceLogging::getPlatformMemoryUsageStatistics):

Source/WebKit:

Added callbacks to log memory usage metadata the first time a process hits these milestones:

  • exceeded inactive memory limit while active (on Mac)
  • exceeded warning process limit threshold (on other non-Mac Apple platforms)
  • exceeded critical process limit threshold (on other non-Mac Apple platforms)

The reason for this is we receive a large number of out of memory reports with very little
info in the logs. We want to log more metadata about memory usage (similar to what we do on
Mac in WebCore::logMemoryStatisticsAtTimeOfDeath) to help us debug those reports.

  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess):
  • WebProcess/WebProcess.h:

Source/WTF:

Fixed several issues with memory usage tracking:

  • pagesPerVMTag now properly accounts for swapped-out pages in its footprint calculation, as footprint(1) already does.
  • displayNamePerVMTag now includes all of the most common VM tags associated with WebKit.
  • MemoryPressureHandler now knows the specific type of pressure event that occurred. This allows it to differentiate between the entire system being at a warning pressure level vs. just this process hitting its warning memory level limit.
  • wtf/MemoryPressureHandler.cpp: (WTF::MemoryPressureHandler::setMemoryPressureStatus): (WTF::MemoryPressureHandler::memoryPressureStatusChanged): (WTF::MemoryPressureHandler::setUnderMemoryPressure): Deleted.
  • wtf/MemoryPressureHandler.h: (WTF::MemoryPressureHandler::setMemoryPressureStatusChangedCallback): (WTF::MemoryPressureHandler::isUnderMemoryPressure const):
  • wtf/ResourceUsage.h:
  • wtf/cocoa/MemoryPressureHandlerCocoa.mm: (WTF::MemoryPressureHandler::install):
  • wtf/cocoa/ResourceUsageCocoa.cpp: (WTF::displayNameForVMTag): (WTF::pagesPerVMTag):
  • wtf/unix/MemoryPressureHandlerUnix.cpp: (WTF::MemoryPressureHandler::triggerMemoryPressureEvent):
  • wtf/win/MemoryPressureHandlerWin.cpp: (WTF::MemoryPressureHandler::windowsMeasurementTimerFired):

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

3:27 PM Changeset in webkit [285674] by Alan Coon
  • 8 edits in branches/safari-612.3.6.2-branch/Source

Versioning.

WebKit-7612.3.6.2.1

3:14 PM Changeset in webkit [285673] by Alan Coon
  • 8 edits in branches/safari-612.3.6.1-branch/Source

Versioning.

WebKit-7612.3.6.1.1

3:08 PM Changeset in webkit [285672] by Chris Dumez
  • 3 edits in trunk/Tools

REGRESSION: 26 InAppBrowserPrivacy API failures on iOS
https://bugs.webkit.org/show_bug.cgi?id=233016
<rdar://problem/85315536>

Reviewed by Brent Fulgham.

In r285594, I have the browser entitlement to TestWebKit API to make my new API test work
on iOS. However, it turns out that 26 InAppBrowserPrivacy API tests rely on the browser
entitlement not being present. I am therefore reverting this part of my change.

  • TestWebKitAPI/Configurations/TestWebKitAPI-iOS.entitlements:
  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
2:46 PM Changeset in webkit [285671] by Andres Gonzalez
  • 3 edits in trunk/Tools

Fix for thread deadlocks during layout tests in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=232999
<rdar://problem/85300861>

Reviewed by Chris Fleizach.

In isolated tree mode, AccessibilityUIElement calls into the AX API are
dispatched to a secondary, mocked thread created by the
AccessibilityController to simulate AT requests off of the main thread.
The main thread, in which all AccessibilityUIElement methods are run,
is blocked to wait for the results from the AX thread, to then continue
execution of JS layout tests.
The deadlocks arise when the AX API call cannot be fulfilled on the
secondary thread and needs to be dispatched to the main thread that is
now blocked. The main thread is waitng for the AccessibilityController's
secondary mocked thread, and that thread is waitng for the main thread
to compute results for the AX API request.
This patch introduces a workaround by spinning the main thread run loop
right after the API calls are dispatched to the AX thread.

  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:

(WTR::AccessibilityController::executeOnAXThreadAndWait):
(WTR::AccessibilityController::spinMainRunLoop const):

  • WebKitTestRunner/InjectedBundle/AccessibilityController.h:
2:43 PM Changeset in webkit [285670] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

[Live Text] Augment TextRecognitionResult with a new type of text recognition data
https://bugs.webkit.org/show_bug.cgi?id=233009

Reviewed by Devin Rousso.

Add the new type, along with encoding/decoding support. No change in behavior.

  • platform/TextRecognitionResult.h:

(WebCore::TextRecognitionBlockData::TextRecognitionBlockData):
(WebCore::TextRecognitionBlockData::encode const):
(WebCore::TextRecognitionBlockData::decode):
(WebCore::TextRecognitionResult::isEmpty const):
(WebCore::TextRecognitionResult::encode const):
(WebCore::TextRecognitionResult::decode):

  • testing/Internals.cpp:

(WebCore::Internals::installImageOverlay):

2:41 PM Changeset in webkit [285669] by Nikos Mouchtaris
  • 7 edits in trunk

REGRESSION: (r283871) [ macOS wk2 Release ] 2 css/cssom-view/scroll-behavior-main-frame tests are failing
https://bugs.webkit.org/show_bug.cgi?id=231600

Reviewed by Simon Fraser.

Source/WebCore:

Fix for issue where a scroll animation is not properly cancelled by a second scroll request.
This occurs when the first scroll animation has not been fully started by the time the second
request has been received by the scrolling thread (first animation still in
m_nodesWithPendingScrollAnimations). For the scenario where the second scroll request is animated,
we change ThreadedScrollingTree::scrollingTreeNodeRequestsScroll to use set (add is ignored if
key exists in the hash map which caused the second request to be ignored). For the scenario
where the second scroll request is not animated, we clear the pending request for that
scrolling node (if one exists).

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::removePendingScrollAnimationForNode):

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::handleScrollPositionRequest):

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::scrollingTreeNodeRequestsScroll):
(WebCore::ThreadedScrollingTree::removePendingScrollAnimationForNode):

  • page/scrolling/ThreadedScrollingTree.h:

LayoutTests:

  • platform/mac-wk2/TestExpectations:
2:40 PM Changeset in webkit [285668] by Alan Coon
  • 1 copy in branches/safari-612.3.6.3-branch

New branch.

2:38 PM Changeset in webkit [285667] by Alan Coon
  • 1 delete in branches/safari-612.3.2-branch

Remove branch.

2:38 PM Changeset in webkit [285666] by Alan Coon
  • 1 delete in branches/safari-612.3.1-branch

Remove branch.

2:38 PM Changeset in webkit [285665] by Alan Coon
  • 1 delete in branches/safari-612.3.0-branch

Remove branch.

2:37 PM Changeset in webkit [285664] by Alan Coon
  • 1 copy in branches/safari-612.3.6.2-branch

New branch.

2:36 PM Changeset in webkit [285663] by Alan Coon
  • 1 copy in branches/safari-612.3.6.1-branch

New branch.

2:36 PM Changeset in webkit [285662] by Alan Coon
  • 1 copy in branches/safari-612.3.6.0-branch

New branch.

2:35 PM Changeset in webkit [285661] by Alan Coon
  • 1 copy in branches/safari-612.3.2-branch

New branch.

2:35 PM Changeset in webkit [285660] by Alan Coon
  • 1 copy in branches/safari-612.3.1-branch

New branch.

2:35 PM Changeset in webkit [285659] by Alan Coon
  • 1 copy in branches/safari-612.3.0-branch

New branch.

2:34 PM Changeset in webkit [285658] by Alan Coon
  • 1 copy in tags/Safari-612.3.6

Tag Safari-612.3.6.

2:00 PM Changeset in webkit [285657] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Disable JIT runs of the ExecutionTimeLimitTest when !ENABLE(JIT).
https://bugs.webkit.org/show_bug.cgi?id=233003

Reviewed by Yusuke Suzuki.

  • API/tests/ExecutionTimeLimitTest.cpp:

(testExecutionTimeLimit):

1:52 PM Changeset in webkit [285656] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION (r285618): [mac-wk1] ASSERTION FAILED: cgContext == [currentContext CGContext]
https://bugs.webkit.org/show_bug.cgi?id=233008

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations: Skip test for now.
1:52 PM Changeset in webkit [285655] by Wenson Hsieh
  • 26 edits
    2 adds in trunk/Source

Move image overlay code out of HTMLElement and into a separate helper file
https://bugs.webkit.org/show_bug.cgi?id=232974

Reviewed by Antti Koivisto.

Source/WebCore:

Move code for updating, querying, and removing image overlays out of HTMLElement.cpp and HTMLElement.h and into
separate helper files instead (ImageOverlay.h and ImageOverlay.cpp). Future patches in this area will extend the
functionality of these overlays, so this will help avoid code bloat inside HTMLElement when doing so.

No change in behavior.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/ImageOverlay.cpp: Added.

(WebCore::ImageOverlay::imageOverlayElementIdentifier):
(WebCore::ImageOverlay::imageOverlayDataDetectorClassName):
(WebCore::ImageOverlay::hasOverlay):
(WebCore::ImageOverlay::imageOverlayHost):
(WebCore::ImageOverlay::isDataDetectorResult):
(WebCore::ImageOverlay::isInsideOverlay):
(WebCore::ImageOverlay::isOverlayText):
(WebCore::ImageOverlay::removeOverlaySoonIfNeeded):
(WebCore::ImageOverlay::containerRect):
(WebCore::ImageOverlay::updateWithTextRecognitionResult):

  • dom/ImageOverlay.h: Added.

Additionally wrap the new image overlay helper functions in the ImageOverlay namespace. This also allows us to
shorten some of the function names, since they're already under the namespace, so duplicating "ImageOverlay" in
the function name itself is unnecessary.

  • editing/Editor.cpp:

(WebCore::Editor::performCutOrCopy):
(WebCore::scanForTelephoneNumbers):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::contains const):

  • editing/TextIterator.cpp:

(WebCore::TextIterator::handleReplacedElement):

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::shouldExtendSelectionToTargetNode):
(WebCore::HTMLElement::selectionRenderingBehavior):
(WebCore::imageOverlayElementIdentifier): Deleted.
(WebCore::imageOverlayDataDetectorClassName): Deleted.
(WebCore::HTMLElement::hasImageOverlay const): Deleted.
(WebCore::imageOverlayHost): Deleted.
(WebCore::HTMLElement::isImageOverlayDataDetectorResult const): Deleted.
(WebCore::HTMLElement::isInsideImageOverlay): Deleted.
(WebCore::HTMLElement::isImageOverlayText): Deleted.
(WebCore::HTMLElement::removeImageOverlaySoonIfNeeded): Deleted.
(WebCore::HTMLElement::containerRectForTextRecognition): Deleted.
(WebCore::HTMLElement::updateWithTextRecognitionResult): Deleted.

  • html/HTMLElement.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::seekWithTolerance):
(WebCore::HTMLMediaElement::playInternal):

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::populate):

  • page/DragController.cpp:

(WebCore::DragController::draggableElement const):
(WebCore::DragController::startDrag):

  • page/EventHandler.cpp:

(WebCore::nodeToSelectOnMouseDownForNode):
(WebCore::EventHandler::canMouseDownStartSelect):
(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::updateSelectionForMouseDrag):
(WebCore::EventHandler::hitTestResultAtPoint const):
(WebCore::EventHandler::selectCursor):

  • page/ImageOverlayController.cpp:

(WebCore::ImageOverlayController::selectionQuadsDidChange):

  • page/Page.cpp:

(WebCore::Page::updateElementsWithTextRecognitionResults):

  • page/mac/ImageOverlayControllerMac.mm:

(WebCore::ImageOverlayController::updateDataDetectorHighlights):
(WebCore::ImageOverlayController::elementUnderMouseDidChange):

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::nodeForImageData const):
(WebCore::HitTestResult::addNodeToListBasedTestResultCommon):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::RenderImage):

  • testing/Internals.cpp:

(WebCore::Internals::installImageOverlay):

Source/WebKit:

See WebCore/ChangeLog for more details.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::dictionaryPopupInfoForRange):

  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::updateFindIndicator):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::editorState const):
(WebKit::WebPage::findDataDetectionResultElementInImageOverlay):
(WebKit::WebPage::requestTextRecognition):
(WebKit::WebPage::updateWithTextRecognitionResult):

  • WebProcess/WebPage/ios/FindControllerIOS.mm:

(WebKit::findTextIndicatorOptions):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::insideImageOverlay):
(WebKit::rangeForPointInRootViewCoordinates):
(WebKit::hostVideoElementIgnoringImageOverlay):
(WebKit::elementPositionInformation):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performImmediateActionHitTestAtLocation):

1:29 PM Changeset in webkit [285654] by Adrian Perez de Castro
  • 39 edits in trunk/Source

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

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • interpreter/Interpreter.cpp: Add missing JSWebAssemblyInstance.h header.
  • jit/JITInlineCacheGenerator.cpp: Remove unneeded JIT.h, as it is already included

transitively by JITInlines.h instead.

  • llint/LLIntExceptions.cpp: Replace inclusion of WasmContext.h with WasmContextInlines.h
  • wasm/WasmStreamingCompiler.cpp: Add missing JSBigInt.h header.
  • wasm/js/JSWebAssemblyException.cpp: Add missing AuxiliaryBarrierInlines.h, JSBigInt.h,

JSCJSValueInlines.h and JSCellInlines.h

  • wasm/js/JSWebAssemblyException.h: Add missing JSObject.h header.
  • wasm/js/JSWebAssemblyTag.cpp: Add missing JSCellInlines.h, JSObjectInlines.h, and

StructureInlines.h headers.

  • wasm/js/JSWebAssemblyTag.h: Add missing JSObject.h header.
  • wasm/js/WebAssemblyExceptionConstructor.cpp: Add missing JSWebAssemblyTag.h header.
  • wasm/js/WebAssemblyExceptionPrototype.cpp: Add missing headers JSWebAssemblyException.h

and JSWebAssemblyTag.h

  • wasm/js/WebAssemblyTagPrototype.cpp: Add missing headers JSCellInlines.h,

JSObjectInlines.h, JSWebAssemblyTag.h, and StructureInlines.h

Source/WebCore:

No new tests needed.

  • Modules/WebGPU/GPUColorWrite.h: Remove unneeded inclusion of wtf/RefCounted.h.
  • Modules/WebGPU/GPUOutOfMemoryError.h: Replace inclusion of header wtf/Ref.h with

wtf/RefPtr.h.

  • Modules/WebGPU/GPURenderPassEncoder.cpp: Add missing headers GPUBindGroup,h,

GPUQuerySet.h, GPURenderBundle.h, and GPURenderPipeline.h

  • Modules/WebGPU/GPUSupportedLimits.h: Remove unneeded inclusions of headers which are

picked transitively from WebGPUSupportedLimits.h

  • Modules/mediastream/RTCDataChannel.cpp: Add missing header

RTCDataChannelRemoteHandlerConnection.h

  • Modules/webaudio/AudioBuffer.h: Add missing JavaScriptCore/GenericTypedArrayView.h header.
  • bindings/js/ScriptModuleLoader.cpp: Add missing DocumentInlines.h header.
  • contentextensions/ContentExtensionActions.cpp: Add missing wtf/URL.h header.
  • dom/FragmentDirectiveParser.cpp: Add missing wtf/Deque.h header.
  • dom/FragmentDirectiveParser.h: Add missing wtf/text/WTFString.h header.
  • editing/atk/FrameSelectionAtk.cpp: Replace inclusion of header Document.h with

DocumentInlines.h.

  • html/HTMLElement.cpp: Add missing EventLoop.h header inclusion.
  • html/HTMLFrameElement.cpp: Add missing ElementInlines.h header inclusion.
  • html/HTMLHRElement.cpp: Ditto.
  • html/HTMLInputElement.cpp: Ditto.
  • html/SearchInputType.cpp: Ditto.
  • loader/DocumentLoader.cpp: Add missing DocumentInlines.h header inclusion.
  • platform/audio/glib/MediaSessionManagerGLib.cpp: Add missing MediaSessionGLib.h header

inclusion.

  • platform/gamepad/GamepadConstants.h: Add missing WTF:: namespace prefix to uses of

WTF::String.

  • platform/mediastream/AudioMediaStreamTrackRenderer.cpp: Add missing inclusion of

LibWebRTCAudioModule.h header, guarded by USE(LIBWEBRTC).

  • rendering/CSSFilter.cpp: Add missing inclusion of headers FilterOperations.h,

GraphicsContext.h, LengthFunctions.h, and RenderElement.h

  • rendering/svg/SVGResourcesCache.cpp: Add missing inclusion of ElementInlines.h header.

Source/WebCore/PAL:

  • pal/graphics/WebGPU/WebGPUColorWrite.h: Add missing wtf/RefCounted.h header.
  • pal/graphics/WebGPU/WebGPUSupportedLimits.h: Add missing wtf/Ref.h header.
  • pal/graphics/WebGPU/WebGPUValidationError.h: Add missing wtf/text/WTFString.h header.
1:24 PM Changeset in webkit [285653] by mark.lam@apple.com
  • 9 edits in trunk/Source

Rename Heap::isCurrentThreadBusy() to Heap::currentThreadIsDoingGCWork().
https://bugs.webkit.org/show_bug.cgi?id=233005
rdar://85307204

Reviewed by Saam Barati.

Source/JavaScriptCore:

This rename clarifies what the "busy" part is about. Also remove some unused code:
Heap::isValidAllocation(), isValidThreadState(), and isValidSharedInstanceThreadState().

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::jettison):

  • heap/Heap.cpp:

(JSC::Heap::currentThreadIsDoingGCWork):
(JSC::Heap::isValidAllocation): Deleted.
(JSC::Heap::isCurrentThreadBusy): Deleted.

  • heap/Heap.h:
  • jsc.cpp:

(jscmain):

  • runtime/VM.h:

(JSC::VM::isCollectorBusyOnCurrentThread):

Source/WebCore:

  • bindings/js/GCController.cpp:

(WebCore::GCController::garbageCollectNow):
(WebCore::GCController::garbageCollectNowIfNotDoneRecently):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::deleteJSCodeAndGC):

1:09 PM Changeset in webkit [285652] by commit-queue@webkit.org
  • 6 edits in trunk

-Warray-bounds, -Wstringop-truncation, -Wstringop-overread warnings in Packed.h
https://bugs.webkit.org/show_bug.cgi?id=226557
<rdar://problem/79103658>

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-11-11
Reviewed by Darin Adler.

.:

Suppress -Wstringop-overread for all of WebKit when building with GCC 11 or newer. This is
an unfortunate way to deal with false positives that we ought to be able to silence in just
a few places, but when warnings do not respect pragmas we have few alternatives, and trying
to remove derived sources from the unified build in order to build them with special flags
is just not worth the effort.

This is part of a larger trend of oversensitive warnings from GCC 11.

  • Source/cmake/WebKitCompilerFlags.cmake:

Source/WebCore:

Since -Wstringop-overread is now suppressed globally, we can include WebSocket.cpp in the
unified build once again.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
1:02 PM Changeset in webkit [285651] by msaboff@apple.com
  • 26 edits
    1 add in trunk

Inline RegExp.test JIT code in DFG and FTL
https://bugs.webkit.org/show_bug.cgi?id=230469

Reviewed by Saam Barati.

JSTests:

New microbenchmark.

  • microbenchmarks/regexp-test-inlined.js: Added.

Source/JavaScriptCore:

Restructured YarrJIT from inheriting from MacroAssembler to having a MacroAssembler
member. Added a new path to Yarr JIT code to compile inline code by changing how the
code is entered and exited. Added statistic to the normal compilation path to record
the size of the matching code generated, the amount of stack space needed, and if
the code can be inlined. This patch only inlines 8bit code, as this seems to cover
the most common performance sensitive cases. Adding 16 bit, non-Unicode inlining
would be straightforward. The code is structured to take the inlined path for the
case of non-rope string arguments. For other cases, we fall back to calling out
to C++ paths.

Here are the perf results running the newly added regexp-test-inlined micro
benchmark (time in msec):

Baseline With this patch Result

ARM64 137.3849+-3.0740 64.9282+-0.7348 2.12x faster
X86-64 220.2616+-19.2814 105.2034+-6.8722 2.09x faster

As part of this change, found that the strength reduction didn't work properly for the
existing cases for RegExpExec, RegExpTest and related since we added that checks for
overriding the RegExp object. Clobberize for tryGetById was clobber top, but added
an exception for RegExp.lastIndex. This fix allowed many of the strength reductions
cases to start working again, namely the costant folding cases.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGCommonData.h:
  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNode.cpp:

(JSC::DFG::Node::convertToRegExpTestInline):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasHeapPrediction):
(JSC::DFG::Node::hasCellOperand):
(JSC::DFG::Node::hasCellOperand2):
(JSC::DFG::Node::cellOperand2):

  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

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

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStrengthReductionPhase.cpp:

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

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

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

  • runtime/OptionsList.h:
  • runtime/RegExp.h:
  • runtime/StackAlignment.h:

(JSC::argumentCountForStackSize):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::jitCompile):
(JSC::Yarr::jitCompileInlinedTest):

  • yarr/YarrJIT.h:

(JSC::Yarr::YarrBoyerMoyerData::saveMaps):
(JSC::Yarr::YarrBoyerMoyerData::clearMaps):
(JSC::Yarr::YarrBoyerMoyerData::tryReuseBoyerMooreBitmap const):
(JSC::Yarr::YarrCodeBlock::InlineStats::InlineStats):
(JSC::Yarr::YarrCodeBlock::InlineStats::set):
(JSC::Yarr::YarrCodeBlock::InlineStats::clear):
(JSC::Yarr::YarrCodeBlock::InlineStats::codeSize const):
(JSC::Yarr::YarrCodeBlock::InlineStats::stackSize const):
(JSC::Yarr::YarrCodeBlock::InlineStats::canInline const):
(JSC::Yarr::YarrCodeBlock::InlineStats::needsTemp2 const):
(JSC::Yarr::YarrCodeBlock::set8BitCode):
(JSC::Yarr::YarrCodeBlock::set16BitCode):
(JSC::Yarr::YarrCodeBlock::set8BitCodeMatchOnly):
(JSC::Yarr::YarrCodeBlock::set16BitCodeMatchOnly):
(JSC::Yarr::YarrCodeBlock::set8BitInlineStats):
(JSC::Yarr::YarrCodeBlock::set16BitInlineStats):
(JSC::Yarr::YarrCodeBlock::get8BitInlineStats):
(JSC::Yarr::YarrCodeBlock::get16BitInlineStats):
(JSC::Yarr::YarrCodeBlock::clear):
(JSC::Yarr::YarrCodeBlock::tryReuseBoyerMooreBitmap const): Deleted.

  • yarr/YarrJITRegisters.h: Added.

(JSC::Yarr::YarrJITRegisters::YarrJITRegisters):

Source/WTF:

Added a new enablement: ENABLE_YARR_JIT_ALL_PARENS_EXPRESSIONS.

  • wtf/PlatformEnable.h:
1:00 PM Changeset in webkit [285650] by Kocsen Chung
  • 1 copy in tags/Safari-612.3.5.10.1

Tag Safari-612.3.5.10.1.

12:58 PM Changeset in webkit [285649] by Kocsen Chung
  • 8 edits in branches/safari-612.3.5.10-branch/Source

Versioning.

WebKit-7612.3.5.10.1

12:40 PM Changeset in webkit [285648] by Ben Nham
  • 17 edits in trunk/Source

Log memory usage metadata when WebContent crosses critical or warning level memory thresholds
https://bugs.webkit.org/show_bug.cgi?id=232976

Reviewed by Darin Adler.

Source/WebCore:

WebCore::logMemoryStatistics was changed to:

  • Emit VM tag names as public strings to the log. There isn't anything privacy sensitive about our 256 fixed VM tags, and emitting them to the logs as as private string (as we were doing before) made those log lines useless.
  • Use WebCore::memoryUsageStatistics to gather memory metadata, since other WebCore callsites were already using that and it reduces code duplication.
  • Only log JS object type counts on internal OS builds. Previously we also logged those counts on public OS builds, but that was useless since all the class names were redacted in the log.
  • page/MemoryRelease.cpp:

(WebCore::logMemoryStatistics):
(WebCore::logMemoryStatisticsReasonDescription):
(WebCore::pageCount): Deleted.
(WebCore::logMemoryStatisticsAtTimeOfDeath): Deleted.

  • page/MemoryRelease.h:
  • page/PerformanceLogging.cpp:

(WebCore::PerformanceLogging::memoryUsageStatistics):
(WebCore::PerformanceLogging::didReachPointOfInterest):

  • page/PerformanceLogging.h:
  • page/cocoa/PerformanceLoggingCocoa.mm:

(WebCore::PerformanceLogging::getPlatformMemoryUsageStatistics):

Source/WebKit:

Added callbacks to log memory usage metadata the first time a process hits these milestones:

  • exceeded inactive memory limit while active (on Mac)
  • exceeded warning process limit threshold (on other non-Mac Apple platforms)
  • exceeded critical process limit threshold (on other non-Mac Apple platforms)

The reason for this is we receive a large number of out of memory reports with very little
info in the logs. We want to log more metadata about memory usage (similar to what we do on
Mac in WebCore::logMemoryStatisticsAtTimeOfDeath) to help us debug those reports.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

  • WebProcess/WebProcess.h:

Source/WTF:

Fixed several issues with memory usage tracking:

  • pagesPerVMTag now properly accounts for swapped-out pages in its footprint calculation, as footprint(1) already does.
  • displayNamePerVMTag now includes all of the most common VM tags associated with WebKit.
  • MemoryPressureHandler now knows the specific type of pressure event that occurred. This allows it to differentiate between the entire system being at a warning pressure level vs. just this process hitting its warning memory level limit.
  • wtf/MemoryPressureHandler.cpp:

(WTF::MemoryPressureHandler::setMemoryPressureStatus):
(WTF::MemoryPressureHandler::memoryPressureStatusChanged):
(WTF::MemoryPressureHandler::setUnderMemoryPressure): Deleted.

  • wtf/MemoryPressureHandler.h:

(WTF::MemoryPressureHandler::setMemoryPressureStatusChangedCallback):
(WTF::MemoryPressureHandler::isUnderMemoryPressure const):

  • wtf/ResourceUsage.h:
  • wtf/cocoa/MemoryPressureHandlerCocoa.mm:

(WTF::MemoryPressureHandler::install):

  • wtf/cocoa/ResourceUsageCocoa.cpp:

(WTF::displayNameForVMTag):
(WTF::pagesPerVMTag):

  • wtf/unix/MemoryPressureHandlerUnix.cpp:

(WTF::MemoryPressureHandler::triggerMemoryPressureEvent):

  • wtf/win/MemoryPressureHandlerWin.cpp:

(WTF::MemoryPressureHandler::windowsMeasurementTimerFired):

12:39 PM Changeset in webkit [285647] by Kocsen Chung
  • 1 copy in branches/safari-612.3.5.10-branch

New branch.

12:28 PM Changeset in webkit [285646] by jer.noble@apple.com
  • 4 edits in trunk/Source

[iOS] Adopt -[AVAudioSession setAuditTokensForProcessAssertion:]
https://bugs.webkit.org/show_bug.cgi?id=232909
<rdar://68184444>

Reviewed by Chris Dumez.

Source/WebCore:

Wrap the implementation of setPresentingProcess() in a HAVE guard.

  • platform/audio/ios/AudioSessionIOS.mm:

(WebCore::AudioSessionIOS::setPresentingProcesses):

Source/WTF:

  • wtf/PlatformHave.h:
12:14 PM Changeset in webkit [285645] by commit-queue@webkit.org
  • 10 edits in trunk

Add support in WebCore for web app manifest icons
https://bugs.webkit.org/show_bug.cgi?id=231339
Source/WebCore:

rdar://84311306

Patch by Rachel Ginsberg <rginsberg@apple.com> on 2021-11-11
Reviewed by Brent Fulgham.

Tests are added to OpenSource/Tools/TestWebKitAPI/Tests/WebCore/ApplicationManifestParser.cpp

  • Modules/applicationmanifest/ApplicationManifest.h:

A new enum for the icon purpose (Icon::Purpose) was added to the ApplicationManifest::Icon struct.
A new Icon struct containing variable for the src, sizes,
type, and Icon::Purpose attributes for app manifest icons was added to the ApplicationManifest
struct. A vector of Icon's is added as a variable for
the ApplicationManifest struct.
(WebCore::ApplicationManifest::encode const):
Added icons to encode function
(WebCore::ApplicationManifest::decode):
Added icons to decode function
(WebCore::ApplicationManifest::Icon::encode const):
Create encode function for ApplicationManifest::Icon
(WebCore::ApplicationManifest::Icon::decode):
Create decode function for ApplicationManifest::Icon

  • Modules/applicationmanifest/ApplicationManifestParser.cpp:

(WebCore::ApplicationManifestParser::parseManifest):
Added call to parseIcons
(WebCore::ApplicationManifestParser::parseIcons):
parseIcons iterates through the list of icons, performs checks for attribute,
and then, if valid, adds the attribute to an ApplicationManifestIcon struct
that is appended to a new Vector of ApplicationManifestIcons.

  • Modules/applicationmanifest/ApplicationManifestParser.h:

Declare functions for ApplicationManifestParser

Source/WebKit:

rdar://84311306

Patch by Rachel Ginsberg <rginsberg@apple.com> on 2021-11-11
Reviewed by Brent Fulgham.

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

(makeVectorElement):
Used by makeVector in initWithCoder:. Takes a _WKApplicationManifestIcon and returns
a WebCore::ApplicationManifest::Icon.
(-[_WKApplicationManifest initWithCoder:]):
Added icons.
(-[_WKApplicationManifest encodeWithCoder:]):
Added icons.
(-[_WKApplicationManifest icons]):
Should appease build error before full support for icons is built into _WKApplicationManifest

(+[_WKApplicationManifestIcon supportsSecureCoding]):
(-[_WKApplicationManifestIcon initWithCoder:]):
(-[_WKApplicationManifestIcon encodeWithCoder:]):
(-[_WKApplicationManifestIcon dealloc]):

  • UIProcess/API/Cocoa/_WKApplicationManifestInternal.h:

Tools:

Patch by Rachel Ginsberg <rginsberg@apple.com> on 2021-11-11
Reviewed by Brent Fulgham.

  • TestWebKitAPI/Tests/WebCore/ApplicationManifestParser.cpp:

(ApplicationManifestParserTest::parseIconFirstTopLevelProperty):
Function to create JSON for icon attributes. This is
necessary because icons are in a list, whereas all other
attributes in app manifest are not.
(ApplicationManifestParserTest::parseIconFirstTopLevelPropertyForSrc):
Needed to make a slightly different version to add a src URL, since
it is required for a given icon to be added to the vector.

(ApplicationManifestParserTest::testIconsSrc):
(ApplicationManifestParserTest::testIconsType):
(ApplicationManifestParserTest::testIconsSizes):
(ApplicationManifestParserTest::testIconsPurposes):
Functions for each of the icon attributes.

(TEST_F):
Calls the various icon test functions with different input

11:46 AM Changeset in webkit [285644] by commit-queue@webkit.org
  • 8 edits
    3 adds in trunk

REGRESSION (iOS 15, GPU Process): Fails to load texture map
https://bugs.webkit.org/show_bug.cgi?id=231471
<rdar://problem/84328146>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-11-11
Reviewed by Tim Horton.

Source/WebCore:

Clear the CGImage copy from the IOSurface CGContext after the IOSurface has
been drawn to a bitmap CGContext. The CGImage stored in the IOSurface CGContext
contains a malloc buffer of the data. This buffer is counted against GPU
process memory consumption, causing GPU process jetsams.

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::draw):

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:

Source/WebKit:

Use the normal "draw image buffer" call to draw the image buffer
to the shareable bitmap. Before, it was manually re-implementing this
API call via the lower level calls.
The drawImageBuffer call now fixes up the IOSurface -backed source
ImageBuffers to not keep referencing to the CGImage that provided
the data to the draw. Otherwise GPU process jetsams as the CGImage
inside IOSurface is counted against GPU process memory limit.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::getShareableBitmapForImageBufferWithQualifiedIdentifier):

Tools:

Add a test that tries to assert that GraphicsContext::drawImageBuffer() does not increase
memory footprint of the process. However, leave the test disabled as currently
it seems that the WTF::memoryFootprint() measurement does not see all the
memory releases the CG does.

  • TestWebKitAPI/Tests/WebCore/ImageBufferTests.cpp:

(TestWebKitAPI::memoryFootprintChangedBy):
(TestWebKitAPI::imageBufferPixelIs):
(TestWebKitAPI::TEST):

LayoutTests:

Add a test that sometimes jetsams on device.
Jetsam is not deterministic as it is only
triggerd during memory pressure.
macOS does not trigger jetsam due to platform
rules.

  • fast/canvas/webgl/gl-teximage-imagebitmap-memory.html: Added.
  • fast/canvas/webgl/resources/green-4000x4000.png: Added.
11:07 AM Changeset in webkit [285643] by jer.noble@apple.com
  • 3 edits in trunk/Tools

Infinite recursion under InjectedBundlePage::exitFullScreenForElement()
https://bugs.webkit.org/show_bug.cgi?id=232948
<rdar://80588375>

Reviewed by Eric Carlson.

When WebCore indicates an error in exiting fullscreen, WebKit will respond by attempting to
close any outstanding fullscreen sessions by calling WebFullScreenManager::close(). If this
occurs in the InjectedBundlePage client during a call into WKBundlePageWillExitFullScreen()
or WKBundlePageWillDidFullScreen(), this call will recurse into
InjectedBundlePage::exitFullScreenForElement(), and cause a stack overflow.

Track the current state of fullscreen on a per-InjectedBundlePage basis, and bail out if
the state has been modified due to recursion.

Add a HashMap to map WKBundlePageRef onto InjectedBundlePages. Use that map to find the
particular InjectedBundlePage being requested to enter fullscreen. Add an enumerated
set of Fullscreen states and a private ivar for tracking that state.

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::InjectedBundlePage):
(WTR::InjectedBundlePage::~InjectedBundlePage):
(WTR::InjectedBundlePage::enterFullScreenForElement):
(WTR::InjectedBundlePage::exitFullScreenForElement):

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
11:06 AM Changeset in webkit [285642] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Reset InlineTextItem width on bidi split
https://bugs.webkit.org/show_bug.cgi?id=233002

Reviewed by Darin Adler.

We remeasure the individual inline items right before line breaking.

  • layout/formattingContexts/inline/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::split):

11:05 AM Changeset in webkit [285641] by Tomoki Imai
  • 2 edits in trunk/Source/WebKit

[RemoteInspector][Socket] Can't find the target since r277787
https://bugs.webkit.org/show_bug.cgi?id=232986

Reviewed by Don Olmstead.

Remote Inspector has the same issue as bug 226908.
RemoteInspectorProtocolHandler needs the same fix as r278748.

  • UIProcess/Inspector/socket/RemoteInspectorProtocolHandler.cpp: Copy WebURLSchemeTask.request().url() to avoid obtaining the temporary object.
10:31 AM Changeset in webkit [285640] by Nikos Mouchtaris
  • 29 edits in trunk/Source

Make scroll granularity an enum class
https://bugs.webkit.org/show_bug.cgi?id=232641

Reviewed by Cameron McCormack.

Source/WebCore:

  • dom/Element.cpp:

(WebCore::Element::scrollByLines):
(WebCore::Element::scrollByPages):

  • editing/EditorCommand.cpp:

(WebCore::executeScrollPageBackward):
(WebCore::executeScrollPageForward):
(WebCore::executeScrollLineUp):
(WebCore::executeScrollLineDown):
(WebCore::executeScrollToBeginningOfDocument):
(WebCore::executeScrollToEndOfDocument):

  • page/EventHandler.cpp:

(WebCore::wheelGranularityToScrollGranularity):
(WebCore::EventHandler::logicalScrollRecursively):
(WebCore::EventHandler::defaultSpaceEventHandler):
(WebCore::EventHandler::scrollDistance):

  • page/FrameView.cpp:

(WebCore::FrameView::adjustScrollStepForFixedContent):

  • platform/KeyboardScrollingAnimator.cpp:

(WebCore::KeyboardScrollingAnimator::scrollDistance const):
(WebCore::KeyboardScrollingAnimator::keyboardScrollForKeyboardEvent const):
(WebCore::KeyboardScrollingAnimator::beginKeyboardScrollGesture):

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::handleWheelEvent):

  • platform/ScrollTypes.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::scroll):

  • platform/Scrollbar.cpp:

(WebCore::Scrollbar::pressedPartScrollGranularity):

  • platform/ios/ScrollAnimatorIOS.mm:

(WebCore::ScrollAnimatorIOS::handleTouchEvent):

  • platform/win/PopupMenuWin.cpp:

(WebCore::PopupMenuWin::wndProc):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::logicalScroll):

Source/WebKit:

  • Scripts/webkit/messages.py:

(headers_for_type):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:inDirection:]):

  • UIProcess/ios/WKKeyboardScrollingAnimator.mm:

(-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
(-[WKKeyboardScrollingAnimator beginWithEvent:]):
(-[WKKeyboardScrollViewAnimator distanceForIncrement:inDirection:]):

  • UIProcess/win/WebPopupMenuProxyWin.cpp:

(WebKit::WebPopupMenuProxyWin::onMouseWheel):

  • UIProcess/win/WebView.cpp:

(WebKit::WebView::onHorizontalScroll):
(WebKit::WebView::onVerticalScroll):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::scrollBy):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::performDefaultBehaviorForKeyEvent):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performNonEditingBehaviorForSelector):

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::performDefaultBehaviorForKeyEvent):

Source/WebKitLegacy/mac:

  • WebView/WebFrameView.mm:

(-[WebFrameView _scrollToBeginningOfDocument]):
(-[WebFrameView _scrollToEndOfDocument]):
(-[WebFrameView _pageVertically:]):
(-[WebFrameView _pageHorizontally:]):
(-[WebFrameView _scrollLineVertically:]):
(-[WebFrameView _scrollLineHorizontally:]):

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::verticalScroll):
(WebView::horizontalScroll):
(WebView::keyDown):

10:29 AM Changeset in webkit [285639] by Alexey Shvayka
  • 44 edits
    9 adds in trunk

JSCallbackData should use lexical global object for errors and lifecycle
https://bugs.webkit.org/show_bug.cgi?id=232387

Reviewed by Geoff Garen.

LayoutTests/imported/w3c:

  • web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-cross-realm-expected.txt: Added.
  • web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-cross-realm-null-browsing-context-expected.txt: Added.
  • web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-cross-realm-null-browsing-context.html: Added.
  • web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html: Added.
  • web-platform-tests/dom/traversal/support/TreeWalker-acceptNode-filter-cross-realm-null-browsing-context-subframe.html: Added.
  • web-platform-tests/dom/traversal/support/TreeWalker-acceptNode-filter-cross-realm-subframe.html: Added.

Source/WebCore:

Currently, JSCallbackData uses incumbent [1] global object pretty much for everything,
which causes a few issues:

1) TypeErrors are constructed in incorrect realm;
2) NodeFilter / XPathNSResolver crash if their incumbent window gets disconnected;
3) other callbacks, originated in detached frame, were not invoked at all.

Since not all handleEvent() callers have ScriptExecutionContext, and to avoid a large
code diff, this patch utilizes callback wrapper's ScriptExecutionContext to fix all
the above-mentioned problems.

To accomodate NodeFilter and XPathNSResolver of detached frames without growing sizeof
of all other other callbacks, m_globalObject member is introduced only for them.

AudioWorklet changes are unobservable as worklets can't acquire a cross-realm method.

[1] https://html.spec.whatwg.org/multipage/webappapis.html#incumbent

Tests: fast/dom/Geolocation/callback-to-deleted-context.html

imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-cross-realm-null-browsing-context.html
imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html

  • Modules/geolocation/PositionErrorCallback.idl:
  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::registerProcessor):
(WebCore::AudioWorkletGlobalScope::createProcessor):

  • Modules/webaudio/AudioWorkletProcessor.cpp:

(WebCore::AudioWorkletProcessor::create):
(WebCore::AudioWorkletProcessor::AudioWorkletProcessor):
(WebCore::AudioWorkletProcessor::process):
(WebCore::AudioWorkletProcessor::setProcessCallback):

  • Modules/webaudio/AudioWorkletProcessor.h:

(WebCore::AudioWorkletProcessor::processCallbackWrapper):

  • bindings/js/JSAudioWorkletProcessorCustom.cpp:

(WebCore::JSAudioWorkletProcessor::visitAdditionalChildren):

  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackData::invokeCallback):

  • bindings/js/JSCallbackData.h:

(WebCore::JSCallbackData::JSCallbackData):
(WebCore::JSCallbackData::~JSCallbackData):
(WebCore::JSCallbackDataStrong::JSCallbackDataStrong):
(WebCore::JSCallbackDataStrong::invokeCallback):
(WebCore::JSCallbackDataWeak::JSCallbackDataWeak):
(WebCore::JSCallbackDataWeak::invokeCallback):
(WebCore::JSCallbackData::globalObject): Deleted.

  • bindings/js/JSDOMConvertCallbacks.h:

(WebCore::Converter<IDLCallbackFunction<T>>::convert):
(WebCore::Converter<IDLCallbackInterface<T>>::convert):

  • bindings/js/JSDOMConvertXPathNSResolver.h:

(WebCore::Converter<IDLInterface<XPathNSResolver>>::convert):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSC_DEFINE_HOST_FUNCTION):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowInstanceFunction_openDatabaseBody):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallbackHeaderContent):
(GenerateCallbackImplementationContent):
(JSValueToNativeDOMConvertNeedsGlobalObject):

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/test/JS/*: Updated.
  • bindings/scripts/test/TestCallbackFunctionSkipCallbackInvokeCheck.idl: Added.
  • bindings/scripts/test/TestCallbackInterface.idl:
  • dom/NodeFilter.idl:
  • workers/WorkerOrWorkletGlobalScope.h:
  • worklets/PaintWorkletGlobalScope.cpp:

(WebCore::PaintWorkletGlobalScope::registerPaint):

  • xml/CustomXPathNSResolver.idl:

LayoutTests:

  • fast/dom/Geolocation/callback-to-deleted-context-expected.txt:
  • fast/dom/Geolocation/callback-to-deleted-context.html:
  • fast/dom/Geolocation/resources/callback-to-deleted-context-inner1.html:
10:27 AM Changeset in webkit [285638] by ntim@apple.com
  • 10 edits in trunk

Drop support for <object usemap> making <object> interactive
https://bugs.webkit.org/show_bug.cgi?id=222642

LayoutTests/imported/w3c:

Reviewed by Antti Koivisto.

As per https://github.com/whatwg/html/pull/6283, <object usemap> should no longer be supported.

IDL support is kept per spec like other obsolete attributes.

  • web-platform-tests/html/semantics/forms/the-label-element/clicking-noninteractive-unlabelable-content-expected.txt:

Source/WebCore:

Reviewed by Antti Koivisto.

As per https://github.com/whatwg/html/pull/6283, <object usemap> should no longer be supported.

IDL support is kept per spec like other obsolete attributes.

  • html/HTMLObjectElement.cpp:

(WebCore::HTMLObjectElement::isURLAttribute const):
(WebCore::HTMLObjectElement::addSubresourceAttributeURLs const):
(WebCore::HTMLObjectElement::isInteractiveContent const): Deleted.

  • html/HTMLObjectElement.h:

Source/WebKit:

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-11-11
Reviewed by Antti Koivisto.

Remove support for usemap attribute in GTK DOM API adding a warning message instead.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.cpp:

(webkit_dom_html_object_element_get_use_map):
(webkit_dom_html_object_element_set_use_map):

LayoutTests:

Reviewed by Antti Koivisto.

As per https://github.com/whatwg/html/pull/6283, <object usemap> should no longer be supported.

IDL support is kept per spec like other obsolete attributes.

  • imported/blink/fast/forms/label/label-contains-other-interactive-content-expected.txt:
  • imported/blink/fast/forms/label/label-contains-other-interactive-content.html:
10:19 AM Changeset in webkit [285637] by weinig@apple.com
  • 41 edits
    13 copies
    4 adds
    1 delete in trunk

Factor platform specific code out of HTMLModelElement
https://bugs.webkit.org/show_bug.cgi?id=232848

Reviewed by Dean Jackson.

Source/WebCore:

Factor out most of the platform / renderer specific details from HTMLModelElement
into a new ModelPlayer/ModelPlayerProvider abstraction. This allows for better
separation of concerns, tighter coupling in the ARKit player implementation by
being entirely in WebKit and the ability to support multiple backends. The suffix
"player" was chosen to roughly align with the existing concept of a MediaPlayer.

  • CMakeLists.txt:
  • Headers.cmake:
  • Sources.txt:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add new files / remove no longer necessary HTMLModelElementCocoa.mm

  • Modules/model-element/HTMLModelElement.h:
  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::~HTMLModelElement):
clearFile() is now handled in the ARKit specific ModelPlayer destructor.

(WebCore::HTMLModelElement::setSourceURL):
For simplicity, we clear the player when the URL changes and we start a
new load. In the future, we should consider keeping the player around and
simply resetting it if that proves to be a performance benefit.
(WebCore::HTMLModelElement::modelDidChange):
Repurpose modelDidChange to now be where we create the player, via the
provider and instantiate the load.

(WebCore::HTMLModelElement::usesPlatformLayer const):
(WebCore::HTMLModelElement::platformLayer const):
Add accessors for the player's layer and a predicate indicating
whether there is one that RenderLayerBacking uses to pick whether
it will use the platform layer or the model-as-contents path. It
would be good to move to just having one in the future.

(WebCore::HTMLModelElement::didFinishLoading):
(WebCore::HTMLModelElement::didFailLoading):
Implement the ModelPlayerClient functions to trigger the render tree update.

(WebCore::sharedModelElementCacheDirectory): Deleted.
(WebCore::HTMLModelElement::setModelElementCacheDirectory): Deleted.
(WebCore::HTMLModelElement::modelElementCacheDirectory): Deleted.
Move to ARKit ModelPlayer implementation

  • Modules/model-element/HTMLModelElementCocoa.mm: Removed.

Move to ARKit ModelPlayer implementation

  • Modules/model-element/ModelPlayer.cpp: Added.
  • Modules/model-element/ModelPlayer.h: Added.

The model player is the main interface for loading and interacting
with models.

  • Modules/model-element/ModelPlayerClient.cpp: Added.
  • Modules/model-element/ModelPlayerClient.h: Added.

The model player client allows the model player to communicate back
to its owner things like load success / failure and will likely also
allow trigging things like subresource loads the model player needs
to kick off.

  • Modules/model-element/ModelPlayerProvider.cpp: Added.
  • Modules/model-element/ModelPlayerProvider.h: Added.

The model player provider allows the WebKit layer to provide its
own model players.

  • Modules/model-element/dummy: Added.
  • Modules/model-element/dummy/DummyModelPlayer.cpp: Added.
  • Modules/model-element/dummy/DummyModelPlayer.h: Added.
  • Modules/model-element/dummy/DummyModelPlayerProvider.cpp: Added.
  • Modules/model-element/dummy/DummyModelPlayerProvider.h: Added.

The dummy player and provider are used for platforms / configurations
where model is not supported.

  • loader/EmptyClients.h:
  • loader/EmptyClients.cpp:

(WebCore::pageConfigurationWithEmptyClients):
Use the DummyModelPlayerProvider for the empty client.

  • page/ChromeClient.h:

(WebCore::ChromeClient::modelElementDidCreatePreview const): Deleted.
This is is no longer needed now that the ARKit implementation is in WebKit.

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

Add a model player provider to the list of providers the page vends.

  • platform/graphics/Model.cpp:
  • platform/graphics/Model.h:

Remove #if ENABLE(MODEL_ELEMENT) for parts that aren't actually the
element itself.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateConfiguration):
Remove platform specific code and utilize the new platformLayer accessor
and predicate on HTMLModelElement.

Source/WebKit:

Move implementation details of the macOS ARKit <model> implementation
into an ARKit model player implementation.

  • CMakeLists.txt:
  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Add new files.

  • UIProcess/Cocoa/ModelElementControllerCocoa.mm:

(WebKit::ModelElementController::modelElementDidCreatePreview):

  • UIProcess/ModelElementController.h:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Make modelElementDidCreatePreview() an async callback rather than
using a ElementContext to reconnect on the way back.

  • WebProcess/Model: Added.
  • WebProcess/Model/WebModelPlayerProvider.cpp: Added.
  • WebProcess/Model/WebModelPlayerProvider.h: Added.

Add ModelPlayerProvider implementation for WebKit.

  • WebProcess/Model/mac: Added.
  • WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.h: Added.
  • WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.mm: Added.

Move code from HTMLModelElementCocoa here, and implement the ModelPlayer
interface using it. Rather than using the ChromeClient, we can now directly
use an async IPC message to set up the link.

  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:

(WebKit::NotificationPermissionRequestManager::startRequest):
Fix build issue caused by adding new files.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setWebsiteDataStoreParameters):
Update call to setModelElementCacheDirectory to be on the ARKitInlinePreviewModelPlayer.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::modelElementDidCreatePreview const): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Remove no longer needed modelElementDidCreatePreview client function.

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
Use DummyModelPlayerProvider for the DummyModelPlayerProvider since the feature
is not supported for WebKitLegacy at the moment.

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::initWithFrame):
Use DummyModelPlayerProvider for the DummyModelPlayerProvider since the feature
is not supported for WebKitLegacy at the moment.

LayoutTests:

  • platform/mac-wk1/TestExpectations:

Skip model tests for WebKitLegacy as it is not supported there currently.

9:31 AM Changeset in webkit [285636] by mark.lam@apple.com
  • 59 edits
    1 add in trunk/Source

Move m_doesGC from Heap to VM.
https://bugs.webkit.org/show_bug.cgi?id=232975
rdar://85277492

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

m_doesGC is only needed for ENABLE(DFG_DOES_GC_VALIDATION), and is used for checking
if the VM thread's execution is in a state that can allow GC to run. Hence, it is
more related to VM thread execution as opposed to the state of the Heap. This patch
moves m_doesGC from Heap to VM to get it out of the way of upcoming Global GC work.

Also change DeferGC, DeferGCForAWhile, and GCDeferralContext to take a VM& instead
of a Heap&. DeferGC and GCDeferralContext need to access VM& in order to call
VM::verifyCanGC(). DeferGCForAWhile does not need VM&, but we're changing it to be
consistent with DeferGC. There should be no perf impact for this change.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::jettison):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::decodeCachedCodeBlocks):

  • bytecode/Watchpoint.cpp:

(JSC::WatchpointSet::fireAllWatchpoints):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::generate):

  • dfg/DFGDoesGCCheck.cpp:
  • dfg/DFGOSRExit.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):
(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileLoopHint):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLLowerDFGToB3.cpp:

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

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):
(JSC::FTL::JSC_DEFINE_JIT_OPERATION):

  • ftl/FTLOperations.cpp:

(JSC::FTL::JSC_DEFINE_JIT_OPERATION):

  • heap/CompleteSubspace.cpp:

(JSC::CompleteSubspace::tryAllocateSlow):
(JSC::CompleteSubspace::reallocatePreciseAllocationNonVirtual):

  • heap/CompleteSubspaceInlines.h:

(JSC::CompleteSubspace::allocateNonVirtual):

  • heap/DeferGC.h:

(JSC::DeferGC::DeferGC): Deleted.
(JSC::DeferGC::~DeferGC): Deleted.
(JSC::DeferGCForAWhile::DeferGCForAWhile): Deleted.
(JSC::DeferGCForAWhile::~DeferGCForAWhile): Deleted.

  • heap/DeferGCInlines.h: Added.

(JSC::DeferGC::DeferGC):
(JSC::DeferGC::~DeferGC):
(JSC::DeferGCForAWhile::DeferGCForAWhile):
(JSC::DeferGCForAWhile::~DeferGCForAWhile):

  • heap/GCDeferralContext.h:
  • heap/GCDeferralContextInlines.h:

(JSC::GCDeferralContext::GCDeferralContext):
(JSC::GCDeferralContext::~GCDeferralContext):

  • heap/Heap.cpp:

(JSC::Heap::collectNow):
(JSC::Heap::collectAsync):
(JSC::Heap::collectSync):
(JSC::Heap::stopIfNecessarySlow):
(JSC::Heap::collectIfNecessaryOrDefer):

  • heap/Heap.h:

(JSC::Heap::addressOfDoesGC): Deleted.
(JSC::Heap::setDoesGCExpectation): Deleted.
(JSC::Heap::verifyCanGC): Deleted.

  • heap/HeapInlines.h:

(JSC::Heap::acquireAccess):
(JSC::Heap::stopIfNecessary):

  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::json):

  • heap/IncrementalSweeper.cpp:

(JSC::IncrementalSweeper::sweepNextBlock):

  • heap/LocalAllocatorInlines.h:

(JSC::LocalAllocator::allocate):

  • heap/PreciseAllocation.cpp:

(JSC::PreciseAllocation::tryCreate):
(JSC::PreciseAllocation::createForLowerTier):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::queryHolders):

  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::InspectorHeapAgent::getPreview):
(Inspector::InspectorHeapAgent::getRemoteObject):

  • inspector/agents/InspectorScriptProfilerAgent.cpp:

(Inspector::InspectorScriptProfilerAgent::trackingComplete):

  • interpreter/ShadowChickenInlines.h:

(JSC::ShadowChicken::iterate):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • jit/JITWorklist.cpp:

(JSC::JITWorklist::completeAllReadyPlansForVM):
(JSC::JITWorklist::waitUntilAllPlansForVMAreReady):
(JSC::JITWorklist::completeAllPlansForVM):
(JSC::JITWorklist::removeAllReadyPlansForVM):

  • jit/Repatch.cpp:

(JSC::fireWatchpointsAndClearStubIfNeeded):
(JSC::tryCacheGetBy):
(JSC::tryCacheArrayGetByVal):
(JSC::tryCachePutBy):
(JSC::tryCacheArrayPutByVal):
(JSC::tryCacheDeleteBy):
(JSC::tryCacheInBy):
(JSC::tryCacheHasPrivateBrand):
(JSC::tryCacheCheckPrivateBrand):
(JSC::tryCacheSetPrivateBrand):
(JSC::tryCacheInstanceOf):
(JSC::linkPolymorphicCall):

  • jsc.cpp:

(JSC_DEFINE_HOST_FUNCTION):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/CachedTypes.cpp:

(JSC::decodeCodeBlockImpl):

  • runtime/ConcurrentJSLock.h:

(JSC::GCSafeConcurrentJSLocker::GCSafeConcurrentJSLocker):

  • runtime/ExceptionFuzz.cpp:

(JSC::doExceptionFuzzing):

  • runtime/JSArray.cpp:

(JSC::JSArray::unshiftCountWithArrayStorage):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::slowDownAndWasteMemory):

  • runtime/JSCellInlines.h:
  • runtime/JSGenericTypedArrayViewInlines.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::haveABadTime):

  • runtime/JSObject.cpp:

(JSC::JSObject::enterDictionaryIndexingModeWhenArrayStorageAlreadyExists):
(JSC::JSObject::createInitialUndecided):
(JSC::JSObject::createInitialInt32):
(JSC::JSObject::createInitialDouble):
(JSC::JSObject::createInitialContiguous):
(JSC::JSObject::createArrayStorage):
(JSC::JSObject::convertUndecidedToArrayStorage):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToArrayStorage):
(JSC::JSObject::convertContiguousToArrayStorage):
(JSC::JSObject::increaseVectorLength):
(JSC::JSObject::ensureLengthSlow):
(JSC::JSObject::reallocateAndShrinkButterfly):
(JSC::createCustomGetterFunction):
(JSC::createCustomSetterFunction):

  • runtime/JSString.h:

(JSC::jsSingleCharacterString):
(JSC::JSString::toAtomString const):
(JSC::JSString::toExistingAtomString const):
(JSC::JSString::value const):
(JSC::JSString::tryGetValue const):
(JSC::JSRopeString::unsafeView const):
(JSC::JSRopeString::viewWithUnderlyingString const):
(JSC::JSString::unsafeView const):

  • runtime/JSSymbolTableObject.h:

(JSC::symbolTablePut):

  • runtime/RegExpKey.h:
  • runtime/RegExpMatchesArray.cpp:

(JSC::createEmptyRegExpMatchesArray):

  • runtime/RegExpMatchesArray.h:

(JSC::createRegExpMatchesArray):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::stackTracesAsJSON):
(JSC::SamplingProfiler::reportTopFunctions):
(JSC::SamplingProfiler::reportTopBytecodes):

  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::prepareForExecutionImpl):

  • runtime/Structure.cpp:

(JSC::Structure::materializePropertyTable):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::removeNewPropertyTransition):
(JSC::Structure::changePrototypeTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::toDictionaryTransition):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::Structure::flattenDictionaryStructure):

  • runtime/StructureInlines.h:

(JSC::Structure::add):
(JSC::Structure::remove):
(JSC::Structure::attributeChange):

  • runtime/VM.h:

(JSC::VM::addressOfDoesGC):
(JSC::VM::setDoesGCExpectation):
(JSC::VM::verifyCanGC):

Source/WebCore:

  • bindings/js/GCController.cpp:

(WebCore::GCController::dumpHeap):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::createCrossOriginFunction):
(WebCore::JSDOMGlobalObject::createCrossOriginGetterSetter):

9:22 AM Changeset in webkit [285635] by dino@apple.com
  • 9 edits
    2 moves in trunk/Source

WKSystemPreviewView should be called WKUSDPreviewView
https://bugs.webkit.org/show_bug.cgi?id=232961
<rdar://problem/85265415>

Reviewed by Sam Weinig.

Source/WebCore:

Rename the WebCore APIs that look for "SystemPreview" MIME-types
to be clear they are looking for USD.

  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::isUSDMIMEType):
(WebCore::MIMETypeRegistry::isSystemPreviewMIMEType): Deleted.

  • platform/MIMETypeRegistry.h:
  • platform/cocoa/MIMETypeRegistryCocoa.mm:

(WebCore::MIMETypeRegistry::preferredExtensionForMIMEType):

Source/WebKit:

WKSystemPreviewView is a uninformative name. WKUSDPreviewView is more accurate.

  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:

(-[WKWebViewContentProviderRegistry initWithConfiguration:]):

  • UIProcess/SystemPreviewController.cpp:

(WebKit::SystemPreviewController::canPreview const):

  • UIProcess/ios/WKUSDPreviewView.h: Renamed from Source/WebKit/UIProcess/ios/WKSystemPreviewView.h.
  • UIProcess/ios/WKUSDPreviewView.mm: Renamed from Source/WebKit/UIProcess/ios/WKSystemPreviewView.mm.

(getUTIForSystemPreviewMIMEType):
(-[WKUSDPreviewView web_initWithFrame:webView:mimeType:]):
(-[WKUSDPreviewView web_setContentProviderData:suggestedFilename:]):
(-[WKUSDPreviewView _layoutThumbnailView]):
(-[WKUSDPreviewView thumbnailView:wantsToPresentPreviewController:forItem:]):
(-[WKUSDPreviewView web_contentView]):
(+[WKUSDPreviewView web_requiresCustomSnapshotting]):
(-[WKUSDPreviewView web_setMinimumSize:]):
(-[WKUSDPreviewView web_setOverlaidAccessoryViewsInset:]):
(-[WKUSDPreviewView web_computedContentInsetDidChange]):
(-[WKUSDPreviewView web_setFixedOverlayView:]):
(-[WKUSDPreviewView web_didSameDocumentNavigation:]):
(-[WKUSDPreviewView web_isBackground]):
(-[WKUSDPreviewView web_countStringMatches:options:maxCount:]):
(-[WKUSDPreviewView web_findString:options:maxCount:]):
(-[WKUSDPreviewView web_hideFindUI]):
(-[WKUSDPreviewView provideDataForItem:]):

  • WebKit.xcodeproj/project.pbxproj:
9:18 AM Changeset in webkit [285634] by Chris Dumez
  • 9 edits in trunk

Turn off various preferences when in captive portal mode
https://bugs.webkit.org/show_bug.cgi?id=232958
<rdar://84622396>

Reviewed by Brent Fulgham.

Source/WebKit:

Disable the following settings when in captive portal mode:

  • WebGL
  • WebGL2
  • Gamepads
  • RemotePlayback
  • FileSystemAccess
  • AllowsPictureInPictureMediaPlayback
  • PictureInPictureAPI
  • SpeechRecognition
  • Notifications
  • WebXR
  • WebXRAugmentedRealityModule
  • WebAudio
  • DownloadableBinaryFonts
  • PeerConnection (WebRTC)

Covered by updated API tests.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

  • WebProcess/WebProcess.h:

(WebKit::WebProcess::isCaptivePortalModeEnabled const):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
8:10 AM Changeset in webkit [285633] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS][GPUP] Allow access to power logging service
https://bugs.webkit.org/show_bug.cgi?id=232978
<rdar://problem/85279539>

Reviewed by Brent Fulgham.

Access to this logging service is still required in the GPU process on macOS.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
7:57 AM Changeset in webkit [285632] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

AX: Implement AXCoreObject::value for AXIsolatedObject
https://bugs.webkit.org/show_bug.cgi?id=232983

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-11-11
Reviewed by Chris Fleizach.

This patch implements AXCoreObject::value by moving the implementation
from AccessibilityObject into AXCoreObject (AccessibilityObjectInterface.h),
as the behavior should be the same for both types of objects. We can entirely
share the implementation because all the methods it calls are interface methods.

This patch also changes AXIsolatedObject::headingLevel() to use
unsignedAttributeValue rather than intAttributeValue, as the value
we are setting is an unsigned. Before this change, headingLevel
always returned zero because the property lookup never returned an
int.

Between these two changes, roughly 57 text-only failures are fixed compared to main
with run-webkit-tests --release --accessibility-isolated-tree accessibility/

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::value):
Move implementation to AXCoreObject (AccessibilityObjectInterface.h).

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:

(WebCore::AXCoreObject::value):
Added default implementation from AccessibilityObject.cpp.

  • accessibility/isolatedtree/AXIsolatedObject.h:

Change headingLevel to use unsignedAttributeValue rather than
intAttributeValue.

7:55 AM Changeset in webkit [285631] by graouts@webkit.org
  • 11 edits in trunk

Improve additivity support when animating the transform property
https://bugs.webkit.org/show_bug.cgi?id=232990

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark 91 new PASS results.

  • web-platform-tests/css/css-transforms/animation/composited-transform-expected.txt:
  • web-platform-tests/css/css-transforms/animation/transform-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/transform-perspective-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/transform-rotate-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/transform-skew-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/transform-translate-composition-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:

Source/WebCore:

When blending TransformOperations with the "add" composite operation, we should
simply concatenate the from and to transform operations.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):

7:01 AM Changeset in webkit [285630] by Antti Koivisto
  • 13 edits
    1 add in trunk/Source/WebCore

Introduce SelectorMatchingState and move SelectorFilter there
https://bugs.webkit.org/show_bug.cgi?id=232994

Reviewed by Alan Bujtas.

It will be useful to have an extensible state struct available during style resolution.
Initially it will contain just the existing SelectorFilter.

  • WebCore.xcodeproj/project.pbxproj:
  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::ElementRuleCollector):
(WebCore::Style::ElementRuleCollector::collectMatchingRulesForList):

  • style/ElementRuleCollector.h:
  • style/SelectorMatchingState.h: Added.
  • style/StyleInvalidator.cpp:

(WebCore::Style::Invalidator::invalidateIfNeeded):
(WebCore::Style::Invalidator::invalidateStyleForTree):
(WebCore::Style::Invalidator::invalidateStyleForDescendants):
(WebCore::Style::Invalidator::invalidateStyle):
(WebCore::Style::Invalidator::invalidateStyleWithMatchElement):

  • style/StyleInvalidator.h:
  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::styleForElement):
(WebCore::Style::Resolver::pseudoStyleForElement):

  • style/StyleResolver.h:
  • style/StyleSharingResolver.cpp:

(WebCore::Style::SharingResolver::SharingResolver):
(WebCore::Style::SharingResolver::styleSharingCandidateMatchesRuleSet const):

  • style/StyleSharingResolver.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::Scope::Scope):
(WebCore::Style::TreeResolver::makeResolutionContext):
(WebCore::Style::TreeResolver::makeResolutionContextForPseudoElement):
(WebCore::Style::TreeResolver::pushParent):
(WebCore::Style::TreeResolver::popParent):

  • style/StyleTreeResolver.h:
  • svg/SVGElement.cpp:

(WebCore::SVGElement::resolveCustomStyle):

6:57 AM Changeset in webkit [285629] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Do not set prior context on the line-break iterator when when crossing layout box boundary
https://bugs.webkit.org/show_bug.cgi?id=232979

Reviewed by Antti Koivisto.

This is the case when the bidi boundary may also be a valid soft wrap opportunity. We normally set
a "prior context" before calling into the nextBreakablePosition to eliminate the need for constructing
continuous text content by extracting strings from different layout boxes. However in the bidi boundary case, we know
that the text content belongs to only one layout box.

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::endsWithSoftWrapOpportunity): This will eventually be replaced with the "breaking reason flag" optimization i.e. bidi boundary vs. soft wrap opportunity.

6:55 AM Changeset in webkit [285628] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Add support for non-initial text-alignment values on bidi content
https://bugs.webkit.org/show_bug.cgi?id=232968

Reviewed by Antti Koivisto.

The text-align property "moves" the root inline box as a whole and not the individual runs.
This patch ensures that this offset value is taken into account when computing the horizontal position for the visually ordered runs too.
(Note that this offset value is baked into the logical position of the runs, see LineBox::logicalRectForTextRun.)

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

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

6:55 AM Changeset in webkit [285627] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak] http server is not properly tear down
https://bugs.webkit.org/show_bug.cgi?id=221554

Patch by Philippe Normand <pnormand@igalia.com> on 2021-11-11
Reviewed by Adrian Perez de Castro.

In Linux when the layout tests are manually interrupted it might lead to Apache not being
cleanly stopped. On the next run it would then fail to start, usually failing to setup its
'scoreboard' with SHM. The proposed solution is to look for stale SHM segments, eg. segments
allocated but not attached to any process, and remove them, before starting the Apache
process.

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

(LayoutTestApacheHttpd._remove_stale_shm_segments):
(LayoutTestApacheHttpd._spawn_process):

6:54 AM Changeset in webkit [285626] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Add support for missing inline item types in buildBidiParagraph
https://bugs.webkit.org/show_bug.cgi?id=232964

Reviewed by Antti Koivisto.

  • layout/formattingContexts/inline/InlineItemsBuilder.cpp:

(WebCore::Layout::buildBidiParagraph):

6:32 AM Changeset in webkit [285625] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK][WPE] webkit-flatpak-run-nightly infinite self-call loop
https://bugs.webkit.org/show_bug.cgi?id=230400

Patch by Philippe Normand <pnormand@igalia.com> on 2021-11-11
Reviewed by Adrian Perez de Castro.

Port the changes landed in r272712 for the webkit-bwrap script, which we can't directly use
within webkit-flatpak-run-nightly because it's nice to keep it as standalone as possible.

  • Scripts/webkit-flatpak-run-nightly:
4:24 AM Changeset in webkit [285624] by Antti Koivisto
  • 21 edits in trunk

[CSS Cascade Layers] Support 'revert-layer' value
https://bugs.webkit.org/show_bug.cgi?id=232236
<rdar://problem/84879369>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-cascade/revert-layer-008-expected.txt:
  • web-platform-tests/css/css-will-change/parsing/will-change-invalid:

Source/WebCore:

'revert-layer' keyword rolls back the value computed by the cascade to the one coming from the layer below.

https://www.w3.org/TR/css-cascade-5/#revert-layer

  • css/CSSPrimitiveValue.h:
  • css/CSSValue.cpp:

(WebCore::CSSValue::isRevertLayerValue const):

  • css/CSSValue.h:
  • css/CSSValueKeywords.in:

Add a 'revert-layer' keyword.

  • css/parser/CSSParserIdioms.h:

(WebCore::isCSSWideKeyword):

Make the keyword CSS-wide.

(WebCore::isValidCustomIdentifier):

  • style/CascadeLevel.h:

(WebCore::Style::operator--):

Add decrement operator.

(WebCore::Style::allCascadeLevels): Deleted.

  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::addElementStyleProperties):
(WebCore::Style::ElementRuleCollector::transferMatchedRules):

Pass the casdade layer priority so it is available when resolving the cascade.

(WebCore::Style::ElementRuleCollector::addElementInlineStyleProperties):

Add a bit indicating if the properties came from a style attribute. This is needed for correct resolution of !important with cascade layers.

  • style/ElementRuleCollector.h:
  • style/PropertyCascade.cpp:

(WebCore::Style::PropertyCascade::PropertyCascade):

Specify cascade levels in terms of the maximum level instead of an OptionSet of levels. This makes things simpler.
Make it a member.
Provide maximum cascade layer priority when constructing rollback cascade.

(WebCore::Style::PropertyCascade::buildCascade):
(WebCore::Style::PropertyCascade::setPropertyInternal):
(WebCore::Style::PropertyCascade::addMatch):

Ignore properties with cascade level higher than the maximum.

(WebCore::Style::PropertyCascade::addImportantMatches):

Take cascade layers into accouny when sorting important matches.

(WebCore::Style::PropertyCascade::propertyCascadeForRollback const): Deleted.

Move rollback cascades to Builder.

  • style/PropertyCascade.h:

(WebCore::Style::PropertyCascade::maximumCascadeLevel const):
(WebCore::Style::PropertyCascade::maximumCascadeLayerPriority const):

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::Builder):

Specify cascade levels in terms of the maximum level instead of an OptionSet of levels.

(WebCore::Style::Builder::applyCascadeProperty):
(WebCore::Style::Builder::applyProperty):

Construct rollback cascade for 'revert-layer' case too. This is similar to 'revert'.

(WebCore::Style::Builder::ensureRollbackCascadeForRevert):
(WebCore::Style::Builder::ensureRollbackCascadeForRevertLayer):

Make the rollback cascades and store them into a HashMap.

(WebCore::Style::Builder::makeRollbackCascadeKey):

  • style/StyleBuilder.h:
  • style/StyleBuilderState.h:
  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::styleForKeyframe):
(WebCore::Style::Resolver::styleForPage):
(WebCore::Style::Resolver::applyMatchedProperties):

Adopt to the new interface.

LayoutTests:

1:42 AM Changeset in webkit [285623] by svillar@igalia.com
  • 9 edits
    1 add in trunk

[css-flexbox] Improve & simplify the flex-basis computation
https://bugs.webkit.org/show_bug.cgi?id=230755

Reviewed by Alan Bujtas.

PerformanceTests:

New test case to catch performance regressions with lots of nested (specially column) flexboxes.

  • Layout/nested-flexbox.html: Added.

Source/WebCore:

The flex basis computation has some special cases that require us to size the flex items "as if" they had the
length specified by flex-basis property as their main size (either width or height depending on the flex direction).
In order to do that a mechanism similar to the overriding sizes was implemented, but in this case, we're doing
an overriding of the style. That overriding style is used during both layout and preferred width computations if
present.

A new RAII class called ScopedFlexBasisAsChildMainSize sets the overriding before computing the flex base size and
clears it just after the calculations. This is done in the computeFlexBaseSizeForChild() method that was renamed
from computeInnerFlexBaseSizeForChild() as it fits better with the terminology used in the specs.

Flex basis computation is already covered by the WPT test suite, there is no need for extra tests. This patch
fixes the only flex-basis-* test case that was not passing apart from another one.

The original patch was causing severe regressions in sites doing heavy usage of nested flexboxes like twitter.com or
gmail.com because it was removing some caching that is needed in order not to do way too many layouts. The new one does
not have this issue. A new perf test was added in order to detect those eventual regressions. In my laptop the test
achieves 13.5k runs/s while with the original patch is only capable of doing 6k runs/s.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::computePreferredLogicalWidths): Use the overriding style if present.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::overridingLogicalHeightLength const): Added.
(WebCore::RenderBox::setOverridingLogicalHeightLength): Added.
(WebCore::RenderBox::hasOverridingLogicalHeightLength const): Added.
(WebCore::RenderBox::clearOverridingLogicalHeightLength): Added.
(WebCore::RenderBox::overridingLogicalWidthLength const): Added.
(WebCore::RenderBox::setOverridingLogicalWidthLength): Added.
(WebCore::RenderBox::hasOverridingLogicalWidthLength const): Added.
(WebCore::RenderBox::clearOverridingLogicalWidthLength): Added.
(WebCore::RenderBox::computeLogicalWidthInFragment const): Use the overriding style if present.
(WebCore::RenderBox::computeLogicalHeight const): Use the overriding style if present.

  • rendering/RenderBox.h:
  • rendering/RenderFlexibleBox.cpp:

(WebCore::ScopedFlexBasisAsChildMainSize::ScopedFlexBasisAsChildMainSize): Sets the overriding style.
(WebCore::ScopedFlexBasisAsChildMainSize::~ScopedFlexBasisAsChildMainSize): Clears the overriding style.
(WebCore::RenderFlexibleBox::computeFlexBaseSizeForChild): Renamed from computeInnerFlexBaseSizeForChild().
(WebCore::RenderFlexibleBox::maybeCacheChildMainIntrinsicSize): Refactored from code from
computeInnerFlexBaseSizeForChild().
(WebCore::RenderFlexibleBox::constructFlexItem): Moved code to maybeCacheChildMainIntrinsicSize().
(WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild): Deleted.

  • rendering/RenderFlexibleBox.h:

LayoutTests:

12:21 AM Changeset in webkit [285622] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

Use narrower types for style scope ordinal and cascade layer priority
https://bugs.webkit.org/show_bug.cgi?id=232797

Reviewed by Alan Bujtas.

This shrinks critical ElementRuleCollector data structures like MatchedRule.

64k layers ought to be enough for anybody (and 256 scopes).

  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::matchSlottedPseudoElementRules):
(WebCore::Style::ElementRuleCollector::matchPartPseudoElementRulesForScope):

Check the scope depth limits.

  • style/ElementRuleCollector.h:
  • style/RuleSet.h:

(WebCore::Style::RuleSet::cascadeLayerPriorityForIdentifier const):
(WebCore::Style::RuleSet::cascadeLayerPriorityFor const):

Add a type alias and make it uint16_t.

  • style/RuleSetBuilder.cpp:

(WebCore::Style::RuleSetBuilder::updateCascadeLayerPriorities):

  • style/StyleScopeOrdinal.h:

(WebCore::Style::operator++):
(WebCore::Style::operator--):

Use int8_t. No realistic case requires more than a handful.

12:08 AM Changeset in webkit [285621] by graouts@webkit.org
  • 16 edits in trunk

Default computed value for "content" should be "none" for ::before and ::after
https://bugs.webkit.org/show_bug.cgi?id=232932

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-content/computed-value-expected.txt:
  • web-platform-tests/css/css-pseudo/marker-computed-content-expected.txt:
  • web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt:

Source/WebCore:

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::contentToCSSValue):

LayoutTests:

  • platform/glib/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/glib/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/glib/svg/css/getComputedStyle-basic-expected.txt:
  • platform/ios/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/ios/svg/css/getComputedStyle-basic-expected.txt:
  • platform/mac/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/mac/svg/css/getComputedStyle-basic-expected.txt:
Note: See TracTimeline for information about the timeline view.