From 21ba0c5d4bf8fba15dddd97cd693bad2358b77fd Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 3 Sep 2021 13:32:17 +0200 Subject: BASELINE: Update Chromium to 92.0.4515.166 Change-Id: I42a050486714e9e54fc271f2a8939223a02ae364 --- chromium/ui/OWNERS | 2 +- .../accelerated_widget_mac.h | 1 - .../accelerated_widget_mac/ca_layer_frame_sink.h | 1 - .../ca_layer_tree_coordinator.h | 6 +- .../ca_layer_tree_unittest_mac.mm | 5 +- .../ca_renderer_layer_tree.h | 87 +- .../ca_renderer_layer_tree.mm | 554 ++--- .../ca_transaction_observer.mm | 4 +- .../ui/accelerated_widget_mac/io_surface_context.h | 2 - chromium/ui/accessibility/BUILD.gn | 4 + chromium/ui/accessibility/PRESUBMIT.py | 3 + .../ui/accessibility/accessibility_features.cc | 27 +- chromium/ui/accessibility/accessibility_features.h | 26 +- .../ui/accessibility/accessibility_switches.cc | 11 - chromium/ui/accessibility/accessibility_switches.h | 4 - chromium/ui/accessibility/ax_action_data.h | 2 +- chromium/ui/accessibility/ax_active_popup.cc | 10 +- chromium/ui/accessibility/ax_active_popup.h | 6 +- .../ui/accessibility/ax_assistant_structure.cc | 69 +- chromium/ui/accessibility/ax_assistant_structure.h | 11 +- chromium/ui/accessibility/ax_enum_util.cc | 28 +- chromium/ui/accessibility/ax_enums.mojom | 243 +-- chromium/ui/accessibility/ax_event_generator.cc | 8 + chromium/ui/accessibility/ax_event_generator.h | 2 + .../accessibility/ax_event_generator_unittest.cc | 5 - chromium/ui/accessibility/ax_hypertext.cc | 14 + chromium/ui/accessibility/ax_hypertext.h | 50 + chromium/ui/accessibility/ax_node.cc | 212 +- chromium/ui/accessibility/ax_node.h | 99 +- chromium/ui/accessibility/ax_node_data.cc | 53 +- chromium/ui/accessibility/ax_node_data.h | 21 +- chromium/ui/accessibility/ax_node_position.cc | 14 + .../ui/accessibility/ax_node_position_perftest.cc | 2 +- .../ui/accessibility/ax_node_position_unittest.cc | 186 +- chromium/ui/accessibility/ax_node_unittest.cc | 2 +- chromium/ui/accessibility/ax_position.h | 62 +- chromium/ui/accessibility/ax_range.h | 7 +- chromium/ui/accessibility/ax_range_unittest.cc | 52 +- chromium/ui/accessibility/ax_relative_bounds.h | 2 +- chromium/ui/accessibility/ax_role_properties.cc | 150 +- chromium/ui/accessibility/ax_role_properties.h | 27 +- chromium/ui/accessibility/ax_table_fuzzer.cc | 2 +- chromium/ui/accessibility/ax_table_info.h | 2 +- .../ui/accessibility/ax_table_info_unittest.cc | 2 +- chromium/ui/accessibility/ax_text_utils.cc | 2 +- .../ui/accessibility/ax_text_utils_unittest.cc | 17 +- chromium/ui/accessibility/ax_tree.cc | 123 +- chromium/ui/accessibility/ax_tree.h | 14 +- chromium/ui/accessibility/ax_tree_data.cc | 1 - chromium/ui/accessibility/ax_tree_data.h | 2 +- chromium/ui/accessibility/ax_tree_id.cc | 2 +- chromium/ui/accessibility/ax_tree_id.h | 4 +- chromium/ui/accessibility/ax_tree_serializer.h | 57 +- .../accessibility/ax_tree_serializer_unittest.cc | 66 + chromium/ui/accessibility/ax_tree_unittest.cc | 28 +- chromium/ui/accessibility/ax_tree_update.h | 1 - .../extensions/chromevoxclassic/BUILD.gn | 2 + chromium/ui/accessibility/mojom/BUILD.gn | 63 +- .../ui/accessibility/mojom/ax_action_data.mojom | 2 + .../mojom/ax_assistant_structure_mojom_traits.h | 4 +- chromium/ui/accessibility/mojom/ax_tree_id.mojom | 2 + chromium/ui/accessibility/platform/BUILD.gn | 3 + .../platform/atk_util_auralinux_unittest.cc | 12 +- .../accessibility/platform/ax_android_constants.h | 1 - .../platform/ax_platform_atk_hyperlink.cc | 4 +- .../ui/accessibility/platform/ax_platform_node.cc | 13 +- .../ui/accessibility/platform/ax_platform_node.h | 19 + .../platform/ax_platform_node_auralinux.cc | 149 +- .../platform/ax_platform_node_auralinux.h | 26 +- .../ax_platform_node_auralinux_unittest.cc | 236 ++- .../platform/ax_platform_node_base.cc | 225 +- .../accessibility/platform/ax_platform_node_base.h | 84 +- .../platform/ax_platform_node_base_unittest.cc | 26 +- .../platform/ax_platform_node_delegate.h | 55 +- .../platform/ax_platform_node_delegate_base.cc | 91 +- .../platform/ax_platform_node_delegate_base.h | 43 +- .../accessibility/platform/ax_platform_node_mac.mm | 37 +- ...platform_node_textchildprovider_win_unittest.cc | 1 + .../platform/ax_platform_node_textprovider_win.h | 1 - .../ax_platform_node_textrangeprovider_win.cc | 52 +- .../ax_platform_node_textrangeprovider_win.h | 2 +- ...platform_node_textrangeprovider_win_unittest.cc | 356 +++- .../platform/ax_platform_node_unittest.cc | 10 +- .../platform/ax_platform_node_unittest.h | 2 +- .../accessibility/platform/ax_platform_node_win.cc | 437 ++-- .../accessibility/platform/ax_platform_node_win.h | 64 +- .../platform/ax_platform_node_win_unittest.cc | 410 +++- .../platform/ax_platform_node_win_unittest.h | 3 +- .../accessibility/platform/compute_attributes.cc | 30 +- .../ui/accessibility/platform/compute_attributes.h | 4 +- .../ui/accessibility/platform/inspect/ax_inspect.h | 4 +- .../platform/inspect/ax_inspect_scenario.cc | 23 +- .../inspect/ax_inspect_scenario_unittest.cc | 84 + .../platform/inspect/ax_inspect_utils.cc | 98 + .../platform/inspect/ax_inspect_utils.h | 45 + .../platform/inspect/ax_inspect_utils_unittest.cc | 65 + .../platform/inspect/ax_inspect_utils_win.cc | 1 + .../platform/inspect/ax_property_node.cc | 14 +- .../platform/inspect/ax_property_node.h | 12 +- .../platform/inspect/ax_property_node_unittest.cc | 7 +- .../platform/inspect/ax_tree_formatter_base.cc | 30 + .../platform/inspect/ax_tree_formatter_base.h | 3 + .../platform/inspect/ax_tree_indexer.h | 86 + .../accessibility/platform/test_ax_node_wrapper.cc | 74 +- .../accessibility/platform/test_ax_node_wrapper.h | 39 +- chromium/ui/android/BUILD.gn | 1 + chromium/ui/android/DIR_METADATA | 3 - chromium/ui/android/color_helpers.cc | 8 +- chromium/ui/android/color_helpers.h | 8 +- chromium/ui/android/color_helpers_unittest.cc | 4 +- .../ui/android/delegated_frame_host_android.cc | 2 +- chromium/ui/android/dummy_screen_android.h | 6 +- chromium/ui/android/edge_effect.h | 1 - .../junit/src/org/chromium/ui/base/DIR_METADATA | 11 - .../org/chromium/ui/base/SelectFileDialogTest.java | 66 +- .../src/org/chromium/ui/modaldialog/DIR_METADATA | 1 - chromium/ui/android/resources/resource_manager.h | 4 - .../ui/android/resources/resource_manager_impl.h | 2 + chromium/ui/android/view_android.cc | 12 +- chromium/ui/android/view_android.h | 7 +- chromium/ui/aura/BUILD.gn | 1 + chromium/ui/aura/client/aura_constants.cc | 1 + chromium/ui/aura/client/aura_constants.h | 4 + chromium/ui/aura/client/cursor_client.h | 1 - chromium/ui/aura/client/drag_drop_client.h | 13 +- chromium/ui/aura/client/drag_drop_delegate.h | 15 +- chromium/ui/aura/client/screen_position_client.h | 6 +- chromium/ui/aura/client/window_stacking_client.h | 1 - chromium/ui/aura/demo/demo_main.cc | 10 +- chromium/ui/aura/env.cc | 20 +- chromium/ui/aura/env.h | 1 - .../aura/gestures/gesture_recognizer_unittest.cc | 7 +- .../ui/aura/native_window_occlusion_tracker_win.cc | 4 +- .../ui/aura/native_window_occlusion_tracker_win.h | 3 +- chromium/ui/aura/scoped_simple_keyboard_hook.cc | 2 +- chromium/ui/aura/scoped_simple_keyboard_hook.h | 6 +- chromium/ui/aura/window.cc | 257 ++- chromium/ui/aura/window.h | 79 +- chromium/ui/aura/window_event_dispatcher.cc | 2 + .../ui/aura/window_event_dispatcher_unittest.cc | 37 +- chromium/ui/aura/window_observer.h | 1 - chromium/ui/aura/window_occlusion_tracker.cc | 9 +- chromium/ui/aura/window_occlusion_tracker.h | 2 +- .../ui/aura/window_occlusion_tracker_unittest.cc | 3 +- chromium/ui/aura/window_targeter.cc | 1 + chromium/ui/aura/window_targeter_unittest.cc | 3 +- chromium/ui/aura/window_tree_host.cc | 2 +- chromium/ui/aura/window_tree_host.h | 6 +- chromium/ui/aura/window_tree_host_platform.cc | 5 +- chromium/ui/aura/window_tree_host_platform.h | 2 +- chromium/ui/aura/window_unittest.cc | 188 +- chromium/ui/aura_extra/aura_extra_export.h | 6 +- chromium/ui/aura_extra/window_occlusion_win.h | 2 +- chromium/ui/base/BUILD.gn | 49 +- chromium/ui/base/DEPS | 1 - chromium/ui/base/accelerators/OWNERS | 1 + chromium/ui/base/accelerators/accelerator.cc | 29 +- chromium/ui/base/accelerators/accelerator.h | 34 + .../ui/base/accelerators/accelerator_manager.cc | 41 +- .../ui/base/accelerators/accelerator_manager.h | 17 +- .../accelerators/accelerator_manager_unittest.cc | 142 +- chromium/ui/base/accelerators/accelerator_map.h | 191 ++ .../base/accelerators/accelerator_map_unittest.cc | 235 +++ .../ui/base/accelerators/accelerator_unittest.cc | 33 + chromium/ui/base/class_property.h | 4 - chromium/ui/base/clipboard/BUILD.gn | 9 + chromium/ui/base/clipboard/clipboard.cc | 33 +- chromium/ui/base/clipboard/clipboard.h | 7 + chromium/ui/base/clipboard/clipboard_android.cc | 16 +- chromium/ui/base/clipboard/clipboard_android.h | 3 + chromium/ui/base/clipboard/clipboard_constants.cc | 2 + chromium/ui/base/clipboard/clipboard_constants.h | 3 +- chromium/ui/base/clipboard/clipboard_data.cc | 21 +- chromium/ui/base/clipboard/clipboard_data.h | 15 +- .../ui/base/clipboard/clipboard_data_endpoint.cc | 4 +- .../ui/base/clipboard/clipboard_data_unittest.cc | 14 +- chromium/ui/base/clipboard/clipboard_format_type.h | 2 + .../clipboard/clipboard_format_type_android.cc | 7 +- .../base/clipboard/clipboard_format_type_aura.cc | 7 +- .../ui/base/clipboard/clipboard_format_type_mac.mm | 6 + .../ui/base/clipboard/clipboard_format_type_win.cc | 9 +- chromium/ui/base/clipboard/clipboard_mac.h | 3 + chromium/ui/base/clipboard/clipboard_mac.mm | 10 + chromium/ui/base/clipboard/clipboard_metrics.h | 7 +- chromium/ui/base/clipboard/clipboard_monitor.cc | 1 - chromium/ui/base/clipboard/clipboard_non_backed.cc | 17 +- chromium/ui/base/clipboard/clipboard_non_backed.h | 5 + chromium/ui/base/clipboard/clipboard_ozone.cc | 75 +- chromium/ui/base/clipboard/clipboard_ozone.h | 3 + .../ui/base/clipboard/clipboard_test_template.h | 33 +- chromium/ui/base/clipboard/clipboard_win.cc | 95 +- chromium/ui/base/clipboard/clipboard_win.h | 9 +- chromium/ui/base/clipboard/clipboard_x11.cc | 10 + chromium/ui/base/clipboard/clipboard_x11.h | 3 + chromium/ui/base/clipboard/custom_data_helper.h | 2 +- chromium/ui/base/clipboard/file_info_unittest.cc | 4 +- .../ui/base/clipboard/scoped_clipboard_writer.h | 2 +- chromium/ui/base/cocoa/DIR_METADATA | 11 - chromium/ui/base/cocoa/animation_utils.h | 6 +- chromium/ui/base/cocoa/appkit_utils.h | 6 +- chromium/ui/base/cocoa/defaults_utils.h | 2 +- chromium/ui/base/cocoa/focus_window_set.h | 33 - chromium/ui/base/cocoa/focus_window_set.mm | 92 - chromium/ui/base/cocoa/menu_controller.h | 1 - chromium/ui/base/cocoa/secure_password_input.mm | 2 +- chromium/ui/base/cocoa/touch_bar_util.h | 6 +- chromium/ui/base/cursor/BUILD.gn | 5 +- chromium/ui/base/cursor/cursor.cc | 48 +- chromium/ui/base/cursor/cursor.h | 28 +- chromium/ui/base/cursor/cursor_aura.cc | 21 - chromium/ui/base/cursor/cursor_factory.cc | 41 +- chromium/ui/base/cursor/cursor_factory.h | 62 +- chromium/ui/base/cursor/cursor_loader.cc | 22 +- chromium/ui/base/cursor/cursor_loader.h | 18 +- chromium/ui/base/cursor/cursor_loader_unittest.cc | 25 +- chromium/ui/base/cursor/cursors_aura.cc | 4 +- .../cursor/ozone/bitmap_cursor_factory_ozone.cc | 46 +- .../cursor/ozone/bitmap_cursor_factory_ozone.h | 36 +- .../ozone/bitmap_cursor_factory_ozone_unittest.cc | 18 +- chromium/ui/base/cursor/platform_cursor.h | 36 + chromium/ui/base/cursor/win/win_cursor.cc | 16 +- chromium/ui/base/cursor/win/win_cursor.h | 20 +- chromium/ui/base/cursor/win/win_cursor_factory.cc | 38 +- chromium/ui/base/cursor/win/win_cursor_factory.h | 12 +- chromium/ui/base/data_transfer_policy/OWNERS | 2 +- .../data_transfer_policy/data_transfer_endpoint.cc | 4 +- .../data_transfer_policy/data_transfer_endpoint.h | 4 +- chromium/ui/base/dragdrop/BUILD.gn | 5 +- chromium/ui/base/dragdrop/cocoa_dnd_util.h | 6 +- chromium/ui/base/dragdrop/drag_drop_types.cc | 10 + chromium/ui/base/dragdrop/drag_drop_types.h | 4 + chromium/ui/base/dragdrop/os_exchange_data.cc | 8 +- chromium/ui/base/dragdrop/os_exchange_data.h | 5 +- ...s_exchange_data_provider_non_backed_unittest.cc | 22 +- .../base/dragdrop/os_exchange_data_provider_win.h | 1 + .../os_exchange_data_provider_x11_unittest.cc | 128 -- .../ui/base/dragdrop/os_exchange_data_unittest.cc | 8 +- chromium/ui/base/glib/glib_cast.h | 3 + chromium/ui/base/glib/glib_signal.h | 2 +- chromium/ui/base/idle/BUILD.gn | 8 +- chromium/ui/base/idle/DEPS | 1 + chromium/ui/base/idle/idle_internal.cc | 4 +- chromium/ui/base/idle/idle_internal.h | 4 +- chromium/ui/base/idle/idle_linux.cc | 152 +- chromium/ui/base/idle/idle_stub.cc | 21 + chromium/ui/base/idle/scoped_set_idle_state.h | 4 +- chromium/ui/base/ime/BUILD.gn | 2 + chromium/ui/base/ime/OWNERS | 2 +- chromium/ui/base/ime/chromeos/BUILD.gn | 17 + chromium/ui/base/ime/dummy_text_input_client.cc | 21 +- chromium/ui/base/ime/dummy_text_input_client.h | 13 +- chromium/ui/base/ime/fake_text_input_client.cc | 14 +- chromium/ui/base/ime/fake_text_input_client.h | 7 +- .../ui/base/ime/fuchsia/input_method_fuchsia.cc | 14 +- .../ui/base/ime/fuchsia/input_method_fuchsia.h | 4 +- chromium/ui/base/ime/fuchsia/keyboard_client.h | 1 - .../fuchsia/virtual_keyboard_controller_fuchsia.cc | 74 +- .../fuchsia/virtual_keyboard_controller_fuchsia.h | 8 + chromium/ui/base/ime/grammar_fragment.cc | 25 + chromium/ui/base/ime/grammar_fragment.h | 34 + chromium/ui/base/ime/ime_text_span.h | 2 + chromium/ui/base/ime/input_method.h | 3 - chromium/ui/base/ime/linux/BUILD.gn | 4 + .../ui/base/ime/linux/input_method_auralinux.cc | 66 +- .../ui/base/ime/linux/input_method_auralinux.h | 4 +- .../ime/linux/input_method_auralinux_unittest.cc | 74 +- chromium/ui/base/ime/mock_input_method.h | 1 - chromium/ui/base/ime/mojom/ime_types.mojom | 1 + .../ui/base/ime/mojom/ime_types_mojom_traits.cc | 5 + chromium/ui/base/ime/mojom/text_input_state.mojom | 4 + chromium/ui/base/ime/text_input_client.cc | 16 + chromium/ui/base/ime/text_input_client.h | 27 +- chromium/ui/base/ime/text_input_mode.h | 2 +- chromium/ui/base/ime/utf_offset.cc | 12 +- chromium/ui/base/ime/utf_offset.h | 6 +- chromium/ui/base/ime/utf_offset_unittest.cc | 70 +- chromium/ui/base/ime/win/imm32_manager.h | 6 +- chromium/ui/base/ime/win/input_method_win_imm32.h | 1 - .../on_screen_keyboard_display_manager_tab_tip.h | 6 +- .../on_screen_keyboard_display_manager_unittest.cc | 7 +- chromium/ui/base/ime/win/tsf_bridge.cc | 40 +- chromium/ui/base/ime/win/tsf_event_router.h | 1 - chromium/ui/base/ime/win/tsf_text_store.cc | 21 +- chromium/ui/base/ime/win/tsf_text_store.h | 5 + .../ui/base/ime/win/tsf_text_store_unittest.cc | 5 +- chromium/ui/base/interaction/OWNERS | 2 + chromium/ui/base/interaction/README.md | 401 ++++ chromium/ui/base/interaction/element_identifier.cc | 21 + chromium/ui/base/interaction/element_identifier.h | 258 +++ chromium/ui/base/interaction/element_test_util.cc | 68 + chromium/ui/base/interaction/element_test_util.h | 55 + chromium/ui/base/interaction/element_tracker.cc | 333 +++ chromium/ui/base/interaction/element_tracker.h | 235 +++ .../base/interaction/element_tracker_unittest.cc | 554 +++++ .../ui/base/interaction/expect_call_in_scope.h | 56 + .../ui/base/interaction/interaction_sequence.cc | 515 +++++ .../ui/base/interaction/interaction_sequence.h | 278 +++ .../interaction/interaction_sequence_unittest.cc | 1402 +++++++++++++ chromium/ui/base/l10n/OWNERS | 2 +- chromium/ui/base/l10n/l10n_font_util.h | 6 +- chromium/ui/base/l10n/l10n_util.cc | 28 +- chromium/ui/base/linux/linux_ui_delegate.cc | 46 + chromium/ui/base/linux/linux_ui_delegate.h | 44 + chromium/ui/base/metadata/OWNERS | 1 + chromium/ui/base/metadata/base_type_conversion.cc | 602 ++++++ chromium/ui/base/metadata/base_type_conversion.h | 378 ++++ .../base/metadata/base_type_conversion_unittest.cc | 258 +++ chromium/ui/base/metadata/metadata_cache.cc | 50 + chromium/ui/base/metadata/metadata_cache.h | 66 + chromium/ui/base/metadata/metadata_header_macros.h | 22 + chromium/ui/base/metadata/metadata_impl_macros.h | 81 + .../ui/base/metadata/metadata_macros_internal.h | 106 + chromium/ui/base/metadata/metadata_types.cc | 181 ++ chromium/ui/base/metadata/metadata_types.h | 213 ++ chromium/ui/base/metadata/metadata_unittest.cc | 256 +++ chromium/ui/base/metadata/property_metadata.h | 206 ++ chromium/ui/base/models/dialog_model.h | 14 +- chromium/ui/base/models/image_model.cc | 39 +- chromium/ui/base/models/image_model.h | 27 +- chromium/ui/base/models/image_model_unittest.cc | 25 +- chromium/ui/base/models/menu_model.cc | 4 + chromium/ui/base/models/menu_model.h | 5 + chromium/ui/base/models/simple_combobox_model.cc | 39 +- chromium/ui/base/models/simple_combobox_model.h | 30 +- .../base/models/simple_combobox_model_unittest.cc | 43 + chromium/ui/base/models/simple_menu_model.cc | 9 + chromium/ui/base/models/simple_menu_model.h | 5 + .../ui/base/models/simple_menu_model_unittest.cc | 19 +- chromium/ui/base/mojom/ui_base_types.mojom | 1 + chromium/ui/base/prediction/empty_predictor.cc | 2 +- chromium/ui/base/prediction/empty_predictor.h | 4 +- chromium/ui/base/prediction/linear_resampling.cc | 1 + .../base/prediction/prediction_metrics_handler.cc | 4 +- .../base/prediction/prediction_metrics_handler.h | 10 +- chromium/ui/base/resource/OWNERS | 2 +- chromium/ui/base/resource/allowlist.h | 2 +- chromium/ui/base/resource/data_pack_unittest.cc | 4 +- .../base/resource/mock_resource_bundle_delegate.h | 2 +- chromium/ui/base/resource/resource_bundle.cc | 13 +- chromium/ui/base/resource/resource_bundle.h | 8 +- chromium/ui/base/resource/resource_bundle_win.h | 6 +- chromium/ui/base/scoped_visibility_tracker.h | 1 - chromium/ui/base/template_expressions.cc | 18 +- chromium/ui/base/ui_base_features.cc | 32 +- chromium/ui/base/ui_base_features.h | 19 +- chromium/ui/base/webui/jstemplate_builder.cc | 23 +- chromium/ui/base/win/session_change_observer.cc | 1 + chromium/ui/base/x/BUILD.gn | 18 +- chromium/ui/base/x/visual_picker_glx.cc | 301 +++ chromium/ui/base/x/visual_picker_glx.h | 70 + chromium/ui/base/x/x11_cursor.cc | 7 + chromium/ui/base/x/x11_cursor.h | 19 +- chromium/ui/base/x/x11_cursor_factory.cc | 51 +- chromium/ui/base/x/x11_cursor_factory.h | 23 +- chromium/ui/base/x/x11_cursor_factory_unittest.cc | 22 +- chromium/ui/base/x/x11_drag_drop_client.cc | 82 +- chromium/ui/base/x/x11_drag_drop_client.h | 25 +- chromium/ui/base/x/x11_gl_egl_utility.cc | 24 +- chromium/ui/base/x/x11_gl_egl_utility.h | 7 - chromium/ui/base/x/x11_keyboard_hook.cc | 122 ++ chromium/ui/base/x/x11_keyboard_hook.h | 53 + chromium/ui/base/x/x11_screensaver.cc | 99 + chromium/ui/base/x/x11_screensaver.h | 16 + .../ui/base/x/x11_screensaver_window_finder.cc | 86 - chromium/ui/base/x/x11_screensaver_window_finder.h | 34 - chromium/ui/base/x/x11_util.cc | 200 +- chromium/ui/base/x/x11_util.h | 61 +- chromium/ui/base/x/x11_whole_screen_move_loop.h | 2 +- chromium/ui/chromeos/events/BUILD.gn | 1 + chromium/ui/color/DIR_METADATA | 3 - chromium/ui/color/color_id.h | 17 + chromium/ui/color/color_provider_manager.cc | 21 +- chromium/ui/color/color_provider_manager.h | 5 +- .../ui/color/color_provider_manager_unittest.cc | 5 +- chromium/ui/color/color_transform.cc | 14 +- chromium/ui/color/color_transform.h | 6 +- .../ui/color/mac/scoped_current_nsappearance.h | 2 +- chromium/ui/color/ui_color_mixer.cc | 14 + chromium/ui/compositor/BUILD.gn | 1 + .../ui/compositor/animation_throughput_reporter.cc | 6 +- chromium/ui/compositor/compositor.cc | 54 +- chromium/ui/compositor/compositor.h | 27 +- chromium/ui/compositor/compositor_unittest.cc | 44 +- chromium/ui/compositor/layer.cc | 92 +- chromium/ui/compositor/layer.h | 50 +- chromium/ui/compositor/layer_animation_delegate.h | 6 +- chromium/ui/compositor/layer_animator.h | 2 +- chromium/ui/compositor/layer_owner.cc | 7 + chromium/ui/compositor/layer_owner.h | 3 +- chromium/ui/compositor/layer_unittest.cc | 54 +- .../compositor/overscroll/scroll_input_handler.h | 2 +- chromium/ui/compositor/paint_cache.h | 2 +- chromium/ui/compositor/paint_context.h | 1 - chromium/ui/compositor/paint_recorder.h | 1 - .../scoped_animation_duration_scale_mode.h | 2 +- chromium/ui/compositor/throughput_tracker.cc | 6 +- chromium/ui/compositor/throughput_tracker.h | 9 +- chromium/ui/compositor/throughput_tracker_host.h | 5 +- .../total_animation_throughput_reporter.h | 6 +- .../ui/content_accelerators/accelerator_util.cc | 9 +- chromium/ui/display/BUILD.gn | 2 + chromium/ui/display/display.h | 4 +- chromium/ui/display/display_change_notifier.cc | 7 + chromium/ui/display/display_layout.cc | 1 - chromium/ui/display/display_list.cc | 160 +- chromium/ui/display/display_list.h | 72 +- chromium/ui/display/display_list_unittest.cc | 140 +- chromium/ui/display/display_observer.cc | 2 + chromium/ui/display/display_observer.h | 7 + chromium/ui/display/fake/fake_display_delegate.cc | 1 - chromium/ui/display/fake/fake_display_snapshot.cc | 3 +- chromium/ui/display/mac/display_link_mac.h | 1 - chromium/ui/display/mac/screen_mac.mm | 14 +- .../display/manager/content_protection_manager.cc | 4 +- .../display/manager/content_protection_manager.h | 4 +- .../ui/display/manager/display_change_observer.cc | 3 + .../ui/display/manager/display_change_observer.h | 2 - .../manager/display_change_observer_unittest.cc | 39 +- chromium/ui/display/manager/display_configurator.h | 8 +- chromium/ui/display/manager/display_manager.cc | 30 +- chromium/ui/display/manager/display_manager.h | 12 +- chromium/ui/display/manager/display_util.cc | 1 - chromium/ui/display/manager/display_util.h | 2 +- chromium/ui/display/manager/json_converter.cc | 180 +- .../query_content_protection_task_unittest.cc | 4 +- .../manager/update_display_configuration_task.cc | 6 +- .../manager/update_display_configuration_task.h | 4 +- chromium/ui/display/mojom/BUILD.gn | 12 + .../display_configuration_params_mojom_traits.cc | 2 +- .../display_configuration_params_mojom_traits.h | 2 +- .../ui/display/mojom/display_layout_mojom_traits.h | 2 +- chromium/ui/display/mojom/display_list.mojom | 20 + .../ui/display/mojom/display_list_mojom_traits.cc | 21 + .../ui/display/mojom/display_list_mojom_traits.h | 41 + .../mojom/display_list_mojom_traits_unittest.cc | 101 + .../display/mojom/display_snapshot_mojom_traits.h | 1 - chromium/ui/display/screen.cc | 42 + chromium/ui/display/screen.h | 14 + chromium/ui/display/screen_unittest.cc | 12 + .../display/types/display_configuration_params.h | 4 +- chromium/ui/display/types/display_constants.h | 54 +- chromium/ui/display/types/display_types_export.h | 6 +- chromium/ui/display/util/edid_parser.cc | 14 +- chromium/ui/display/util/edid_parser.h | 27 +- chromium/ui/display/util/edid_parser_unittest.cc | 43 +- chromium/ui/display/win/screen_win.cc | 30 +- chromium/ui/events/BUILD.gn | 165 +- chromium/ui/events/DEPS | 3 +- chromium/ui/events/OWNERS | 2 +- chromium/ui/events/android/drag_event_android.cc | 9 +- .../ui/events/android/event_handler_android.cc | 2 +- chromium/ui/events/android/event_handler_android.h | 4 +- .../ui/events/android/gesture_event_android.cc | 6 +- chromium/ui/events/android/gesture_event_type.h | 6 +- chromium/ui/events/android/key_event_utils.h | 2 +- .../ui/events/android/keyboard_hook_android.cc | 4 +- chromium/ui/events/base_event_utils.h | 1 - chromium/ui/events/blink/blink_event_util.cc | 27 +- chromium/ui/events/blink/blink_event_util.h | 6 +- chromium/ui/events/blink/web_input_event.cc | 8 +- .../events/blink/web_input_event_builders_win.cc | 10 + .../blink/web_input_event_builders_win_unittest.cc | 51 + chromium/ui/events/cocoa/events_mac.mm | 5 + chromium/ui/events/devices/BUILD.gn | 2 + .../devices/microphone_mute_switch_monitor.cc | 37 + .../devices/microphone_mute_switch_monitor.h | 62 + chromium/ui/events/devices/touchscreen_device.cc | 12 +- chromium/ui/events/devices/touchscreen_device.h | 9 +- .../ui/events/devices/x11/touch_factory_x11.cc | 3 +- chromium/ui/events/devices/x11/touch_factory_x11.h | 2 +- chromium/ui/events/event.cc | 52 +- chromium/ui/events/event.h | 2 +- chromium/ui/events/event_handler.cc | 10 +- chromium/ui/events/event_handler.h | 23 +- chromium/ui/events/event_switches.h | 6 +- chromium/ui/events/event_target.cc | 8 - chromium/ui/events/event_unittest.cc | 327 +-- chromium/ui/events/event_utils.cc | 237 +-- chromium/ui/events/event_utils.h | 36 +- chromium/ui/events/events_default.cc | 5 + chromium/ui/events/events_stub.cc | 5 + .../fraction_of_time_without_user_input_recorder.h | 6 +- .../gesture_detection/filtered_gesture_provider.cc | 4 + .../gesture_detection/filtered_gesture_provider.h | 3 + .../events/gesture_detection/gesture_provider.cc | 162 +- .../ui/events/gesture_detection/gesture_provider.h | 3 + .../gesture_touch_uma_histogram.h | 1 - .../gesture_detection/motion_event_generic.h | 6 +- chromium/ui/events/gesture_event_details.h | 6 +- chromium/ui/events/gestures/OWNERS | 2 +- .../ui/events/gestures/gesture_provider_aura.cc | 4 + .../ui/events/gestures/gesture_provider_aura.h | 9 +- chromium/ui/events/gestures/gesture_recognizer.h | 7 + .../ui/events/gestures/gesture_recognizer_impl.cc | 15 + .../ui/events/gestures/gesture_recognizer_impl.h | 2 + .../events/gestures/gesture_recognizer_impl_mac.cc | 8 + .../events/gestures/gesture_recognizer_impl_mac.h | 2 + chromium/ui/events/gestures/motion_event_aura.h | 9 +- chromium/ui/events/keyboard_hook.h | 8 +- chromium/ui/events/keyboard_hook_base.cc | 2 +- chromium/ui/events/keyboard_hook_base.h | 7 +- chromium/ui/events/keyboard_hook_linux.cc | 32 +- chromium/ui/events/keycodes/DEPS | 1 + chromium/ui/events/keycodes/dom/dom_code.h | 6 +- chromium/ui/events/keycodes/dom/dom_key.h | 12 +- .../ui/events/keycodes/dom/keycode_converter.cc | 54 + .../ui/events/keycodes/dom/keycode_converter.h | 18 + .../ui/events/keycodes/keyboard_code_conversion.cc | 17 + .../ui/events/keycodes/keyboard_code_conversion.h | 5 +- .../keycodes/keyboard_code_conversion_fuchsia.cc | 38 + .../keycodes/keyboard_code_conversion_fuchsia.h | 27 + .../keyboard_code_conversion_fuchsia_unittest.cc | 67 + .../events/keycodes/keyboard_code_conversion_x.cc | 7 +- .../events/keycodes/keyboard_code_conversion_x.h | 1 - .../events/keycodes/keyboard_code_conversion_xkb.h | 1 - chromium/ui/events/mac/keyboard_hook_mac.mm | 2 +- chromium/ui/events/mojom/event_mojom_traits.cc | 4 +- chromium/ui/events/ozone/device/device_event.h | 6 +- .../ui/events/ozone/device/device_event_observer.h | 7 +- chromium/ui/events/ozone/evdev/BUILD.gn | 46 +- .../ozone/evdev/device_event_dispatcher_evdev.cc | 6 +- .../ozone/evdev/device_event_dispatcher_evdev.h | 11 +- .../ui/events/ozone/evdev/event_converter_evdev.cc | 10 + .../ui/events/ozone/evdev/event_converter_evdev.h | 10 + .../ozone/evdev/event_converter_evdev_impl.cc | 22 + .../ozone/evdev/event_converter_evdev_impl.h | 6 +- .../ozone/evdev/event_converter_test_util.cc | 4 + .../ui/events/ozone/evdev/event_device_info.cc | 10 +- chromium/ui/events/ozone/evdev/event_device_info.h | 8 + .../ozone/evdev/event_device_info_unittest.cc | 51 +- .../events/ozone/evdev/event_device_test_util.cc | 46 + .../ui/events/ozone/evdev/event_device_test_util.h | 2 + .../ui/events/ozone/evdev/event_factory_evdev.cc | 15 + .../ui/events/ozone/evdev/event_factory_evdev.h | 2 +- .../ozone/evdev/event_factory_evdev_unittest.cc | 2 +- .../ui/events/ozone/evdev/event_thread_evdev.cc | 7 +- .../ozone/evdev/gamepad_event_converter_evdev.h | 6 +- .../events/ozone/evdev/input_controller_evdev.cc | 9 + .../ui/events/ozone/evdev/input_controller_evdev.h | 2 + .../ozone/evdev/input_device_factory_evdev.cc | 48 +- .../ozone/evdev/input_device_factory_evdev.h | 2 + .../evdev/input_device_factory_evdev_proxy.cc | 20 + .../ozone/evdev/input_device_factory_evdev_proxy.h | 4 +- .../libgestures_glue/event_reader_libevdev_cros.cc | 5 + .../libgestures_glue/event_reader_libevdev_cros.h | 2 + .../libgestures_glue/gesture_properties_service.h | 6 +- ...microphone_mute_switch_event_converter_evdev.cc | 95 + .../microphone_mute_switch_event_converter_evdev.h | 51 + ...e_mute_switch_event_converter_evdev_unittest.cc | 140 ++ chromium/ui/events/ozone/evdev/switches.cc | 14 + chromium/ui/events/ozone/evdev/switches.h | 17 + .../ozone/evdev/tablet_event_converter_evdev.h | 6 +- .../events/ozone/evdev/touch_evdev_debug_buffer.h | 6 +- chromium/ui/events/ozone/evdev/touch_evdev_types.h | 1 + .../ozone/evdev/touch_event_converter_evdev.cc | 45 +- .../ozone/evdev/touch_event_converter_evdev.h | 19 +- .../evdev/touch_event_converter_evdev_unittest.cc | 56 +- .../ozone/evdev/touch_filter/edge_touch_filter.cc | 1 - .../neural_stylus_palm_detection_filter.cc | 4 +- ...neural_stylus_palm_detection_filter_unittest.cc | 7 +- .../neural_stylus_palm_report_filter_unittest.cc | 6 +- .../open_palm_detection_filter_unittest.cc | 6 +- .../touch_filter/palm_detection_filter_factory.cc | 4 +- .../shared_palm_detection_filter_state.h | 2 +- .../ui/events/ozone/gamepad/gamepad_observer.h | 1 - .../events/ozone/gamepad/gamepad_provider_ozone.h | 1 - .../ozone/keyboard/event_auto_repeat_handler.h | 6 +- chromium/ui/events/ozone/keyboard_hook_ozone.cc | 34 +- chromium/ui/events/ozone/keyboard_hook_ozone.h | 28 +- chromium/ui/events/ozone/layout/BUILD.gn | 14 + .../events/ozone/layout/keyboard_layout_engine.h | 12 +- .../ozone/layout/keyboard_layout_engine_manager.h | 7 +- .../layout/keyboard_layout_engine_test_utils.cc | 31 + .../layout/keyboard_layout_engine_test_utils.h | 16 + .../ozone/layout/no/no_keyboard_layout_engine.cc | 4 + .../ozone/layout/no/no_keyboard_layout_engine.h | 1 + .../layout/stub/stub_keyboard_layout_engine.cc | 5 + .../layout/stub/stub_keyboard_layout_engine.h | 1 + .../ozone/layout/xkb/xkb_keyboard_layout_engine.cc | 14 + .../ozone/layout/xkb/xkb_keyboard_layout_engine.h | 4 + .../xkb/xkb_keyboard_layout_engine_unittest.cc | 438 ++-- .../ui/events/platform/platform_event_source.cc | 11 - .../ui/events/platform/platform_event_source.h | 5 - .../platform/platform_event_source_unittest.cc | 106 +- .../ui/events/platform/x11/x11_event_source.cc | 18 +- chromium/ui/events/platform/x11/x11_event_source.h | 13 +- .../platform/x11/x11_event_watcher_fdwatch.cc | 4 +- .../events/platform/x11/x11_event_watcher_glib.cc | 45 +- chromium/ui/events/pointer_details.cc | 10 + chromium/ui/events/pointer_details.h | 2 + chromium/ui/events/scoped_target_handler.h | 2 +- chromium/ui/events/win/events_win.cc | 10 + chromium/ui/events/win/events_win_utils.cc | 61 + chromium/ui/events/win/events_win_utils.h | 71 +- chromium/ui/events/win/keyboard_hook_monitor.h | 4 +- .../ui/events/win/keyboard_hook_monitor_impl.h | 5 +- chromium/ui/events/win/keyboard_hook_observer.h | 5 +- chromium/ui/events/win/keyboard_hook_win_base.cc | 2 +- chromium/ui/events/win/keyboard_hook_win_base.h | 11 +- chromium/ui/events/win/media_keyboard_hook_win.cc | 2 +- .../ui/events/win/modifier_keyboard_hook_win.cc | 10 +- .../win/modifier_keyboard_hook_win_unittest.cc | 4 +- chromium/ui/events/x/events_x_utils.h | 1 - chromium/ui/events/x/keyboard_hook_x11.cc | 115 +- chromium/ui/events/x/keyboard_hook_x11.h | 26 +- chromium/ui/file_manager/BUILD.gn | 33 +- .../ui/file_manager/audio_player/elements/BUILD.gn | 149 +- chromium/ui/file_manager/audio_player/js/BUILD.gn | 16 +- chromium/ui/file_manager/file_manager/BUILD.gn | 1 - .../file_manager/background/js/BUILD.gn | 32 +- .../file_manager/file_manager/common/js/BUILD.gn | 2 + .../file_manager/file_manager/cws_widget/BUILD.gn | 134 -- .../ui/file_manager/file_manager/externs/BUILD.gn | 2 + .../file_manager/externs/background/BUILD.gn | 2 + .../file_manager/foreground/elements/BUILD.gn | 63 +- .../file_manager/foreground/js/BUILD.gn | 130 +- .../file_manager/foreground/js/metadata/BUILD.gn | 3 + .../file_manager/foreground/js/ui/BUILD.gn | 72 +- .../file_manager/foreground/js/ui/table/BUILD.gn | 2 + chromium/ui/file_manager/image_loader/BUILD.gn | 2 + .../integration_tests/file_manager/BUILD.gn | 10 +- chromium/ui/file_manager/video_player/js/BUILD.gn | 2 + chromium/ui/gfx/BUILD.gn | 7 +- .../gfx/android/android_surface_control_compat.cc | 102 +- .../gfx/android/android_surface_control_compat.h | 15 + chromium/ui/gfx/animation/animation.cc | 2 +- chromium/ui/gfx/animation/animation.h | 4 +- .../ui/gfx/animation/keyframe/animation_curve.h | 3 + .../keyframe/keyframe_animation_unittest.cc | 387 +++- .../ui/gfx/animation/keyframe/keyframe_effect.cc | 53 +- .../ui/gfx/animation/keyframe/keyframe_effect.h | 3 + .../ui/gfx/animation/keyframe/keyframe_model.cc | 8 +- .../ui/gfx/animation/keyframe/keyframe_model.h | 19 +- .../keyframe/keyframed_animation_curve.cc | 129 ++ .../animation/keyframe/keyframed_animation_curve.h | 61 + chromium/ui/gfx/animation/keyframe/transition.cc | 4 +- chromium/ui/gfx/animation/keyframe/transition.h | 5 + chromium/ui/gfx/animation/linear_animation.h | 2 +- chromium/ui/gfx/animation/slide_animation.cc | 4 +- chromium/ui/gfx/animation/slide_animation.h | 4 +- chromium/ui/gfx/bidi_line_iterator_unittest.cc | 7 +- chromium/ui/gfx/buffer_format_util.cc | 26 +- chromium/ui/gfx/buffer_format_util.h | 9 + chromium/ui/gfx/buffer_types.h | 22 + chromium/ui/gfx/canvas.cc | 1 + chromium/ui/gfx/canvas.h | 6 +- chromium/ui/gfx/codec/vector_wstream.h | 6 +- chromium/ui/gfx/color_analysis.cc | 4 +- chromium/ui/gfx/color_analysis.h | 2 +- chromium/ui/gfx/color_analysis_unittest.cc | 6 +- chromium/ui/gfx/color_space.h | 12 +- chromium/ui/gfx/color_space_win.h | 2 +- chromium/ui/gfx/color_transform_unittest.cc | 6 +- chromium/ui/gfx/color_utils.cc | 24 +- chromium/ui/gfx/color_utils.h | 15 +- chromium/ui/gfx/color_utils_unittest.cc | 33 - chromium/ui/gfx/display_color_spaces.h | 1 + chromium/ui/gfx/font_fallback_mac.mm | 2 +- chromium/ui/gfx/font_fallback_skia.cc | 4 +- chromium/ui/gfx/font_fallback_win.cc | 3 +- chromium/ui/gfx/font_list.h | 4 + chromium/ui/gfx/font_names_testing.h | 2 +- chromium/ui/gfx/font_render_params_linux.cc | 24 +- chromium/ui/gfx/gdi_util.h | 1 - chromium/ui/gfx/geometry/axis_transform2d.cc | 2 +- chromium/ui/gfx/geometry/axis_transform2d.h | 47 +- .../ui/gfx/geometry/axis_transform2d_unittest.cc | 4 +- chromium/ui/gfx/geometry/mojom/geometry.mojom | 1 + chromium/ui/gfx/geometry/point.cc | 2 +- chromium/ui/gfx/geometry/quaternion.h | 18 +- chromium/ui/gfx/geometry/quaternion_unittest.cc | 21 + chromium/ui/gfx/geometry/rect.cc | 2 +- chromium/ui/gfx/geometry/rect_f.cc | 2 +- chromium/ui/gfx/geometry/size.cc | 2 +- chromium/ui/gfx/gpu_extra_info.h | 3 - chromium/ui/gfx/gpu_fence.h | 6 +- chromium/ui/gfx/gpu_fence_handle.cc | 3 + chromium/ui/gfx/gpu_memory_buffer.cc | 12 + chromium/ui/gfx/gpu_memory_buffer.h | 5 +- chromium/ui/gfx/half_float.h | 6 +- chromium/ui/gfx/hdr_static_metadata.cc | 14 + chromium/ui/gfx/hdr_static_metadata.h | 40 + chromium/ui/gfx/image/image.cc | 18 +- chromium/ui/gfx/image/image.h | 4 +- chromium/ui/gfx/image/image_platform.h | 6 +- chromium/ui/gfx/image/image_skia_source.h | 1 - chromium/ui/gfx/image/image_skia_unittest.cc | 4 +- chromium/ui/gfx/image/image_unittest.cc | 2 +- chromium/ui/gfx/image/image_unittest_util.cc | 10 +- chromium/ui/gfx/image/image_unittest_util.h | 2 +- chromium/ui/gfx/image/image_util.cc | 4 +- chromium/ui/gfx/ios/NSString+CrStringDrawing.h | 6 +- .../ui/gfx/ipc/buffer_types/gfx_param_traits.cc | 2 + .../gfx/ipc/buffer_types/gfx_param_traits_macros.h | 2 + chromium/ui/gfx/ipc/geometry/gfx_param_traits.cc | 1 + chromium/ui/gfx/ipc/gfx_param_traits.cc | 1 + .../ui/gfx/linux/client_native_pixmap_dmabuf.cc | 1 - chromium/ui/gfx/mac/io_surface.cc | 4 +- chromium/ui/gfx/mac/io_surface_unittest.cc | 10 + chromium/ui/gfx/mojom/BUILD.gn | 5 + chromium/ui/gfx/mojom/buffer_types.mojom | 8 + chromium/ui/gfx/mojom/buffer_types_mojom_traits.h | 44 +- .../gfx/mojom/delegated_ink_point_renderer.mojom | 25 + chromium/ui/gfx/mojom/gpu_extra_info.mojom | 4 - .../ui/gfx/mojom/gpu_extra_info_mojom_traits.cc | 8 - .../ui/gfx/mojom/gpu_extra_info_mojom_traits.h | 8 - .../ui/gfx/mojom/mask_filter_info_mojom_traits.h | 2 +- chromium/ui/gfx/mojom/native_handle_types.mojom | 2 +- .../gfx/mojom/native_handle_types_mojom_traits.h | 2 +- chromium/ui/gfx/mojom/presentation_feedback.mojom | 1 + .../gfx/mojom/presentation_feedback_mojom_traits.h | 8 +- chromium/ui/gfx/native_pixmap_handle.h | 4 +- chromium/ui/gfx/paint_throbber.cc | 10 +- chromium/ui/gfx/paint_throbber.h | 8 +- chromium/ui/gfx/paint_vector_icon.cc | 13 +- chromium/ui/gfx/paint_vector_icon.h | 4 - chromium/ui/gfx/platform_font.h | 4 +- chromium/ui/gfx/platform_font_mac.h | 10 +- chromium/ui/gfx/platform_font_mac.mm | 18 +- chromium/ui/gfx/platform_font_skia.cc | 8 +- chromium/ui/gfx/platform_font_skia.h | 2 +- chromium/ui/gfx/presentation_feedback.h | 13 +- chromium/ui/gfx/range/gfx_range_export.h | 6 +- chromium/ui/gfx/render_text.cc | 4 +- chromium/ui/gfx/render_text.h | 34 +- chromium/ui/gfx/render_text_harfbuzz.cc | 2 +- chromium/ui/gfx/render_text_unittest.cc | 2176 ++++++++++---------- chromium/ui/gfx/rrect_f.cc | 1 - chromium/ui/gfx/shadow_value.cc | 17 +- chromium/ui/gfx/shadow_value.h | 13 +- chromium/ui/gfx/skia_paint_util.h | 2 +- chromium/ui/gfx/skia_util.h | 2 - chromium/ui/gfx/swap_result.cc | 7 +- chromium/ui/gfx/swap_result.h | 6 +- chromium/ui/gfx/switches.cc | 13 + chromium/ui/gfx/switches.h | 5 + chromium/ui/gfx/text_elider.cc | 2 +- chromium/ui/gfx/text_elider.h | 6 +- chromium/ui/gfx/text_elider_unittest.cc | 1137 +++++----- chromium/ui/gfx/vector_icon_utils.cc | 24 + chromium/ui/gfx/vector_icon_utils.h | 20 + chromium/ui/gfx/win/direct_write.cc | 16 +- chromium/ui/gfx/win/direct_write.h | 6 +- chromium/ui/gfx/win/physical_size.h | 2 +- chromium/ui/gfx/win/singleton_hwnd.h | 1 - .../ui/gfx/win/singleton_hwnd_hot_key_observer.cc | 8 +- chromium/ui/gfx/win/window_impl.cc | 1 + chromium/ui/gfx/x/connection.cc | 13 +- chromium/ui/gfx/x/connection.h | 15 +- chromium/ui/gfx/x/gen_xproto.py | 6 +- chromium/ui/gfx/x/generated_protos/bigreq.h | 4 +- chromium/ui/gfx/x/generated_protos/composite.h | 2 +- chromium/ui/gfx/x/generated_protos/damage.h | 2 +- chromium/ui/gfx/x/generated_protos/dpms.h | 2 +- chromium/ui/gfx/x/generated_protos/dri2.h | 2 +- chromium/ui/gfx/x/generated_protos/dri3.h | 2 +- chromium/ui/gfx/x/generated_protos/ge.h | 4 +- chromium/ui/gfx/x/generated_protos/glx.h | 2 +- chromium/ui/gfx/x/generated_protos/present.h | 2 +- chromium/ui/gfx/x/generated_protos/randr.h | 16 +- chromium/ui/gfx/x/generated_protos/record.h | 2 +- chromium/ui/gfx/x/generated_protos/render.cc | 52 +- chromium/ui/gfx/x/generated_protos/render.h | 106 +- chromium/ui/gfx/x/generated_protos/res.h | 2 +- chromium/ui/gfx/x/generated_protos/screensaver.cc | 30 +- chromium/ui/gfx/x/generated_protos/screensaver.h | 62 +- chromium/ui/gfx/x/generated_protos/shape.h | 2 +- chromium/ui/gfx/x/generated_protos/shm.h | 2 +- chromium/ui/gfx/x/generated_protos/sync.cc | 24 +- chromium/ui/gfx/x/generated_protos/sync.h | 50 +- chromium/ui/gfx/x/generated_protos/xc_misc.h | 2 +- chromium/ui/gfx/x/generated_protos/xevie.h | 2 +- chromium/ui/gfx/x/generated_protos/xf86dri.h | 2 +- chromium/ui/gfx/x/generated_protos/xf86vidmode.h | 2 +- chromium/ui/gfx/x/generated_protos/xfixes.h | 2 +- chromium/ui/gfx/x/generated_protos/xinerama.h | 2 +- chromium/ui/gfx/x/generated_protos/xinput.cc | 12 +- chromium/ui/gfx/x/generated_protos/xinput.h | 134 +- chromium/ui/gfx/x/generated_protos/xkb.cc | 92 +- chromium/ui/gfx/x/generated_protos/xkb.h | 296 +-- chromium/ui/gfx/x/generated_protos/xprint.h | 2 +- chromium/ui/gfx/x/generated_protos/xproto.cc | 182 +- chromium/ui/gfx/x/generated_protos/xproto.h | 366 ++-- chromium/ui/gfx/x/generated_protos/xselinux.h | 2 +- chromium/ui/gfx/x/generated_protos/xtest.h | 2 +- chromium/ui/gfx/x/generated_protos/xv.h | 2 +- chromium/ui/gfx/x/generated_protos/xvmc.h | 2 +- chromium/ui/gfx/x/property_cache.h | 4 +- chromium/ui/gfx/x/xproto_internal.h | 2 +- chromium/ui/gfx/x/xproto_types.h | 2 +- chromium/ui/gl/BUILD.gn | 5 +- chromium/ui/gl/DEPS | 5 + chromium/ui/gl/GL/glextchromium.h | 6 +- chromium/ui/gl/angle_platform_impl.h | 1 - chromium/ui/gl/ca_renderer_layer_params.cc | 6 +- chromium/ui/gl/ca_renderer_layer_params.h | 5 +- chromium/ui/gl/dc_layer_tree.cc | 14 +- chromium/ui/gl/dc_layer_tree.h | 20 +- chromium/ui/gl/dc_renderer_layer_params.h | 6 +- chromium/ui/gl/delegated_ink_point_renderer_gpu.h | 288 ++- .../delegated_ink_point_renderer_gpu_unittest.cc | 262 +++ chromium/ui/gl/direct_composition_surface_win.cc | 7 + chromium/ui/gl/direct_composition_surface_win.h | 9 + .../gl/direct_composition_surface_win_unittest.cc | 8 +- chromium/ui/gl/dual_gpu_state_mac.h | 1 - chromium/ui/gl/egl_timestamps.h | 1 + chromium/ui/gl/gl_context_glx.h | 1 - chromium/ui/gl/gl_context_glx_unittest.cc | 2 +- chromium/ui/gl/gl_features.cc | 83 + chromium/ui/gl/gl_features.h | 2 + chromium/ui/gl/gl_fence_win.h | 2 +- chromium/ui/gl/gl_image_d3d.cc | 42 +- chromium/ui/gl/gl_image_d3d.h | 29 +- chromium/ui/gl/gl_image_d3d_unittest.cc | 7 +- chromium/ui/gl/gl_image_egl_pixmap.cc | 2 +- chromium/ui/gl/gl_image_glx.cc | 4 +- chromium/ui/gl/gl_image_io_surface.h | 7 + chromium/ui/gl/gl_image_io_surface.mm | 9 +- chromium/ui/gl/gl_image_io_surface_egl.mm | 2 +- chromium/ui/gl/gl_image_io_surface_unittest.cc | 10 +- chromium/ui/gl/gl_image_memory.cc | 20 +- chromium/ui/gl/gl_image_native_pixmap_unittest.cc | 6 +- chromium/ui/gl/gl_implementation.cc | 13 + chromium/ui/gl/gl_implementation.h | 5 + chromium/ui/gl/gl_share_group.h | 1 - chromium/ui/gl/gl_stub_autogen_gl.h | 6 +- chromium/ui/gl/gl_surface.cc | 12 + chromium/ui/gl/gl_surface.h | 10 + chromium/ui/gl/gl_surface_egl.cc | 20 +- chromium/ui/gl/gl_surface_egl.h | 2 + chromium/ui/gl/gl_surface_egl_surface_control.cc | 60 +- chromium/ui/gl/gl_surface_egl_surface_control.h | 16 +- chromium/ui/gl/gl_surface_egl_x11.cc | 2 +- chromium/ui/gl/gl_surface_egl_x11_gles2.h | 1 - chromium/ui/gl/gl_surface_glx.cc | 4 +- chromium/ui/gl/gl_surface_presentation_helper.cc | 12 +- chromium/ui/gl/gl_surface_presentation_helper.h | 1 + chromium/ui/gl/gl_switches.cc | 1 + chromium/ui/gl/gl_switches.h | 1 + chromium/ui/gl/gl_utils.cc | 13 +- chromium/ui/gl/gl_version_info.cc | 4 +- chromium/ui/gl/gl_visual_picker_glx.cc | 264 --- chromium/ui/gl/gl_visual_picker_glx.h | 71 - chromium/ui/gl/hdr_metadata_helper_win.cc | 2 +- chromium/ui/gl/hdr_metadata_helper_win.h | 10 +- chromium/ui/gl/init/BUILD.gn | 1 + chromium/ui/gl/init/gl_factory.cc | 7 + chromium/ui/gl/init/gl_initializer_win.cc | 1 - chromium/ui/gl/scoped_make_current.h | 2 +- chromium/ui/gl/swap_chain_presenter.cc | 175 +- chromium/ui/gl/swap_chain_presenter.h | 29 +- chromium/ui/gl/yuv_to_rgb_converter.h | 6 +- chromium/ui/gtk/BUILD.gn | 67 +- chromium/ui/gtk/gdk.sigs | 16 + chromium/ui/gtk/gtk.sigs | 132 ++ chromium/ui/gtk/gtk_color_mixers.cc | 10 +- chromium/ui/gtk/gtk_color_mixers.h | 3 +- chromium/ui/gtk/gtk_compat.cc | 153 +- chromium/ui/gtk/gtk_compat.h | 53 +- chromium/ui/gtk/gtk_key_bindings_handler.cc | 26 +- chromium/ui/gtk/gtk_key_bindings_handler.h | 52 +- chromium/ui/gtk/gtk_types.h | 26 +- chromium/ui/gtk/gtk_ui.cc | 73 +- chromium/ui/gtk/gtk_ui.h | 14 +- chromium/ui/gtk/gtk_ui_delegate.cc | 23 - chromium/ui/gtk/gtk_ui_delegate.h | 68 - chromium/ui/gtk/gtk_ui_factory.cc | 11 + chromium/ui/gtk/gtk_ui_factory.h | 21 + chromium/ui/gtk/gtk_ui_platform.h | 52 + chromium/ui/gtk/gtk_util.cc | 226 +- chromium/ui/gtk/gtk_util.h | 19 +- chromium/ui/gtk/input_method_context_impl_gtk.cc | 11 +- chromium/ui/gtk/input_method_context_impl_gtk.h | 1 - chromium/ui/gtk/native_theme_gtk.cc | 42 +- chromium/ui/gtk/native_theme_gtk.h | 8 +- chromium/ui/gtk/native_theme_gtk_unittest.cc | 22 +- chromium/ui/gtk/nav_button_provider_gtk.cc | 10 +- chromium/ui/gtk/nav_button_provider_gtk.h | 4 +- chromium/ui/gtk/printing/print_dialog_gtk.cc | 21 +- chromium/ui/gtk/printing/print_dialog_gtk.h | 3 +- chromium/ui/gtk/printing/printing_gtk_util.cc | 4 +- chromium/ui/gtk/select_file_dialog_impl_gtk.cc | 19 +- chromium/ui/gtk/settings_provider_gtk.cc | 14 +- chromium/ui/gtk/wayland/BUILD.gn | 21 - .../ui/gtk/wayland/gtk_ui_delegate_wayland_base.cc | 91 - .../ui/gtk/wayland/gtk_ui_delegate_wayland_base.h | 49 - chromium/ui/gtk/wayland/gtk_ui_platform_wayland.cc | 84 + chromium/ui/gtk/wayland/gtk_ui_platform_wayland.h | 43 + chromium/ui/gtk/x/BUILD.gn | 28 - chromium/ui/gtk/x/gtk_event_loop_x11.cc | 99 +- chromium/ui/gtk/x/gtk_event_loop_x11.h | 19 +- chromium/ui/gtk/x/gtk_ui_delegate_x11.cc | 144 -- chromium/ui/gtk/x/gtk_ui_delegate_x11.h | 51 - chromium/ui/gtk/x/gtk_ui_platform_x11.cc | 116 ++ chromium/ui/gtk/x/gtk_ui_platform_x11.h | 46 + chromium/ui/latency/latency_info.cc | 1 - chromium/ui/latency/latency_tracker.cc | 34 +- chromium/ui/latency/latency_tracker.h | 5 +- .../lock_screen/fake_lock_screen_controller.h | 2 +- chromium/ui/message_center/message_center_impl.cc | 27 +- chromium/ui/message_center/message_center_impl.h | 8 +- .../message_center/message_center_impl_unittest.cc | 8 +- .../ui/message_center/message_center_observer.h | 6 +- .../message_center_stats_collector.cc | 4 +- .../message_center_stats_collector.h | 4 +- .../message_center/notification_list_unittest.cc | 65 +- .../ui/message_center/public/cpp/notification.h | 9 +- .../public/cpp/notification_delegate.cc | 10 +- .../public/cpp/notification_delegate.h | 16 +- .../public/cpp/notification_delegate_unittest.cc | 14 +- .../views/message_popup_collection_unittest.cc | 4 +- .../ui/message_center/views/message_popup_view.cc | 5 +- chromium/ui/message_center/views/message_view.cc | 5 +- chromium/ui/message_center/views/message_view.h | 9 +- .../ui/message_center/views/message_view_factory.h | 6 +- .../views/notification_control_buttons_view.cc | 2 +- .../views/notification_header_view.cc | 10 +- .../views/notification_header_view.h | 16 +- .../message_center/views/notification_view_md.cc | 122 +- .../ui/message_center/views/notification_view_md.h | 31 +- .../views/notification_view_md_unittest.cc | 187 +- chromium/ui/message_center/views/padded_button.cc | 18 +- chromium/ui/message_center/views/padded_button.h | 3 +- .../views/proportional_image_view.cc | 2 +- chromium/ui/native_theme/DIR_METADATA | 3 - chromium/ui/native_theme/caption_style.cc | 10 +- chromium/ui/native_theme/caption_style.h | 6 +- chromium/ui/native_theme/caption_style_mac.mm | 4 +- chromium/ui/native_theme/caption_style_win.cc | 30 +- .../ui/native_theme/caption_style_win_unittest.cc | 2 +- chromium/ui/native_theme/common_theme.cc | 58 +- chromium/ui/native_theme/common_theme.h | 1 - chromium/ui/native_theme/native_theme.cc | 27 +- chromium/ui/native_theme/native_theme.h | 17 +- chromium/ui/native_theme/native_theme_base.cc | 33 +- chromium/ui/native_theme/native_theme_base.h | 15 +- chromium/ui/native_theme/native_theme_color_id.h | 14 +- chromium/ui/native_theme/native_theme_mac.h | 6 +- chromium/ui/native_theme/native_theme_mac.mm | 12 +- chromium/ui/native_theme/native_theme_unittest.cc | 1 - chromium/ui/native_theme/native_theme_utils.cc | 21 +- chromium/ui/native_theme/native_theme_utils.h | 2 +- chromium/ui/native_theme/native_theme_win.cc | 10 +- chromium/ui/native_theme/native_theme_win.h | 6 +- chromium/ui/native_theme/test_native_theme.cc | 2 +- chromium/ui/native_theme/test_native_theme.h | 2 +- chromium/ui/native_theme/themed_vector_icon.cc | 44 +- chromium/ui/native_theme/themed_vector_icon.h | 18 +- chromium/ui/ozone/BUILD.gn | 10 +- chromium/ui/ozone/common/base_keyboard_hook.cc | 39 + chromium/ui/ozone/common/base_keyboard_hook.h | 60 + chromium/ui/ozone/demo/gl_renderer.cc | 4 +- chromium/ui/ozone/demo/simple_renderer_factory.cc | 1 + chromium/ui/ozone/demo/skia/skia_gl_renderer.cc | 4 +- .../ui/ozone/demo/skia/skia_renderer_factory.cc | 1 + .../demo/skia/skia_surfaceless_gl_renderer.cc | 1 - chromium/ui/ozone/demo/software_renderer.cc | 1 + chromium/ui/ozone/demo/surfaceless_gl_renderer.cc | 5 +- chromium/ui/ozone/demo/vulkan_overlay_renderer.cc | 6 +- chromium/ui/ozone/demo/vulkan_renderer.cc | 5 +- .../ui/ozone/platform/cast/gl_ozone_egl_cast.cc | 1 + .../ui/ozone/platform/cast/ozone_platform_cast.cc | 1 + .../ui/ozone/platform/cast/ozone_platform_cast.h | 6 +- .../ui/ozone/platform/cast/surface_factory_cast.cc | 2 +- .../ui/ozone/platform/cast/surface_factory_cast.h | 2 +- .../ozone/platform/drm/gpu/crtc_commit_request.cc | 2 + .../ui/ozone/platform/drm/gpu/crtc_controller.h | 1 - chromium/ui/ozone/platform/drm/gpu/drm_device.cc | 6 +- .../ozone/platform/drm/gpu/drm_display_unittest.cc | 2 +- .../ui/ozone/platform/drm/gpu/drm_framebuffer.h | 6 +- .../ozone/platform/drm/gpu/drm_overlay_manager.cc | 15 +- .../drm/gpu/drm_overlay_validator_unittest.cc | 11 +- chromium/ui/ozone/platform/drm/gpu/drm_thread.cc | 6 +- chromium/ui/ozone/platform/drm/gpu/drm_window.cc | 11 +- chromium/ui/ozone/platform/drm/gpu/drm_window.h | 5 +- .../ozone/platform/drm/gpu/drm_window_unittest.cc | 3 +- .../ozone/platform/drm/gpu/gbm_overlay_surface.cc | 3 +- .../ozone/platform/drm/gpu/gbm_overlay_surface.h | 9 +- chromium/ui/ozone/platform/drm/gpu/gbm_pixmap.h | 6 +- .../ozone/platform/drm/gpu/gbm_surface_factory.cc | 5 +- .../ozone/platform/drm/gpu/gbm_surface_factory.h | 5 +- .../ui/ozone/platform/drm/gpu/gbm_surfaceless.cc | 7 +- .../ui/ozone/platform/drm/gpu/gbm_surfaceless.h | 4 +- .../drm/gpu/hardware_display_controller.cc | 64 +- .../platform/drm/gpu/hardware_display_controller.h | 16 +- .../gpu/hardware_display_controller_unittest.cc | 351 ++-- .../drm/gpu/hardware_display_plane_manager.cc | 10 +- .../drm/gpu/hardware_display_plane_manager.h | 8 +- .../gpu/hardware_display_plane_manager_atomic.cc | 27 +- .../gpu/hardware_display_plane_manager_atomic.h | 3 +- .../gpu/hardware_display_plane_manager_legacy.cc | 2 +- .../gpu/hardware_display_plane_manager_legacy.h | 7 +- .../gpu/hardware_display_plane_manager_unittest.cc | 22 +- .../ui/ozone/platform/drm/gpu/mock_drm_device.cc | 35 +- .../ui/ozone/platform/drm/gpu/mock_drm_device.h | 10 + .../ui/ozone/platform/drm/gpu/page_flip_request.h | 1 - .../ui/ozone/platform/drm/gpu/screen_manager.cc | 163 +- .../ui/ozone/platform/drm/gpu/screen_manager.h | 26 +- .../platform/drm/gpu/screen_manager_unittest.cc | 270 ++- chromium/ui/ozone/platform/drm/host/drm_cursor.cc | 22 +- chromium/ui/ozone/platform/drm/host/drm_cursor.h | 9 +- .../platform/drm/host/drm_device_connector.cc | 21 +- .../ozone/platform/drm/host/drm_device_connector.h | 3 +- .../ui/ozone/platform/drm/host/drm_window_host.cc | 7 +- .../ui/ozone/platform/drm/host/drm_window_host.h | 2 +- .../ui/ozone/platform/drm/host/host_drm_device.cc | 7 +- .../ui/ozone/platform/drm/host/host_drm_device.h | 2 +- .../ui/ozone/platform/drm/ozone_platform_drm.cc | 5 +- chromium/ui/ozone/platform/headless/BUILD.gn | 6 - chromium/ui/ozone/platform/headless/DEPS | 1 - .../platform/headless/headless_surface_factory.cc | 3 +- .../platform/headless/headless_surface_factory.h | 2 +- .../platform/headless/headless_window_manager.h | 3 - .../platform/headless/ozone_platform_headless.cc | 10 - chromium/ui/ozone/platform/scenic/safe_presenter.h | 2 - .../ui/ozone/platform/scenic/scenic_gpu_host.cc | 17 +- .../ui/ozone/platform/scenic/scenic_gpu_host.h | 2 +- chromium/ui/ozone/platform/scenic/scenic_screen.cc | 23 +- chromium/ui/ozone/platform/scenic/scenic_screen.h | 1 - .../platform/scenic/scenic_surface_factory.cc | 11 +- .../ozone/platform/scenic/scenic_surface_factory.h | 5 +- chromium/ui/ozone/platform/scenic/scenic_window.cc | 36 +- chromium/ui/ozone/platform/scenic/scenic_window.h | 16 +- .../platform/scenic/sysmem_buffer_collection.cc | 17 +- .../platform/scenic/sysmem_buffer_collection.h | 5 +- .../ozone/platform/scenic/sysmem_buffer_manager.cc | 18 +- .../ozone/platform/scenic/sysmem_buffer_manager.h | 1 - .../scenic/vulkan_implementation_scenic.cc | 20 +- .../platform/scenic/vulkan_implementation_scenic.h | 3 +- chromium/ui/ozone/platform/wayland/BUILD.gn | 34 +- chromium/ui/ozone/platform/wayland/DEPS | 3 +- chromium/ui/ozone/platform/wayland/OWNERS | 1 + .../ui/ozone/platform/wayland/common/data_util.cc | 11 + .../platform/wayland/common/wayland_object.cc | 28 + .../ozone/platform/wayland/common/wayland_object.h | 44 + .../ozone/platform/wayland/common/wayland_util.cc | 5 - .../ozone/platform/wayland/common/wayland_util.h | 3 - .../wayland/emulate/wayland_input_emulate.cc | 5 +- .../platform/wayland/gpu/gbm_pixmap_wayland.cc | 50 +- .../platform/wayland/gpu/gbm_pixmap_wayland.h | 5 + .../wayland/gpu/gbm_surfaceless_wayland.cc | 24 +- .../platform/wayland/gpu/gbm_surfaceless_wayland.h | 7 +- .../wayland/gpu/gl_surface_egl_readback_wayland.cc | 4 +- .../wayland/gpu/gl_surface_egl_readback_wayland.h | 3 +- .../wayland/gpu/wayland_buffer_manager_gpu.cc | 11 +- .../wayland/gpu/wayland_buffer_manager_gpu.h | 6 +- .../platform/wayland/gpu/wayland_canvas_surface.cc | 4 +- .../platform/wayland/gpu/wayland_canvas_surface.h | 3 +- .../wayland/gpu/wayland_overlay_manager.cc | 4 +- .../wayland/gpu/wayland_surface_factory.cc | 8 +- .../platform/wayland/gpu/wayland_surface_factory.h | 5 +- .../gpu/wayland_surface_factory_unittest.cc | 24 +- .../platform/wayland/gpu/wayland_surface_gpu.h | 5 +- chromium/ui/ozone/platform/wayland/host/DEPS | 4 +- .../wayland/host/gtk_primary_selection_device.cc | 6 +- .../wayland/host/gtk_primary_selection_device.h | 3 - .../ui/ozone/platform/wayland/host/gtk_shell1.cc | 23 + .../ui/ozone/platform/wayland/host/gtk_shell1.h | 32 + .../ui/ozone/platform/wayland/host/gtk_surface1.cc | 21 + .../ui/ozone/platform/wayland/host/gtk_surface1.h | 28 + .../wayland/host/gtk_ui_delegate_wayland.cc | 47 - .../wayland/host/gtk_ui_delegate_wayland.h | 33 - .../wayland/host/linux_ui_delegate_wayland.cc | 52 + .../wayland/host/linux_ui_delegate_wayland.h | 33 + .../platform/wayland/host/proxy/wayland_proxy.h | 8 +- .../wayland/host/proxy/wayland_proxy_impl.cc | 8 + .../wayland/host/proxy/wayland_proxy_impl.h | 2 + .../platform/wayland/host/shell_popup_wrapper.cc | 70 +- .../platform/wayland/host/shell_popup_wrapper.h | 19 +- .../host/wayland_buffer_manager_connector.cc | 51 +- .../host/wayland_buffer_manager_connector.h | 6 +- .../wayland/host/wayland_buffer_manager_host.cc | 39 +- .../wayland/host/wayland_buffer_manager_host.h | 3 +- .../platform/wayland/host/wayland_clipboard.cc | 57 +- .../platform/wayland/host/wayland_clipboard.h | 4 +- .../wayland/host/wayland_clipboard_unittest.cc | 40 +- .../platform/wayland/host/wayland_connection.cc | 218 +- .../platform/wayland/host/wayland_connection.h | 56 +- .../wayland/host/wayland_connection_unittest.cc | 7 +- .../ozone/platform/wayland/host/wayland_cursor.cc | 7 +- .../wayland/host/wayland_cursor_factory.cc | 8 +- .../platform/wayland/host/wayland_cursor_factory.h | 3 +- .../host/wayland_cursor_factory_unittest.cc | 107 +- .../platform/wayland/host/wayland_data_device.cc | 4 +- .../wayland/host/wayland_data_device_base.cc | 3 +- .../wayland/host/wayland_data_drag_controller.cc | 41 +- .../host/wayland_data_drag_controller_unittest.cc | 84 +- .../platform/wayland/host/wayland_data_source.cc | 2 +- .../ui/ozone/platform/wayland/host/wayland_drm.cc | 4 +- .../platform/wayland/host/wayland_event_source.cc | 94 +- .../platform/wayland/host/wayland_event_source.h | 43 +- .../wayland/host/wayland_event_source_unittest.cc | 7 +- .../platform/wayland/host/wayland_event_watcher.cc | 152 +- .../platform/wayland/host/wayland_event_watcher.h | 50 +- .../wayland/host/wayland_input_method_context.cc | 14 +- .../host/wayland_input_method_context_unittest.cc | 7 +- .../platform/wayland/host/wayland_keyboard.cc | 2 +- .../wayland/host/wayland_keyboard_unittest.cc | 7 +- .../ozone/platform/wayland/host/wayland_output.h | 2 +- .../ozone/platform/wayland/host/wayland_pointer.cc | 7 +- .../ozone/platform/wayland/host/wayland_pointer.h | 5 +- .../wayland/host/wayland_pointer_unittest.cc | 62 +- .../ozone/platform/wayland/host/wayland_popup.cc | 65 +- .../ui/ozone/platform/wayland/host/wayland_popup.h | 3 + .../ozone/platform/wayland/host/wayland_screen.h | 6 +- .../wayland/host/wayland_screen_unittest.cc | 14 +- .../ui/ozone/platform/wayland/host/wayland_shm.h | 1 - .../platform/wayland/host/wayland_shm_buffer.h | 3 +- .../ozone/platform/wayland/host/wayland_surface.cc | 7 +- .../wayland/host/wayland_toplevel_window.cc | 66 +- .../wayland/host/wayland_toplevel_window.h | 21 +- .../wayland/host/wayland_touch_unittest.cc | 7 +- .../ozone/platform/wayland/host/wayland_window.cc | 155 +- .../ozone/platform/wayland/host/wayland_window.h | 26 +- .../wayland/host/wayland_window_drag_controller.cc | 6 +- .../wayland_window_drag_controller_unittest.cc | 74 +- .../wayland/host/wayland_window_factory.cc | 6 +- .../host/wayland_window_manager_unittests.cc | 8 +- .../wayland/host/wayland_window_unittest.cc | 285 ++- .../platform/wayland/host/wayland_zaura_shell.h | 1 - .../wayland/host/wayland_zaura_shell_unittest.cc | 4 +- .../wayland/host/wayland_zcr_cursor_shapes.cc | 8 +- .../wayland/host/wayland_zcr_cursor_shapes.h | 4 +- .../wayland/host/wayland_zwp_linux_dmabuf.cc | 6 +- .../wayland/host/wayland_zwp_linux_dmabuf.h | 4 +- .../wayland/host/wayland_zwp_pointer_gestures.cc | 100 + .../wayland/host/wayland_zwp_pointer_gestures.h | 79 + .../wayland/host/xdg_popup_wrapper_impl.cc | 11 +- .../wayland/host/xdg_surface_wrapper_impl.h | 1 - .../wayland/host/xdg_toplevel_wrapper_impl.h | 2 +- .../wayland/host/zwp_primary_selection_device.cc | 6 +- .../wayland/host/zwp_primary_selection_device.h | 6 +- .../host/zwp_primary_selection_device_manager.h | 6 +- .../wayland/host/zwp_primary_selection_offer.h | 6 +- .../wayland/host/zxdg_popup_v6_wrapper_impl.cc | 11 +- .../wayland/host/zxdg_surface_v6_wrapper_impl.h | 1 - .../platform/wayland/ozone_platform_wayland.cc | 22 +- .../platform/wayland/ozone_platform_wayland.h | 6 +- .../ui/ozone/platform/wayland/test/mock_surface.h | 2 - .../ozone/platform/wayland/test/test_data_offer.cc | 3 +- .../ui/ozone/platform/wayland/test/test_output.cc | 2 +- .../ui/ozone/platform/wayland/test/test_output.h | 7 +- .../platform/wayland/test/test_subcompositor.h | 1 - .../ozone/platform/wayland/test/test_subsurface.h | 2 - .../wayland/test/test_wayland_server_thread.cc | 10 +- .../wayland/test/test_wayland_server_thread.h | 13 +- .../ui/ozone/platform/wayland/test/wayland_test.cc | 4 +- .../ui/ozone/platform/wayland/test/wayland_test.h | 5 +- .../wayland/wayland_buffer_manager_unittest.cc | 105 +- .../platform/windows/windows_surface_factory.h | 1 - .../platform/windows/windows_window_manager.h | 3 - chromium/ui/ozone/platform/x11/BUILD.gn | 7 +- chromium/ui/ozone/platform/x11/DEPS | 2 - .../ui/ozone/platform/x11/gl_egl_utility_x11.cc | 9 - .../ui/ozone/platform/x11/gl_egl_utility_x11.h | 3 - .../platform/x11/gl_surface_egl_readback_x11.cc | 1 + .../ui/ozone/platform/x11/ozone_platform_x11.cc | 61 +- .../ui/ozone/platform/x11/x11_clipboard_ozone.cc | 10 +- .../ui/ozone/platform/x11/x11_clipboard_ozone.h | 7 +- .../ozone/platform/x11/x11_keyboard_hook_ozone.cc | 24 + .../ozone/platform/x11/x11_keyboard_hook_ozone.h | 29 + chromium/ui/ozone/platform/x11/x11_screen_ozone.cc | 10 +- .../ui/ozone/platform/x11/x11_surface_factory.cc | 5 +- .../ui/ozone/platform/x11/x11_surface_factory.h | 5 +- chromium/ui/ozone/platform_constructor_list.h | 1 - .../ui/ozone/public/gpu_platform_support_host.cc | 2 +- .../ui/ozone/public/gpu_platform_support_host.h | 7 +- chromium/ui/ozone/public/input_controller.cc | 4 + chromium/ui/ozone/public/input_controller.h | 10 + .../mojom/wayland/wayland_buffer_manager.mojom | 4 +- .../ui/ozone/public/overlay_surface_candidate.h | 13 +- chromium/ui/ozone/public/ozone_gpu_test_helper.h | 6 +- chromium/ui/ozone/public/ozone_platform.cc | 17 +- chromium/ui/ozone/public/ozone_platform.h | 24 +- chromium/ui/ozone/public/platform_clipboard.h | 17 +- .../ui/ozone/public/platform_gl_egl_utility.cc | 9 - chromium/ui/ozone/public/platform_gl_egl_utility.h | 9 - chromium/ui/ozone/public/platform_keyboard_hook.cc | 18 + chromium/ui/ozone/public/platform_keyboard_hook.h | 36 + .../ui/ozone/public/platform_user_input_monitor.h | 1 - chromium/ui/ozone/public/surface_factory_ozone.cc | 5 +- chromium/ui/ozone/public/surface_factory_ozone.h | 7 +- .../ui/ozone/public/swap_completion_callback.h | 5 +- .../ui/ozone/test/mock_platform_window_delegate.h | 4 +- .../platform_window/extensions/wayland_extension.h | 5 + chromium/ui/platform_window/platform_window.cc | 2 +- chromium/ui/platform_window/platform_window.h | 19 +- .../ui/platform_window/platform_window_delegate.cc | 8 +- .../ui/platform_window/platform_window_delegate.h | 6 +- .../platform_window_init_properties.h | 4 +- chromium/ui/platform_window/stub/stub_window.cc | 4 +- chromium/ui/platform_window/stub/stub_window.h | 2 +- .../ui/platform_window/stub/stub_window_export.h | 2 +- chromium/ui/platform_window/win/win_window.cc | 18 +- chromium/ui/platform_window/win/win_window.h | 8 +- .../ui/platform_window/win/win_window_export.h | 3 +- chromium/ui/platform_window/wm/BUILD.gn | 2 +- chromium/ui/platform_window/wm/wm_drag_handler.h | 7 +- chromium/ui/platform_window/x11/BUILD.gn | 15 + .../x11/x11_topmost_window_finder.cc | 94 +- .../x11/x11_topmost_window_finder.h | 6 +- chromium/ui/platform_window/x11/x11_window.cc | 74 +- chromium/ui/platform_window/x11/x11_window.h | 21 +- .../ui/platform_window/x11/x11_window_export.h | 3 +- chromium/ui/resources/DIR_METADATA | 3 - .../common/pointers/sb_h_double_arrow.png | Bin 368 -> 0 bytes .../common/pointers/sb_h_double_arrow_big.png | Bin 827 -> 0 bytes .../common/pointers/sb_horizontal_double_arrow.png | Bin 0 -> 368 bytes .../pointers/sb_horizontal_double_arrow_big.png | Bin 0 -> 827 bytes .../common/pointers/sb_v_double_arrow.png | Bin 381 -> 0 bytes .../common/pointers/sb_v_double_arrow_big.png | Bin 800 -> 0 bytes .../common/pointers/sb_vertical_double_arrow.png | Bin 0 -> 381 bytes .../pointers/sb_vertical_double_arrow_big.png | Bin 0 -> 800 bytes .../common/pointers/sb_h_double_arrow.png | Bin 800 -> 0 bytes .../common/pointers/sb_horizontal_double_arrow.png | Bin 0 -> 800 bytes .../common/pointers/sb_v_double_arrow.png | Bin 808 -> 0 bytes .../common/pointers/sb_vertical_double_arrow.png | Bin 0 -> 808 bytes chromium/ui/resources/ui_resources.grd | 32 +- chromium/ui/shell_dialogs/select_file_dialog.h | 1 - .../ui/shell_dialogs/select_file_dialog_android.h | 7 +- .../ui/shell_dialogs/select_file_dialog_lacros.cc | 9 +- .../ui/shell_dialogs/select_file_dialog_win.cc | 1 + chromium/ui/shell_dialogs/selected_file_info.h | 6 +- chromium/ui/snapshot/screenshot_grabber.h | 1 - chromium/ui/snapshot/snapshot.h | 1 - chromium/ui/snapshot/snapshot_aura_unittest.cc | 3 + chromium/ui/snapshot/snapshot_export.h | 6 +- chromium/ui/snapshot/snapshot_win.cc | 1 + chromium/ui/strings/translations/ui_strings_az.xtb | 2 +- chromium/ui/strings/translations/ui_strings_gu.xtb | 2 +- chromium/ui/strings/translations/ui_strings_sv.xtb | 4 +- chromium/ui/strings/translations/ui_strings_ta.xtb | 4 +- chromium/ui/strings/translations/ui_strings_te.xtb | 2 +- chromium/ui/strings/translations/ui_strings_uz.xtb | 2 +- chromium/ui/strings/ui_strings.grd | 2 +- ...DS_CLIPBOARD_HISTORY_MENU_BITMAP_IMAGE.png.sha1 | 1 - .../IDS_CLIPBOARD_HISTORY_MENU_PNG_IMAGE.png.sha1 | 1 + chromium/ui/surface/DIR_METADATA | 3 - chromium/ui/touch_selection/DEPS | 1 + chromium/ui/touch_selection/selection_event_type.h | 6 +- .../touch_selection/touch_handle_drawable_aura.cc | 1 + .../ui/touch_selection/touch_handle_orientation.h | 6 +- .../ui/touch_selection/touch_selection_draggable.h | 6 +- chromium/ui/views/.clang-tidy | 1 + chromium/ui/views/BUILD.gn | 48 +- .../ui/views/accessibility/ax_aura_obj_cache.cc | 21 + .../ui/views/accessibility/ax_aura_obj_cache.h | 5 + .../accessibility/ax_aura_obj_cache_unittest.cc | 33 +- .../ui/views/accessibility/ax_event_manager.cc | 6 + chromium/ui/views/accessibility/ax_event_manager.h | 3 + .../ui/views/accessibility/ax_event_observer.h | 3 + chromium/ui/views/accessibility/ax_virtual_view.cc | 24 +- chromium/ui/views/accessibility/ax_virtual_view.h | 24 +- .../accessibility/ax_virtual_view_unittest.cc | 15 +- .../views/accessibility/ax_virtual_view_wrapper.cc | 14 +- .../views/accessibility/ax_virtual_view_wrapper.h | 2 +- .../views/accessibility/ax_window_obj_wrapper.cc | 4 +- .../ui/views/accessibility/test_list_grid_view.cc | 16 +- .../ui/views/accessibility/test_list_grid_view.h | 8 +- .../ui/views/accessibility/view_accessibility.cc | 6 +- .../ui/views/accessibility/view_accessibility.h | 6 +- .../view_ax_platform_node_delegate.cc | 26 +- .../accessibility/view_ax_platform_node_delegate.h | 12 +- ...ax_platform_node_delegate_auralinux_unittest.cc | 10 +- .../view_ax_platform_node_delegate_unittest.cc | 69 +- .../view_ax_platform_node_delegate_win.cc | 1 - .../view_ax_platform_node_delegate_win_unittest.cc | 2 +- .../views/accessibility/widget_ax_tree_id_map.cc | 3 +- chromium/ui/views/accessible_pane_view.cc | 2 +- chromium/ui/views/accessible_pane_view_unittest.cc | 2 +- .../ui/views/animation/animation_delegate_views.h | 1 - chromium/ui/views/animation/bounds_animator.h | 2 +- .../ui/views/animation/bubble_slide_animator.cc | 4 +- .../views/animation/compositor_animation_runner.h | 1 - .../views/animation/flood_fill_ink_drop_ripple.h | 2 - chromium/ui/views/animation/ink_drop.cc | 94 +- chromium/ui/views/animation/ink_drop.h | 50 +- .../ui/views/animation/ink_drop_event_handler.cc | 4 +- .../ui/views/animation/ink_drop_event_handler.h | 2 +- .../views/animation/ink_drop_highlight_observer.h | 1 - chromium/ui/views/animation/ink_drop_host_view.cc | 317 +-- chromium/ui/views/animation/ink_drop_host_view.h | 247 ++- .../views/animation/ink_drop_host_view_unittest.cc | 158 +- chromium/ui/views/animation/ink_drop_impl.cc | 28 +- chromium/ui/views/animation/ink_drop_impl.h | 51 +- .../ui/views/animation/ink_drop_impl_unittest.cc | 37 +- chromium/ui/views/animation/ink_drop_observer.h | 1 - .../ui/views/animation/ink_drop_ripple_observer.h | 1 - chromium/ui/views/animation/ink_drop_unittest.cc | 5 +- chromium/ui/views/animation/ink_drop_util.cc | 5 +- .../ui/views/animation/installable_ink_drop.cc | 21 +- chromium/ui/views/animation/installable_ink_drop.h | 12 +- .../animation/installable_ink_drop_animator.h | 2 +- .../views/animation/installable_ink_drop_painter.h | 2 +- .../animation/installable_ink_drop_unittest.cc | 8 +- chromium/ui/views/animation/scroll_animator.cc | 1 + chromium/ui/views/animation/scroll_animator.h | 3 + .../animation/slide_out_controller_unittest.cc | 5 +- chromium/ui/views/background.cc | 3 +- chromium/ui/views/border.cc | 1 + chromium/ui/views/border_unittest.cc | 1 + chromium/ui/views/bubble/bubble_border.cc | 87 +- chromium/ui/views/bubble/bubble_border.h | 39 +- .../ui/views/bubble/bubble_dialog_delegate_view.cc | 96 +- .../ui/views/bubble/bubble_dialog_delegate_view.h | 55 +- .../bubble/bubble_dialog_delegate_view_unittest.cc | 40 +- .../ui/views/bubble/bubble_dialog_model_host.cc | 49 +- chromium/ui/views/bubble/bubble_frame_view.cc | 46 +- chromium/ui/views/bubble/bubble_frame_view.h | 7 +- .../ui/views/bubble/footnote_container_view.cc | 13 +- chromium/ui/views/bubble/info_bubble.cc | 2 +- chromium/ui/views/bubble/tooltip_icon.cc | 11 +- chromium/ui/views/bubble/tooltip_icon.h | 1 + chromium/ui/views/button_drag_utils.cc | 1 + .../views/cocoa/drag_drop_client_mac_unittest.mm | 4 +- .../views/cocoa/native_widget_mac_ns_window_host.h | 7 + .../cocoa/native_widget_mac_ns_window_host.mm | 27 +- .../views/color_chooser/color_chooser_unittest.cc | 1 - .../ui/views/color_chooser/color_chooser_view.cc | 4 +- chromium/ui/views/controls/button/button.cc | 137 +- chromium/ui/views/controls/button/button.h | 19 +- .../ui/views/controls/button/button_controller.cc | 7 +- .../ui/views/controls/button/button_unittest.cc | 66 +- chromium/ui/views/controls/button/checkbox.cc | 42 +- chromium/ui/views/controls/button/checkbox.h | 3 - chromium/ui/views/controls/button/image_button.cc | 25 +- .../views/controls/button/image_button_factory.cc | 7 +- .../views/controls/button/image_button_factory.h | 2 +- .../button/image_button_factory_unittest.cc | 4 +- chromium/ui/views/controls/button/label_button.cc | 20 +- chromium/ui/views/controls/button/label_button.h | 4 +- .../ui/views/controls/button/label_button_label.cc | 8 +- .../ui/views/controls/button/label_button_label.h | 8 +- .../views/controls/button/label_button_unittest.cc | 36 +- .../ui/views/controls/button/md_text_button.cc | 42 +- chromium/ui/views/controls/button/md_text_button.h | 21 +- chromium/ui/views/controls/button/menu_button.cc | 3 +- chromium/ui/views/controls/button/menu_button.h | 2 +- .../controls/button/menu_button_controller.cc | 30 +- .../views/controls/button/menu_button_unittest.cc | 62 +- chromium/ui/views/controls/button/radio_button.cc | 19 +- chromium/ui/views/controls/button/radio_button.h | 1 + chromium/ui/views/controls/button/toggle_button.cc | 156 +- chromium/ui/views/controls/button/toggle_button.h | 40 +- .../controls/button/toggle_button_unittest.cc | 25 +- chromium/ui/views/controls/combobox/combobox.cc | 62 +- chromium/ui/views/controls/combobox/combobox.h | 2 + .../views/controls/combobox/combobox_unittest.cc | 8 +- chromium/ui/views/controls/dot_indicator.cc | 2 +- .../editable_combobox/editable_combobox.cc | 76 +- .../controls/editable_combobox/editable_combobox.h | 4 +- .../editable_combobox_unittest.cc | 100 +- chromium/ui/views/controls/focus_ring.cc | 79 +- chromium/ui/views/controls/focus_ring.h | 18 +- chromium/ui/views/controls/focusable_border.cc | 2 +- chromium/ui/views/controls/focusable_border.h | 6 +- .../ui/views/controls/highlight_path_generator.cc | 24 +- .../ui/views/controls/highlight_path_generator.h | 20 +- chromium/ui/views/controls/image_view.cc | 128 +- chromium/ui/views/controls/image_view.h | 38 +- chromium/ui/views/controls/label.cc | 57 +- chromium/ui/views/controls/label.h | 6 +- chromium/ui/views/controls/label_unittest.cc | 86 +- chromium/ui/views/controls/link.cc | 13 +- chromium/ui/views/controls/link.h | 4 +- chromium/ui/views/controls/link_unittest.cc | 1 - chromium/ui/views/controls/menu/menu_controller.cc | 38 +- chromium/ui/views/controls/menu/menu_controller.h | 6 +- .../controls/menu/menu_controller_unittest.cc | 23 +- chromium/ui/views/controls/menu/menu_host.cc | 17 +- chromium/ui/views/controls/menu/menu_host.h | 3 +- .../ui/views/controls/menu/menu_host_root_view.cc | 2 +- chromium/ui/views/controls/menu/menu_image_util.cc | 3 +- chromium/ui/views/controls/menu/menu_item_view.cc | 139 +- chromium/ui/views/controls/menu/menu_item_view.h | 32 +- .../views/controls/menu/menu_item_view_unittest.cc | 49 +- .../ui/views/controls/menu/menu_model_adapter.cc | 34 +- chromium/ui/views/controls/menu/menu_runner.cc | 13 +- .../controls/menu/menu_runner_cocoa_unittest.mm | 1 + .../ui/views/controls/menu/menu_runner_impl.cc | 5 +- .../views/controls/menu/menu_runner_impl_cocoa.mm | 5 +- .../ui/views/controls/menu/menu_runner_unittest.cc | 10 +- .../controls/menu/menu_scroll_view_container.cc | 25 +- chromium/ui/views/controls/menu/menu_separator.cc | 2 +- chromium/ui/views/controls/menu/menu_separator.h | 2 +- chromium/ui/views/controls/menu/submenu_view.cc | 2 +- chromium/ui/views/controls/message_box_view.cc | 24 +- .../ui/views/controls/message_box_view_unittest.cc | 16 +- .../ui/views/controls/native/native_view_host.cc | 2 +- .../views/controls/native/native_view_host_aura.cc | 5 +- .../views/controls/native/native_view_host_mac.mm | 1 + chromium/ui/views/controls/prefix_selector.cc | 9 +- chromium/ui/views/controls/prefix_selector.h | 5 +- chromium/ui/views/controls/progress_bar.cc | 7 +- chromium/ui/views/controls/progress_bar.h | 6 +- chromium/ui/views/controls/resize_area.cc | 3 +- chromium/ui/views/controls/resize_area.h | 1 - chromium/ui/views/controls/resize_area_unittest.cc | 6 +- chromium/ui/views/controls/scroll_view.cc | 190 +- chromium/ui/views/controls/scroll_view.h | 62 +- chromium/ui/views/controls/scroll_view_unittest.cc | 79 +- .../controls/scrollbar/base_scroll_bar_button.cc | 56 - .../controls/scrollbar/base_scroll_bar_button.h | 54 - .../scrollbar/base_scroll_bar_button_unittest.cc | 135 -- .../controls/scrollbar/base_scroll_bar_thumb.cc | 3 +- .../views/controls/scrollbar/cocoa_scroll_bar.mm | 3 +- .../views/controls/scrollbar/overlay_scroll_bar.cc | 4 +- chromium/ui/views/controls/scrollbar/scroll_bar.cc | 61 +- chromium/ui/views/controls/scrollbar/scroll_bar.h | 29 +- .../views/controls/scrollbar/scroll_bar_button.cc | 120 ++ .../views/controls/scrollbar/scroll_bar_button.h | 72 + .../scrollbar/scroll_bar_button_unittest.cc | 138 ++ .../views/controls/scrollbar/scroll_bar_views.cc | 107 +- .../ui/views/controls/scrollbar/scroll_bar_views.h | 2 +- .../views/controls/scrollbar/scrollbar_unittest.cc | 2 +- chromium/ui/views/controls/separator.cc | 6 +- chromium/ui/views/controls/separator.h | 5 +- chromium/ui/views/controls/separator_unittest.cc | 125 +- chromium/ui/views/controls/slider.cc | 5 +- chromium/ui/views/controls/slider_unittest.cc | 7 +- chromium/ui/views/controls/styled_label.cc | 8 +- chromium/ui/views/controls/styled_label.h | 16 +- .../ui/views/controls/styled_label_unittest.cc | 4 +- .../ui/views/controls/tabbed_pane/DIR_METADATA | 3 - .../ui/views/controls/tabbed_pane/tabbed_pane.cc | 25 +- chromium/ui/views/controls/table/table_header.cc | 3 +- chromium/ui/views/controls/table/table_header.h | 2 +- chromium/ui/views/controls/table/table_view.cc | 77 +- chromium/ui/views/controls/table/table_view.h | 36 +- .../ui/views/controls/table/table_view_unittest.cc | 36 +- chromium/ui/views/controls/textarea/textarea.cc | 2 +- .../views/controls/textarea/textarea_unittest.cc | 20 +- chromium/ui/views/controls/textfield/DIR_METADATA | 3 - chromium/ui/views/controls/textfield/textfield.cc | 111 +- chromium/ui/views/controls/textfield/textfield.h | 33 +- .../controls/textfield/textfield_model_unittest.cc | 642 +++--- .../views/controls/textfield/textfield_unittest.cc | 595 +++--- .../views/controls/textfield/textfield_unittest.h | 6 +- .../ui/views/controls/theme_tracking_image_view.cc | 2 +- chromium/ui/views/controls/throbber.cc | 2 +- chromium/ui/views/controls/tree/tree_view.cc | 37 +- chromium/ui/views/controls/tree/tree_view.h | 8 +- .../ui/views/controls/tree/tree_view_unittest.cc | 4 +- .../views_text_services_context_menu_base.cc | 9 +- .../views_text_services_context_menu_base.h | 2 +- .../ui/views/controls/webview/web_dialog_view.cc | 2 +- .../ui/views/controls/webview/web_dialog_view.h | 2 +- chromium/ui/views/controls/webview/webview.cc | 3 +- chromium/ui/views/corewm/DEPS | 4 +- chromium/ui/views/corewm/tooltip_aura.cc | 8 +- chromium/ui/views/corewm/tooltip_aura.h | 1 + chromium/ui/views/corewm/tooltip_controller.cc | 53 +- .../ui/views/corewm/tooltip_controller_unittest.cc | 263 ++- chromium/ui/views/corewm/tooltip_state_manager.cc | 13 +- chromium/ui/views/corewm/tooltip_state_manager.h | 10 +- chromium/ui/views/corewm/tooltip_win.h | 2 +- chromium/ui/views/debug/debugger_utils.cc | 6 +- chromium/ui/views/debug/debugger_utils.h | 4 +- chromium/ui/views/debug_utils.cc | 1 + chromium/ui/views/examples/BUILD.gn | 2 + chromium/ui/views/examples/animation_example.cc | 161 ++ chromium/ui/views/examples/animation_example.h | 27 + chromium/ui/views/examples/button_example.cc | 16 +- chromium/ui/views/examples/checkbox_example.cc | 1 - .../ui/views/examples/colored_dialog_example.cc | 2 +- chromium/ui/views/examples/create_examples.cc | 3 + chromium/ui/views/examples/create_examples.h | 2 - chromium/ui/views/examples/dialog_example.cc | 12 +- chromium/ui/views/examples/examples_main_proc.cc | 2 +- chromium/ui/views/examples/examples_window.cc | 1 + .../views/examples/examples_with_content_main.cc | 6 +- chromium/ui/views/examples/label_example.cc | 16 +- chromium/ui/views/examples/layout_example_base.cc | 15 +- .../views/examples/login_bubble_dialog_example.cc | 5 +- chromium/ui/views/examples/menu_example.cc | 1 + chromium/ui/views/examples/message_box_example.cc | 3 +- chromium/ui/views/examples/message_box_example.h | 1 - chromium/ui/views/examples/multiline_example.cc | 7 +- chromium/ui/views/examples/native_theme_example.cc | 40 +- chromium/ui/views/examples/radio_button_example.cc | 1 + chromium/ui/views/examples/scroll_view_example.cc | 1 - chromium/ui/views/examples/scroll_view_example.h | 1 - chromium/ui/views/examples/tabbed_pane_example.cc | 1 + chromium/ui/views/examples/text_example.cc | 34 +- chromium/ui/views/examples/text_example.h | 2 - chromium/ui/views/examples/textarea_example.cc | 18 +- chromium/ui/views/examples/textfield_example.h | 1 - .../ui/views/examples/toggle_button_example.cc | 1 - chromium/ui/views/focus/focus_manager.cc | 16 +- chromium/ui/views/focus/focus_manager.h | 8 + chromium/ui/views/focus/focus_manager_unittest.cc | 2 +- chromium/ui/views/focus/focus_search.cc | 2 +- .../ui/views/focus/focus_traversal_unittest.cc | 4 +- chromium/ui/views/interaction/OWNERS | 1 + .../ui/views/interaction/element_tracker_views.cc | 256 +++ .../ui/views/interaction/element_tracker_views.h | 97 + .../interaction/element_tracker_views_unittest.cc | 986 +++++++++ .../interaction/interaction_sequence_views.cc | 44 + .../views/interaction/interaction_sequence_views.h | 33 + .../interaction_sequence_views_unittest.cc | 618 ++++++ .../ui/views/layout/animating_layout_manager.cc | 30 +- .../layout/animating_layout_manager_unittest.cc | 82 +- chromium/ui/views/layout/box_layout_view.cc | 35 +- chromium/ui/views/layout/box_layout_view.h | 2 +- chromium/ui/views/layout/composite_layout_tests.cc | 6 +- chromium/ui/views/layout/flex_layout.cc | 32 +- chromium/ui/views/layout/flex_layout.h | 6 +- chromium/ui/views/layout/flex_layout_types.cc | 3 +- chromium/ui/views/layout/flex_layout_types.h | 2 +- chromium/ui/views/layout/flex_layout_unittest.cc | 22 +- chromium/ui/views/layout/flex_layout_view.cc | 30 +- chromium/ui/views/layout/flex_layout_view.h | 2 +- chromium/ui/views/layout/layout_manager_base.h | 26 +- .../views/layout/layout_manager_base_unittest.cc | 2 +- chromium/ui/views/layout/layout_provider.cc | 9 +- chromium/ui/views/layout/layout_provider.h | 13 +- chromium/ui/views/layout/layout_types.h | 5 +- chromium/ui/views/layout/normalized_geometry.h | 2 +- chromium/ui/views/linux_ui/linux_ui.cc | 12 +- chromium/ui/views/linux_ui/linux_ui.h | 2 +- chromium/ui/views/masked_targeter_delegate.cc | 1 + chromium/ui/views/metadata/metadata_cache.cc | 50 - chromium/ui/views/metadata/metadata_cache.h | 65 - .../ui/views/metadata/metadata_header_macros.h | 22 - chromium/ui/views/metadata/metadata_impl_macros.h | 81 - .../ui/views/metadata/metadata_macros_internal.h | 105 - chromium/ui/views/metadata/metadata_types.cc | 154 -- chromium/ui/views/metadata/metadata_types.h | 191 -- chromium/ui/views/metadata/metadata_unittest.cc | 254 --- chromium/ui/views/metadata/property_metadata.h | 204 -- chromium/ui/views/metadata/type_conversion.cc | 640 +----- chromium/ui/views/metadata/type_conversion.h | 355 +--- .../ui/views/metadata/type_conversion_unittest.cc | 259 +-- chromium/ui/views/metadata/view_factory.h | 25 +- chromium/ui/views/metadata/view_factory_internal.h | 5 +- chromium/ui/views/selection_controller.cc | 13 +- chromium/ui/views/style/platform_style.cc | 5 +- chromium/ui/views/style/platform_style.h | 4 - chromium/ui/views/style/platform_style_mac.mm | 1 - chromium/ui/views/style/typography_provider.cc | 4 +- .../touchui/touch_selection_controller_impl.cc | 16 +- .../touchui/touch_selection_menu_runner_views.h | 1 - .../ui/views/touchui/touch_selection_menu_views.cc | 2 +- chromium/ui/views/vector_icons/submenu_arrow.icon | 19 - chromium/ui/views/view.cc | 88 +- chromium/ui/views/view.h | 77 +- chromium/ui/views/view_class_properties.cc | 4 + chromium/ui/views/view_class_properties.h | 6 + chromium/ui/views/view_observer.h | 6 + chromium/ui/views/view_unittest.cc | 23 +- chromium/ui/views/view_unittest_mac.mm | 10 +- chromium/ui/views/view_utils.cc | 6 +- chromium/ui/views/view_utils.h | 6 +- chromium/ui/views/views_delegate.cc | 2 +- chromium/ui/views/views_delegate.h | 4 +- chromium/ui/views/views_features.cc | 10 - chromium/ui/views/views_features.h | 2 - chromium/ui/views/views_test_suite.h | 16 - .../views/widget/any_widget_observer_unittest.cc | 8 + .../views/widget/ax_native_widget_mac_unittest.mm | 13 +- .../desktop_aura/desktop_drag_drop_client_ozone.cc | 34 +- .../desktop_aura/desktop_drag_drop_client_ozone.h | 25 +- .../desktop_drag_drop_client_ozone_unittest.cc | 69 +- .../desktop_aura/desktop_drag_drop_client_win.cc | 15 +- .../desktop_aura/desktop_drag_drop_client_win.h | 15 +- .../desktop_aura/desktop_native_widget_aura.cc | 33 +- .../desktop_aura/desktop_native_widget_aura.h | 3 + .../ui/views/widget/desktop_aura/desktop_screen.cc | 24 - .../ui/views/widget/desktop_aura/desktop_screen.h | 8 +- .../widget/desktop_aura/desktop_screen_linux.cc | 6 +- .../widget/desktop_aura/desktop_screen_ozone.cc | 6 +- .../desktop_aura/desktop_screen_position_client.cc | 2 +- .../widget/desktop_aura/desktop_screen_win.cc | 6 +- .../widget/desktop_aura/desktop_screen_x11.cc | 12 +- .../views/widget/desktop_aura/desktop_screen_x11.h | 2 - .../desktop_aura/desktop_window_tree_host.cc | 3 + .../widget/desktop_aura/desktop_window_tree_host.h | 7 + .../desktop_aura/desktop_window_tree_host_linux.cc | 30 +- .../desktop_aura/desktop_window_tree_host_linux.h | 7 + .../desktop_window_tree_host_platform.cc | 100 +- .../desktop_window_tree_host_platform.h | 25 +- .../desktop_window_tree_host_platform_unittest.cc | 72 +- .../desktop_aura/desktop_window_tree_host_win.cc | 14 +- .../desktop_aura/desktop_window_tree_host_win.h | 2 +- .../widget/desktop_aura/window_shape_updater.cc | 80 - .../widget/desktop_aura/window_shape_updater.h | 49 - .../desktop_aura/x11_drag_drop_client_unittest.cc | 69 +- chromium/ui/views/widget/drop_helper.cc | 26 +- chromium/ui/views/widget/drop_helper.h | 11 +- chromium/ui/views/widget/native_widget_aura.cc | 38 +- chromium/ui/views/widget/native_widget_aura.h | 5 +- .../ui/views/widget/native_widget_aura_unittest.cc | 89 + chromium/ui/views/widget/native_widget_mac.h | 1 + chromium/ui/views/widget/native_widget_mac.mm | 18 +- .../widget/native_widget_mac_interactive_uitest.mm | 36 + .../ui/views/widget/native_widget_mac_unittest.mm | 101 +- chromium/ui/views/widget/native_widget_private.h | 1 + chromium/ui/views/widget/root_view.cc | 50 +- chromium/ui/views/widget/root_view.h | 10 +- chromium/ui/views/widget/root_view_unittest.cc | 98 +- chromium/ui/views/widget/tooltip_manager.h | 1 - chromium/ui/views/widget/widget.cc | 160 +- chromium/ui/views/widget/widget.h | 70 +- chromium/ui/views/widget/widget_delegate.cc | 2 +- chromium/ui/views/widget/widget_delegate.h | 4 +- chromium/ui/views/widget/widget_hwnd_utils.cc | 4 +- .../ui/views/widget/widget_interactive_uitest.cc | 49 +- chromium/ui/views/widget/widget_observer.h | 2 + chromium/ui/views/widget/widget_unittest.cc | 275 ++- chromium/ui/views/widget/widget_utils.h | 2 +- chromium/ui/views/widget/window_reorderer.cc | 1 + chromium/ui/views/win/fullscreen_handler.h | 1 - chromium/ui/views/win/hwnd_message_handler.cc | 41 +- chromium/ui/views/win/hwnd_message_handler.h | 13 +- chromium/ui/views/win/pen_event_processor.cc | 9 +- chromium/ui/views/win/pen_event_processor.h | 4 +- .../scoped_enable_unadjusted_mouse_events_win.cc | 1 + chromium/ui/views/window/client_view.cc | 4 +- chromium/ui/views/window/custom_frame_view.cc | 1 + .../ui/views/window/custom_frame_view_unittest.cc | 4 +- chromium/ui/views/window/dialog_client_view.cc | 4 +- chromium/ui/views/window/dialog_client_view.h | 1 - chromium/ui/views/window/dialog_delegate.cc | 4 +- chromium/ui/views/window/dialog_delegate.h | 8 +- .../ui/views/window/dialog_delegate_unittest.cc | 12 +- chromium/ui/views/window/frame_caption_button.cc | 97 +- chromium/ui/views/window/frame_caption_button.h | 13 +- chromium/ui/views/window/native_frame_view.cc | 2 +- chromium/ui/views/window/native_frame_view.h | 2 +- chromium/ui/views/window/non_client_view.cc | 62 +- chromium/ui/views/window/non_client_view.h | 33 +- .../ui/views/window/non_client_view_unittest.cc | 102 - .../views_content_client_main_parts.cc | 2 +- .../views_content_client_main_parts.h | 3 +- ...views_content_client_main_parts_desktop_aura.cc | 12 +- .../views_content_client_main_parts_mac.mm | 2 +- .../views_content_main_delegate.cc | 6 +- .../views_content_main_delegate.h | 2 +- chromium/ui/web_dialogs/web_dialog_ui.h | 2 - chromium/ui/webui/PLATFORM_OWNERS | 1 - chromium/ui/webui/mojo_bubble_web_ui_controller.h | 1 - chromium/ui/webui/resources/BUILD.gn | 135 +- chromium/ui/webui/resources/cr_components/BUILD.gn | 34 +- .../cr_components/chromeos/cellular_setup/BUILD.gn | 39 +- .../cellular_setup/activation_code_page.html | 137 +- .../cellular_setup/activation_code_page.js | 80 +- .../activation_verification_page.html | 40 + .../cellular_setup/activation_verification_page.js | 13 + .../chromeos/cellular_setup/base_page.html | 12 +- .../chromeos/cellular_setup/button_bar.html | 6 +- .../cellular_setup/cellular_eid_dialog.html | 71 + .../chromeos/cellular_setup/cellular_eid_dialog.js | 120 ++ .../cellular_setup/cellular_eid_popup.html | 96 - .../chromeos/cellular_setup/cellular_eid_popup.js | 117 -- .../chromeos/cellular_setup/cellular_setup.html | 1 + .../chromeos/cellular_setup/cellular_setup.js | 15 + .../cellular_setup/cellular_setup_icons.html | 1 + .../cellular_setup/confirmation_code_page.html | 8 +- .../chromeos/cellular_setup/esim_flow_ui.html | 19 +- .../chromeos/cellular_setup/esim_flow_ui.js | 60 +- .../chromeos/cellular_setup/esim_manager_utils.js | 93 +- .../chromeos/cellular_setup/final_page.html | 1 + .../chromeos/cellular_setup/psim_flow_ui.html | 9 +- .../chromeos/cellular_setup/psim_flow_ui.js | 28 +- .../cellular_setup/setup_loading_page.html | 42 +- .../chromeos/cellular_setup/setup_loading_page.js | 89 +- .../cr_components/chromeos/network/BUILD.gn | 3 + .../chromeos/network/cellular_locked.svg | 3 + .../chromeos/network/cellular_utils.js | 34 +- .../chromeos/network/network_apnlist.html | 1 - .../chromeos/network/network_apnlist.js | 19 +- .../chromeos/network/network_config.js | 1 + .../chromeos/network/network_icon.html | 15 + .../cr_components/chromeos/network/network_icon.js | 15 + .../chromeos/network/network_ip_config.html | 28 +- .../chromeos/network/network_ip_config.js | 43 + .../chromeos/network/network_list_item.html | 57 +- .../chromeos/network/network_list_item.js | 159 +- .../chromeos/network/network_password_input.html | 41 +- .../chromeos/network/network_password_input.js | 22 + .../chromeos/network/network_property_list_mojo.js | 4 + .../chromeos/network/network_select.js | 43 - .../chromeos/network/network_siminfo.html | 104 +- .../chromeos/network/network_siminfo.js | 130 +- .../cr_components/chromeos/network/onc_mojo.js | 3 +- .../chromeos/network/sim_lock_dialogs.html | 131 +- .../chromeos/network/sim_lock_dialogs.js | 174 +- .../cr_components/chromeos/os_cr_components.gni | 8 +- .../cr_components/chromeos/quick_unlock/BUILD.gn | 6 +- .../chromeos/quick_unlock/DIR_METADATA | 11 - .../cr_components/chromeos/smb_shares/OWNERS | 2 +- .../cr_components/customize_themes/OWNERS | 1 - .../customize_themes/customize_themes.html | 1 + .../cr_components/managed_footnote/BUILD.gn | 29 +- .../managed_footnote/managed_footnote.d.ts | 17 + .../managed_footnote/managed_footnote.html | 15 - .../managed_footnote/managed_footnote.js | 15 +- chromium/ui/webui/resources/cr_elements/BUILD.gn | 38 +- .../cr_action_menu/cr_action_menu.m.d.ts | 58 + .../cr_elements/cr_actionable_row_style.html | 15 +- .../resources/cr_elements/cr_button/cr_button.html | 1 + .../cr_elements/cr_button/cr_button.m.d.ts | 19 + .../cr_elements/cr_checkbox/cr_checkbox.m.d.ts | 22 + .../cr_container_shadow_behavior.m.d.ts | 12 + .../resources/cr_elements/cr_dialog/cr_dialog.html | 8 +- .../cr_elements/cr_dialog/cr_dialog.m.d.ts | 32 + .../resources/cr_elements/cr_drawer/cr_drawer.d.ts | 26 + .../webui/resources/cr_elements/cr_grid/cr_grid.js | 9 +- .../cr_icon_button/cr_icon_button.m.d.ts | 20 + .../resources/cr_elements/cr_input/cr_input.html | 3 +- .../resources/cr_elements/cr_input/cr_input.js | 5 + .../resources/cr_elements/cr_input/cr_input.m.d.ts | 42 + .../cr_lazy_render/cr_lazy_render.m.d.ts | 18 + .../cr_profile_avatar_selector/BUILD.gn | 67 +- .../cr_profile_avatar_selector.html | 15 - .../cr_profile_avatar_selector.js | 17 +- .../cr_profile_avatar_selector_grid.html | 10 - .../cr_profile_avatar_selector_grid.js | 8 +- .../cr_elements/cr_radio_group/cr_radio_group.js | 4 +- .../cr_search_field/cr_search_field_behavior.d.ts | 20 + .../webui/resources/cr_elements/cr_slider/OWNERS | 1 - .../resources/cr_elements/cr_slider/cr_slider.js | 4 +- .../cr_elements/cr_splitter/cr_splitter.js | 8 +- .../resources/cr_elements/cr_tabs/cr_tabs.html | 27 + .../webui/resources/cr_elements/cr_tabs/cr_tabs.js | 18 + .../resources/cr_elements/cr_toast/cr_toast.m.d.ts | 20 + .../resources/cr_elements/cr_toolbar/cr_toolbar.js | 134 +- .../cr_toolbar/cr_toolbar_search_field.d.ts | 30 + .../cr_toolbar/cr_toolbar_search_field.js | 164 +- .../cr_toolbar/cr_toolbar_selection_overlay.js | 106 +- .../cr_view_manager/cr_view_manager.d.ts | 19 + .../cr_elements/find_shortcut_behavior.d.ts | 17 + .../cr_elements/find_shortcut_behavior.js | 25 + .../resources/cr_elements/mouse_hoverable_mixin.js | 50 + .../resources/cr_elements/mwb_shared_style.html | 2 +- chromium/ui/webui/resources/css/text_defaults.css | 5 - .../ui/webui/resources/css/text_defaults_md.css | 5 - chromium/ui/webui/resources/html/BUILD.gn | 1 - .../resources/html/search_highlight_utils.html | 2 - chromium/ui/webui/resources/images/BUILD.gn | 4 +- .../ui/webui/resources/images/incognito_icon.svg | 1 + chromium/ui/webui/resources/js/BUILD.gn | 81 +- .../resources/js/cr/ui/context_menu_handler.js | 4 +- chromium/ui/webui/resources/js/cr/ui/focus_grid.js | 4 +- chromium/ui/webui/resources/js/cr/ui/focus_row.js | 4 +- .../resources/js/cr/ui/focus_row_behavior.m.d.ts | 22 + .../ui/webui/resources/js/cr/ui/menu_button.js | 2 +- .../ui/webui/resources/js/cr/ui/store_client.js | 27 + chromium/ui/webui/resources/js/event_tracker.js | 143 +- chromium/ui/webui/resources/js/i18n_behavior.js | 66 +- .../ui/webui/resources/js/i18n_behavior.m.d.ts | 21 + chromium/ui/webui/resources/js/ios/web_ui.js | 79 + .../resources/js/list_property_update_behavior.js | 14 +- chromium/ui/webui/resources/js/load_time_data.js | 243 --- chromium/ui/webui/resources/js/load_time_data.m.js | 214 ++ .../ui/webui/resources/js/parse_html_subset.js | 26 +- .../webui/resources/js/search_highlight_utils.js | 319 ++- .../webui/resources/js/web_ui_listener_behavior.js | 9 + .../resources/js/web_ui_listener_behavior.m.d.ts | 13 + chromium/ui/webui/resources/tools/js_modulizer.gni | 31 +- .../ui/webui/resources/tools/js_unmodulizer.gni | 26 + .../ui/webui/resources/tools/js_unmodulizer.py | 68 + .../ui/webui/untrusted_web_ui_browsertest_util.cc | 13 +- .../ui/webui/untrusted_web_ui_browsertest_util.h | 11 +- chromium/ui/wm/DIR_METADATA | 3 - chromium/ui/wm/core/capture_controller_unittest.cc | 7 +- chromium/ui/wm/core/compound_event_filter.cc | 33 +- chromium/ui/wm/core/compound_event_filter.h | 4 + chromium/ui/wm/core/focus_controller.cc | 4 +- chromium/ui/wm/core/focus_controller.h | 4 +- chromium/ui/wm/core/focus_controller_unittest.cc | 4 +- chromium/ui/wm/core/native_cursor_manager.h | 1 - chromium/ui/wm/core/shadow_types.cc | 2 +- .../wm/core/transient_window_manager_unittest.cc | 2 +- .../transient_window_stacking_client_unittest.cc | 1 + chromium/ui/wm/core/visibility_controller.cc | 4 +- chromium/ui/wm/core/window_animations.cc | 7 +- chromium/ui/wm/core/window_animations.h | 1 - 1778 files changed, 39190 insertions(+), 21074 deletions(-) create mode 100644 chromium/ui/accessibility/ax_hypertext.cc create mode 100644 chromium/ui/accessibility/ax_hypertext.h create mode 100644 chromium/ui/accessibility/platform/inspect/ax_inspect_scenario_unittest.cc create mode 100644 chromium/ui/accessibility/platform/inspect/ax_inspect_utils.cc create mode 100644 chromium/ui/accessibility/platform/inspect/ax_inspect_utils.h create mode 100644 chromium/ui/accessibility/platform/inspect/ax_inspect_utils_unittest.cc create mode 100644 chromium/ui/accessibility/platform/inspect/ax_tree_indexer.h delete mode 100644 chromium/ui/android/junit/src/org/chromium/ui/base/DIR_METADATA create mode 100644 chromium/ui/base/accelerators/OWNERS create mode 100644 chromium/ui/base/accelerators/accelerator_map.h create mode 100644 chromium/ui/base/accelerators/accelerator_map_unittest.cc delete mode 100644 chromium/ui/base/cocoa/DIR_METADATA delete mode 100644 chromium/ui/base/cocoa/focus_window_set.h delete mode 100644 chromium/ui/base/cocoa/focus_window_set.mm delete mode 100644 chromium/ui/base/cursor/cursor_aura.cc create mode 100644 chromium/ui/base/cursor/platform_cursor.h delete mode 100644 chromium/ui/base/dragdrop/os_exchange_data_provider_x11_unittest.cc create mode 100644 chromium/ui/base/idle/idle_stub.cc create mode 100644 chromium/ui/base/ime/grammar_fragment.cc create mode 100644 chromium/ui/base/ime/grammar_fragment.h create mode 100644 chromium/ui/base/interaction/OWNERS create mode 100644 chromium/ui/base/interaction/README.md create mode 100644 chromium/ui/base/interaction/element_identifier.cc create mode 100644 chromium/ui/base/interaction/element_identifier.h create mode 100644 chromium/ui/base/interaction/element_test_util.cc create mode 100644 chromium/ui/base/interaction/element_test_util.h create mode 100644 chromium/ui/base/interaction/element_tracker.cc create mode 100644 chromium/ui/base/interaction/element_tracker.h create mode 100644 chromium/ui/base/interaction/element_tracker_unittest.cc create mode 100644 chromium/ui/base/interaction/expect_call_in_scope.h create mode 100644 chromium/ui/base/interaction/interaction_sequence.cc create mode 100644 chromium/ui/base/interaction/interaction_sequence.h create mode 100644 chromium/ui/base/interaction/interaction_sequence_unittest.cc create mode 100644 chromium/ui/base/linux/linux_ui_delegate.cc create mode 100644 chromium/ui/base/linux/linux_ui_delegate.h create mode 100644 chromium/ui/base/metadata/OWNERS create mode 100644 chromium/ui/base/metadata/base_type_conversion.cc create mode 100644 chromium/ui/base/metadata/base_type_conversion.h create mode 100644 chromium/ui/base/metadata/base_type_conversion_unittest.cc create mode 100644 chromium/ui/base/metadata/metadata_cache.cc create mode 100644 chromium/ui/base/metadata/metadata_cache.h create mode 100644 chromium/ui/base/metadata/metadata_header_macros.h create mode 100644 chromium/ui/base/metadata/metadata_impl_macros.h create mode 100644 chromium/ui/base/metadata/metadata_macros_internal.h create mode 100644 chromium/ui/base/metadata/metadata_types.cc create mode 100644 chromium/ui/base/metadata/metadata_types.h create mode 100644 chromium/ui/base/metadata/metadata_unittest.cc create mode 100644 chromium/ui/base/metadata/property_metadata.h create mode 100644 chromium/ui/base/models/simple_combobox_model_unittest.cc create mode 100644 chromium/ui/base/x/visual_picker_glx.cc create mode 100644 chromium/ui/base/x/visual_picker_glx.h create mode 100644 chromium/ui/base/x/x11_keyboard_hook.cc create mode 100644 chromium/ui/base/x/x11_keyboard_hook.h create mode 100644 chromium/ui/base/x/x11_screensaver.cc create mode 100644 chromium/ui/base/x/x11_screensaver.h delete mode 100644 chromium/ui/base/x/x11_screensaver_window_finder.cc delete mode 100644 chromium/ui/base/x/x11_screensaver_window_finder.h delete mode 100644 chromium/ui/color/DIR_METADATA create mode 100644 chromium/ui/display/mojom/display_list.mojom create mode 100644 chromium/ui/display/mojom/display_list_mojom_traits.cc create mode 100644 chromium/ui/display/mojom/display_list_mojom_traits.h create mode 100644 chromium/ui/display/mojom/display_list_mojom_traits_unittest.cc create mode 100644 chromium/ui/events/devices/microphone_mute_switch_monitor.cc create mode 100644 chromium/ui/events/devices/microphone_mute_switch_monitor.h create mode 100644 chromium/ui/events/keycodes/keyboard_code_conversion_fuchsia.cc create mode 100644 chromium/ui/events/keycodes/keyboard_code_conversion_fuchsia.h create mode 100644 chromium/ui/events/keycodes/keyboard_code_conversion_fuchsia_unittest.cc create mode 100644 chromium/ui/events/ozone/evdev/microphone_mute_switch_event_converter_evdev.cc create mode 100644 chromium/ui/events/ozone/evdev/microphone_mute_switch_event_converter_evdev.h create mode 100644 chromium/ui/events/ozone/evdev/microphone_mute_switch_event_converter_evdev_unittest.cc create mode 100644 chromium/ui/events/ozone/evdev/switches.cc create mode 100644 chromium/ui/events/ozone/evdev/switches.h create mode 100644 chromium/ui/events/ozone/layout/keyboard_layout_engine_test_utils.cc create mode 100644 chromium/ui/events/ozone/layout/keyboard_layout_engine_test_utils.h delete mode 100644 chromium/ui/file_manager/file_manager/cws_widget/BUILD.gn create mode 100644 chromium/ui/gfx/hdr_static_metadata.cc create mode 100644 chromium/ui/gfx/hdr_static_metadata.h create mode 100644 chromium/ui/gfx/mojom/delegated_ink_point_renderer.mojom create mode 100644 chromium/ui/gfx/vector_icon_utils.cc create mode 100644 chromium/ui/gfx/vector_icon_utils.h create mode 100644 chromium/ui/gl/delegated_ink_point_renderer_gpu_unittest.cc delete mode 100644 chromium/ui/gl/gl_visual_picker_glx.cc delete mode 100644 chromium/ui/gl/gl_visual_picker_glx.h delete mode 100644 chromium/ui/gtk/gtk_ui_delegate.cc delete mode 100644 chromium/ui/gtk/gtk_ui_delegate.h create mode 100644 chromium/ui/gtk/gtk_ui_factory.cc create mode 100644 chromium/ui/gtk/gtk_ui_factory.h create mode 100644 chromium/ui/gtk/gtk_ui_platform.h delete mode 100644 chromium/ui/gtk/wayland/BUILD.gn delete mode 100644 chromium/ui/gtk/wayland/gtk_ui_delegate_wayland_base.cc delete mode 100644 chromium/ui/gtk/wayland/gtk_ui_delegate_wayland_base.h create mode 100644 chromium/ui/gtk/wayland/gtk_ui_platform_wayland.cc create mode 100644 chromium/ui/gtk/wayland/gtk_ui_platform_wayland.h delete mode 100644 chromium/ui/gtk/x/BUILD.gn delete mode 100644 chromium/ui/gtk/x/gtk_ui_delegate_x11.cc delete mode 100644 chromium/ui/gtk/x/gtk_ui_delegate_x11.h create mode 100644 chromium/ui/gtk/x/gtk_ui_platform_x11.cc create mode 100644 chromium/ui/gtk/x/gtk_ui_platform_x11.h delete mode 100644 chromium/ui/native_theme/DIR_METADATA create mode 100644 chromium/ui/ozone/common/base_keyboard_hook.cc create mode 100644 chromium/ui/ozone/common/base_keyboard_hook.h create mode 100644 chromium/ui/ozone/platform/wayland/host/gtk_shell1.cc create mode 100644 chromium/ui/ozone/platform/wayland/host/gtk_shell1.h create mode 100644 chromium/ui/ozone/platform/wayland/host/gtk_surface1.cc create mode 100644 chromium/ui/ozone/platform/wayland/host/gtk_surface1.h delete mode 100644 chromium/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.cc delete mode 100644 chromium/ui/ozone/platform/wayland/host/gtk_ui_delegate_wayland.h create mode 100644 chromium/ui/ozone/platform/wayland/host/linux_ui_delegate_wayland.cc create mode 100644 chromium/ui/ozone/platform/wayland/host/linux_ui_delegate_wayland.h create mode 100644 chromium/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures.cc create mode 100644 chromium/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures.h create mode 100644 chromium/ui/ozone/platform/x11/x11_keyboard_hook_ozone.cc create mode 100644 chromium/ui/ozone/platform/x11/x11_keyboard_hook_ozone.h create mode 100644 chromium/ui/ozone/public/platform_keyboard_hook.cc create mode 100644 chromium/ui/ozone/public/platform_keyboard_hook.h delete mode 100644 chromium/ui/resources/DIR_METADATA delete mode 100644 chromium/ui/resources/default_100_percent/common/pointers/sb_h_double_arrow.png delete mode 100644 chromium/ui/resources/default_100_percent/common/pointers/sb_h_double_arrow_big.png create mode 100644 chromium/ui/resources/default_100_percent/common/pointers/sb_horizontal_double_arrow.png create mode 100644 chromium/ui/resources/default_100_percent/common/pointers/sb_horizontal_double_arrow_big.png delete mode 100644 chromium/ui/resources/default_100_percent/common/pointers/sb_v_double_arrow.png delete mode 100644 chromium/ui/resources/default_100_percent/common/pointers/sb_v_double_arrow_big.png create mode 100644 chromium/ui/resources/default_100_percent/common/pointers/sb_vertical_double_arrow.png create mode 100644 chromium/ui/resources/default_100_percent/common/pointers/sb_vertical_double_arrow_big.png delete mode 100644 chromium/ui/resources/default_200_percent/common/pointers/sb_h_double_arrow.png create mode 100644 chromium/ui/resources/default_200_percent/common/pointers/sb_horizontal_double_arrow.png delete mode 100644 chromium/ui/resources/default_200_percent/common/pointers/sb_v_double_arrow.png create mode 100644 chromium/ui/resources/default_200_percent/common/pointers/sb_vertical_double_arrow.png delete mode 100644 chromium/ui/strings/ui_strings_grd/IDS_CLIPBOARD_HISTORY_MENU_BITMAP_IMAGE.png.sha1 create mode 100644 chromium/ui/strings/ui_strings_grd/IDS_CLIPBOARD_HISTORY_MENU_PNG_IMAGE.png.sha1 delete mode 100644 chromium/ui/surface/DIR_METADATA delete mode 100644 chromium/ui/views/controls/scrollbar/base_scroll_bar_button.cc delete mode 100644 chromium/ui/views/controls/scrollbar/base_scroll_bar_button.h delete mode 100644 chromium/ui/views/controls/scrollbar/base_scroll_bar_button_unittest.cc create mode 100644 chromium/ui/views/controls/scrollbar/scroll_bar_button.cc create mode 100644 chromium/ui/views/controls/scrollbar/scroll_bar_button.h create mode 100644 chromium/ui/views/controls/scrollbar/scroll_bar_button_unittest.cc delete mode 100644 chromium/ui/views/controls/tabbed_pane/DIR_METADATA delete mode 100644 chromium/ui/views/controls/textfield/DIR_METADATA create mode 100644 chromium/ui/views/examples/animation_example.cc create mode 100644 chromium/ui/views/examples/animation_example.h create mode 100644 chromium/ui/views/interaction/OWNERS create mode 100644 chromium/ui/views/interaction/element_tracker_views.cc create mode 100644 chromium/ui/views/interaction/element_tracker_views.h create mode 100644 chromium/ui/views/interaction/element_tracker_views_unittest.cc create mode 100644 chromium/ui/views/interaction/interaction_sequence_views.cc create mode 100644 chromium/ui/views/interaction/interaction_sequence_views.h create mode 100644 chromium/ui/views/interaction/interaction_sequence_views_unittest.cc delete mode 100644 chromium/ui/views/metadata/metadata_cache.cc delete mode 100644 chromium/ui/views/metadata/metadata_cache.h delete mode 100644 chromium/ui/views/metadata/metadata_header_macros.h delete mode 100644 chromium/ui/views/metadata/metadata_impl_macros.h delete mode 100644 chromium/ui/views/metadata/metadata_macros_internal.h delete mode 100644 chromium/ui/views/metadata/metadata_types.cc delete mode 100644 chromium/ui/views/metadata/metadata_types.h delete mode 100644 chromium/ui/views/metadata/metadata_unittest.cc delete mode 100644 chromium/ui/views/metadata/property_metadata.h delete mode 100644 chromium/ui/views/vector_icons/submenu_arrow.icon delete mode 100644 chromium/ui/views/widget/desktop_aura/desktop_screen.cc delete mode 100644 chromium/ui/views/widget/desktop_aura/window_shape_updater.cc delete mode 100644 chromium/ui/views/widget/desktop_aura/window_shape_updater.h delete mode 100644 chromium/ui/views/window/non_client_view_unittest.cc create mode 100644 chromium/ui/webui/resources/cr_components/chromeos/cellular_setup/activation_verification_page.html create mode 100644 chromium/ui/webui/resources/cr_components/chromeos/cellular_setup/activation_verification_page.js create mode 100644 chromium/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_eid_dialog.html create mode 100644 chromium/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_eid_dialog.js delete mode 100644 chromium/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_eid_popup.html delete mode 100644 chromium/ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_eid_popup.js create mode 100644 chromium/ui/webui/resources/cr_components/chromeos/network/cellular_locked.svg delete mode 100644 chromium/ui/webui/resources/cr_components/chromeos/quick_unlock/DIR_METADATA create mode 100644 chromium/ui/webui/resources/cr_components/managed_footnote/managed_footnote.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu.m.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_button/cr_button.m.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_checkbox/cr_checkbox.m.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_container_shadow_behavior.m.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.m.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_drawer/cr_drawer.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_icon_button/cr_icon_button.m.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_input/cr_input.m.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_lazy_render/cr_lazy_render.m.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_search_field/cr_search_field_behavior.d.ts delete mode 100644 chromium/ui/webui/resources/cr_elements/cr_slider/OWNERS create mode 100644 chromium/ui/webui/resources/cr_elements/cr_toast/cr_toast.m.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar_search_field.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/cr_view_manager/cr_view_manager.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/find_shortcut_behavior.d.ts create mode 100644 chromium/ui/webui/resources/cr_elements/mouse_hoverable_mixin.js delete mode 100644 chromium/ui/webui/resources/html/search_highlight_utils.html create mode 100644 chromium/ui/webui/resources/images/incognito_icon.svg create mode 100644 chromium/ui/webui/resources/js/cr/ui/focus_row_behavior.m.d.ts create mode 100644 chromium/ui/webui/resources/js/i18n_behavior.m.d.ts delete mode 100644 chromium/ui/webui/resources/js/load_time_data.js create mode 100644 chromium/ui/webui/resources/js/load_time_data.m.js create mode 100644 chromium/ui/webui/resources/js/web_ui_listener_behavior.m.d.ts create mode 100644 chromium/ui/webui/resources/tools/js_unmodulizer.gni create mode 100644 chromium/ui/webui/resources/tools/js_unmodulizer.py delete mode 100644 chromium/ui/wm/DIR_METADATA (limited to 'chromium/ui') diff --git a/chromium/ui/OWNERS b/chromium/ui/OWNERS index cd4f28bc0c8..cde8127abc8 100644 --- a/chromium/ui/OWNERS +++ b/chromium/ui/OWNERS @@ -11,7 +11,7 @@ ccameron@chromium.org per-file BUILD.gn=* # Translation artifacts: -per-file *.xtb=file://tools/translation/TRANSLATION_OWNERS +per-file ....xtb=file://tools/translation/TRANSLATION_OWNERS # For Fuchsia-specific changes: per-file *fuchsia*=file://build/fuchsia/OWNERS diff --git a/chromium/ui/accelerated_widget_mac/accelerated_widget_mac.h b/chromium/ui/accelerated_widget_mac/accelerated_widget_mac.h index 44b1dfc6c72..317173d9337 100644 --- a/chromium/ui/accelerated_widget_mac/accelerated_widget_mac.h +++ b/chromium/ui/accelerated_widget_mac/accelerated_widget_mac.h @@ -5,7 +5,6 @@ #ifndef UI_ACCELERATED_WIDGET_MAC_ACCELERATED_WIDGET_MAC_H_ #define UI_ACCELERATED_WIDGET_MAC_ACCELERATED_WIDGET_MAC_H_ -#include #include "ui/accelerated_widget_mac/accelerated_widget_mac_export.h" #include "ui/accelerated_widget_mac/ca_layer_frame_sink.h" diff --git a/chromium/ui/accelerated_widget_mac/ca_layer_frame_sink.h b/chromium/ui/accelerated_widget_mac/ca_layer_frame_sink.h index b8dde02402a..c56ca68ddbb 100644 --- a/chromium/ui/accelerated_widget_mac/ca_layer_frame_sink.h +++ b/chromium/ui/accelerated_widget_mac/ca_layer_frame_sink.h @@ -5,7 +5,6 @@ #ifndef UI_ACCELERATED_WIDGET_MAC_CA_LAYER_FRAME_SINK_H_ #define UI_ACCELERATED_WIDGET_MAC_CA_LAYER_FRAME_SINK_H_ -#include "base/time/time.h" #include "ui/accelerated_widget_mac/accelerated_widget_mac_export.h" #include "ui/gfx/ca_layer_params.h" #include "ui/gfx/native_widget_types.h" diff --git a/chromium/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h b/chromium/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h index c6ae9a055f3..9d786ba4a58 100644 --- a/chromium/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h +++ b/chromium/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef UI_ACCELERATED_WIDGET_MAC_CA_LAYER_TREE_HOST_H_ -#define UI_ACCELERATED_WIDGET_MAC_CA_LAYER_TREE_HOST_H_ +#ifndef UI_ACCELERATED_WIDGET_MAC_CA_LAYER_TREE_COORDINATOR_H_ +#define UI_ACCELERATED_WIDGET_MAC_CA_LAYER_TREE_COORDINATOR_H_ #include "ui/accelerated_widget_mac/accelerated_widget_mac_export.h" #include "ui/accelerated_widget_mac/ca_renderer_layer_tree.h" @@ -66,4 +66,4 @@ class ACCELERATED_WIDGET_MAC_EXPORT CALayerTreeCoordinator { } // namespace ui -#endif // UI_ACCELERATED_WIDGET_MAC_CA_LAYER_TREE_HOST_H_ +#endif // UI_ACCELERATED_WIDGET_MAC_CA_LAYER_TREE_COORDINATOR_H_ diff --git a/chromium/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm b/chromium/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm index a850776871b..a7df344c691 100644 --- a/chromium/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm +++ b/chromium/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm @@ -61,7 +61,7 @@ scoped_refptr CreateGLImage(const gfx::Size& size, gl_image->InitializeWithCVPixelBuffer(cv_pixel_buffer, gfx::GenericSharedMemoryId(), format); } else { - gl_image->Initialize(io_surface, gfx::GenericSharedMemoryId(), format); + gl_image->Initialize(io_surface, 0, gfx::GenericSharedMemoryId(), format); } return gl_image; } @@ -73,7 +73,8 @@ bool ScheduleCALayer(ui::CARendererLayerTree* tree, properties->rounded_corner_bounds, properties->sorting_context_id, properties->transform, properties->gl_image.get(), properties->contents_rect, properties->rect, properties->background_color, - properties->edge_aa_mask, properties->opacity, properties->filter)); + properties->edge_aa_mask, properties->opacity, properties->filter, + gfx::ProtectedVideoType::kClear)); } void UpdateCALayerTree(std::unique_ptr& ca_layer_tree, diff --git a/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.h b/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.h index 60459a38297..f5da8fedf51 100644 --- a/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.h +++ b/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.h @@ -20,6 +20,7 @@ #include "ui/gfx/mac/io_surface.h" #include "ui/gfx/rrect_f.h" #include "ui/gfx/transform.h" +#include "ui/gfx/video_types.h" @class AVSampleBufferDisplayLayer; @@ -72,13 +73,14 @@ class ACCELERATED_WIDGET_MAC_EXPORT CARendererLayerTree { private: class SolidColorContents; - struct RootLayer; - struct ClipAndSortingLayer; - struct TransformLayer; - struct ContentLayer; - friend struct ContentLayer; - - struct RootLayer { + class RootLayer; + class ClipAndSortingLayer; + class TransformLayer; + class ContentLayer; + friend class ContentLayer; + + class RootLayer { + public: RootLayer(); // This will remove |ca_layer| from its superlayer, if |ca_layer| is @@ -108,13 +110,14 @@ class ACCELERATED_WIDGET_MAC_EXPORT CARendererLayerTree { // transparent background, false otherwise. bool WantsFullcreenLowPowerBackdrop() const; - std::vector clip_and_sorting_layers; - base::scoped_nsobject ca_layer; + std::vector clip_and_sorting_layers_; + base::scoped_nsobject ca_layer_; private: DISALLOW_COPY_AND_ASSIGN(RootLayer); }; - struct ClipAndSortingLayer { + class ClipAndSortingLayer { + public: ClipAndSortingLayer(bool is_clipped, gfx::Rect clip_rect, gfx::RRectF rounded_corner_bounds, @@ -131,19 +134,20 @@ class ACCELERATED_WIDGET_MAC_EXPORT CARendererLayerTree { ClipAndSortingLayer* old_layer, float scale_factor); - std::vector transform_layers; - bool is_clipped = false; - gfx::Rect clip_rect; - gfx::RRectF rounded_corner_bounds; - unsigned sorting_context_id = 0; - bool is_singleton_sorting_context = false; - base::scoped_nsobject clipping_ca_layer; - base::scoped_nsobject rounded_corner_ca_layer; + std::vector transform_layers_; + bool is_clipped_ = false; + gfx::Rect clip_rect_; + gfx::RRectF rounded_corner_bounds_; + unsigned sorting_context_id_ = 0; + bool is_singleton_sorting_context_ = false; + base::scoped_nsobject clipping_ca_layer_; + base::scoped_nsobject rounded_corner_ca_layer_; private: DISALLOW_COPY_AND_ASSIGN(ClipAndSortingLayer); }; - struct TransformLayer { + class TransformLayer { + public: TransformLayer(const gfx::Transform& transform); TransformLayer(TransformLayer&& layer); @@ -156,14 +160,15 @@ class ACCELERATED_WIDGET_MAC_EXPORT CARendererLayerTree { TransformLayer* old_layer, float scale_factor); - gfx::Transform transform; - std::vector content_layers; - base::scoped_nsobject ca_layer; + gfx::Transform transform_; + std::vector content_layers_; + base::scoped_nsobject ca_layer_; private: DISALLOW_COPY_AND_ASSIGN(TransformLayer); }; - struct ContentLayer { + class ContentLayer { + public: ContentLayer(CARendererLayerTree* tree, base::ScopedCFTypeRef io_surface, base::ScopedCFTypeRef cv_pixel_buffer, @@ -173,7 +178,8 @@ class ACCELERATED_WIDGET_MAC_EXPORT CARendererLayerTree { const gfx::ColorSpace& color_space, unsigned edge_aa_mask, float opacity, - unsigned filter); + unsigned filter, + gfx::ProtectedVideoType protected_video_type); ContentLayer(ContentLayer&& layer); // See the behavior of RootLayer for the effects of these functions on the @@ -186,33 +192,36 @@ class ACCELERATED_WIDGET_MAC_EXPORT CARendererLayerTree { // Ensure that the IOSurface be marked as in-use as soon as it is received. // When they are committed to the window server, that will also increment // their use count. - const gfx::ScopedInUseIOSurface io_surface; - const base::ScopedCFTypeRef cv_pixel_buffer; - scoped_refptr solid_color_contents; - gfx::RectF contents_rect; - gfx::RectF rect; - unsigned background_color = 0; + const gfx::ScopedInUseIOSurface io_surface_; + const base::ScopedCFTypeRef cv_pixel_buffer_; + scoped_refptr solid_color_contents_; + gfx::RectF contents_rect_; + gfx::RectF rect_; + unsigned background_color_ = 0; // The color space of |io_surface|. Used for HDR tonemapping. - gfx::ColorSpace io_surface_color_space; + gfx::ColorSpace io_surface_color_space_; // Note that the CoreAnimation edge antialiasing mask is not the same as // the edge antialiasing mask passed to the constructor. - CAEdgeAntialiasingMask ca_edge_aa_mask = 0; - float opacity = 1; - NSString* const ca_filter = nil; + CAEdgeAntialiasingMask ca_edge_aa_mask_ = 0; + float opacity_ = 1; + NSString* const ca_filter_ = nil; - CALayerType type = CALayerType::kDefault; + CALayerType type_ = CALayerType::kDefault; // If |type| is CALayerType::kVideo and |video_type_can_downgrade| then // |type| can be downgraded to kDefault. This can be set to false for // HDR video (that cannot be displayed by a regular CALayer) or for // protected content (see https://crbug.com/1026703). - bool video_type_can_downgrade = true; + bool video_type_can_downgrade_ = true; + + gfx::ProtectedVideoType protected_video_type_ = + gfx::ProtectedVideoType::kClear; - base::scoped_nsobject ca_layer; + base::scoped_nsobject ca_layer_; // If this layer's contents can be represented as an // AVSampleBufferDisplayLayer, then |ca_layer| will point to |av_layer|. - base::scoped_nsobject av_layer; + base::scoped_nsobject av_layer_; private: DISALLOW_COPY_AND_ASSIGN(ContentLayer); @@ -230,4 +239,4 @@ class ACCELERATED_WIDGET_MAC_EXPORT CARendererLayerTree { } // namespace ui -#endif // UI_ACCELERATED_WIDGET_MAC_CA_LAYER_TREE_MAC_H_ +#endif // UI_ACCELERATED_WIDGET_MAC_CA_RENDERER_LAYER_TREE_H_ diff --git a/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm b/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm index e4610b0da4e..c959d1f81f2 100644 --- a/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm +++ b/chromium/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm @@ -288,29 +288,29 @@ void CARendererLayerTree::CommitScheduledCALayers( bool CARendererLayerTree::RootLayer::WantsFullcreenLowPowerBackdrop() const { bool found_video_layer = false; - for (auto& clip_layer : clip_and_sorting_layers) { - for (auto& transform_layer : clip_layer.transform_layers) { - for (auto& content_layer : transform_layer.content_layers) { + for (auto& clip_layer : clip_and_sorting_layers_) { + for (auto& transform_layer : clip_layer.transform_layers_) { + for (auto& content_layer : transform_layer.content_layers_) { // Detached mode requires that no layers be on top of the video layer. if (found_video_layer) return false; // See if this is the video layer. - if (content_layer.type == CALayerType::kVideo) { + if (content_layer.type_ == CALayerType::kVideo) { found_video_layer = true; - if (!transform_layer.transform.IsPositiveScaleOrTranslation()) + if (!transform_layer.transform_.IsPositiveScaleOrTranslation()) return false; - if (content_layer.opacity != 1) + if (content_layer.opacity_ != 1) return false; continue; } // If we haven't found the video layer yet, make sure everything is // solid black or transparent - if (content_layer.io_surface) + if (content_layer.io_surface_) return false; - if (content_layer.background_color != SK_ColorBLACK && - content_layer.background_color != SK_ColorTRANSPARENT) { + if (content_layer.background_color_ != SK_ColorBLACK && + content_layer.background_color_ != SK_ColorTRANSPARENT) { return false; } } @@ -320,12 +320,12 @@ bool CARendererLayerTree::RootLayer::WantsFullcreenLowPowerBackdrop() const { } void CARendererLayerTree::RootLayer::DowngradeAVLayersToCALayers() { - for (auto& clip_layer : clip_and_sorting_layers) { - for (auto& transform_layer : clip_layer.transform_layers) { - for (auto& content_layer : transform_layer.content_layers) { - if (content_layer.type == CALayerType::kVideo && - content_layer.video_type_can_downgrade) { - content_layer.type = CALayerType::kDefault; + for (auto& clip_layer : clip_and_sorting_layers_) { + for (auto& transform_layer : clip_layer.transform_layers_) { + for (auto& content_layer : transform_layer.content_layers_) { + if (content_layer.type_ == CALayerType::kVideo && + content_layer.video_type_can_downgrade_) { + content_layer.type_ = CALayerType::kDefault; } } } @@ -337,29 +337,29 @@ id CARendererLayerTree::ContentsForSolidColorForTesting(SkColor color) { } IOSurfaceRef CARendererLayerTree::GetContentIOSurface() const { - size_t clip_count = root_layer_.clip_and_sorting_layers.size(); + size_t clip_count = root_layer_.clip_and_sorting_layers_.size(); if (clip_count != 1) { DLOG(ERROR) << "Can only return contents IOSurface when there is 1 " << "ClipAndSortingLayer, there are " << clip_count << "."; return nullptr; } const ClipAndSortingLayer& clip_and_sorting = - root_layer_.clip_and_sorting_layers[0]; - size_t transform_count = clip_and_sorting.transform_layers.size(); + root_layer_.clip_and_sorting_layers_[0]; + size_t transform_count = clip_and_sorting.transform_layers_.size(); if (transform_count != 1) { DLOG(ERROR) << "Can only return contents IOSurface when there is 1 " << "TransformLayer, there are " << transform_count << "."; return nullptr; } - const TransformLayer& transform = clip_and_sorting.transform_layers[0]; - size_t content_count = transform.content_layers.size(); + const TransformLayer& transform = clip_and_sorting.transform_layers_[0]; + size_t content_count = transform.content_layers_.size(); if (content_count != 1) { DLOG(ERROR) << "Can only return contents IOSurface when there is 1 " << "ContentLayer, there are " << transform_count << "."; return nullptr; } - const ContentLayer& content = transform.content_layers[0]; - return content.io_surface.get(); + const ContentLayer& content = transform.content_layers_[0]; + return content.io_surface_.get(); } CARendererLayerTree::RootLayer::RootLayer() {} @@ -367,7 +367,7 @@ CARendererLayerTree::RootLayer::RootLayer() {} // Note that for all destructors, the the CALayer will have been reset to nil if // another layer has taken it. CARendererLayerTree::RootLayer::~RootLayer() { - [ca_layer removeFromSuperlayer]; + [ca_layer_ removeFromSuperlayer]; } CARendererLayerTree::ClipAndSortingLayer::ClipAndSortingLayer( @@ -376,48 +376,48 @@ CARendererLayerTree::ClipAndSortingLayer::ClipAndSortingLayer( gfx::RRectF rounded_corner_bounds_arg, unsigned sorting_context_id, bool is_singleton_sorting_context) - : is_clipped(is_clipped), - clip_rect(clip_rect), - rounded_corner_bounds(rounded_corner_bounds_arg), - sorting_context_id(sorting_context_id), - is_singleton_sorting_context(is_singleton_sorting_context) {} + : is_clipped_(is_clipped), + clip_rect_(clip_rect), + rounded_corner_bounds_(rounded_corner_bounds_arg), + sorting_context_id_(sorting_context_id), + is_singleton_sorting_context_(is_singleton_sorting_context) {} CARendererLayerTree::ClipAndSortingLayer::ClipAndSortingLayer( ClipAndSortingLayer&& layer) - : transform_layers(std::move(layer.transform_layers)), - is_clipped(layer.is_clipped), - clip_rect(layer.clip_rect), - rounded_corner_bounds(layer.rounded_corner_bounds), - sorting_context_id(layer.sorting_context_id), - is_singleton_sorting_context(layer.is_singleton_sorting_context), - clipping_ca_layer(layer.clipping_ca_layer), - rounded_corner_ca_layer(layer.rounded_corner_ca_layer) { + : transform_layers_(std::move(layer.transform_layers_)), + is_clipped_(layer.is_clipped_), + clip_rect_(layer.clip_rect_), + rounded_corner_bounds_(layer.rounded_corner_bounds_), + sorting_context_id_(layer.sorting_context_id_), + is_singleton_sorting_context_(layer.is_singleton_sorting_context_), + clipping_ca_layer_(layer.clipping_ca_layer_), + rounded_corner_ca_layer_(layer.rounded_corner_ca_layer_) { // Ensure that the ca_layer be reset, so that when the destructor is called, // the layer hierarchy is unaffected. // TODO(ccameron): Add a move constructor for scoped_nsobject to do this // automatically. - layer.clipping_ca_layer.reset(); - layer.rounded_corner_ca_layer.reset(); + layer.clipping_ca_layer_.reset(); + layer.rounded_corner_ca_layer_.reset(); } CARendererLayerTree::ClipAndSortingLayer::~ClipAndSortingLayer() { - [clipping_ca_layer removeFromSuperlayer]; - [rounded_corner_ca_layer removeFromSuperlayer]; + [clipping_ca_layer_ removeFromSuperlayer]; + [rounded_corner_ca_layer_ removeFromSuperlayer]; } CARendererLayerTree::TransformLayer::TransformLayer( const gfx::Transform& transform) - : transform(transform) {} + : transform_(transform) {} CARendererLayerTree::TransformLayer::TransformLayer(TransformLayer&& layer) - : transform(layer.transform), - content_layers(std::move(layer.content_layers)), - ca_layer(layer.ca_layer) { - layer.ca_layer.reset(); + : transform_(layer.transform_), + content_layers_(std::move(layer.content_layers_)), + ca_layer_(layer.ca_layer_) { + layer.ca_layer_.reset(); } CARendererLayerTree::TransformLayer::~TransformLayer() { - [ca_layer removeFromSuperlayer]; + [ca_layer_ removeFromSuperlayer]; } CARendererLayerTree::ContentLayer::ContentLayer( @@ -425,36 +425,38 @@ CARendererLayerTree::ContentLayer::ContentLayer( base::ScopedCFTypeRef io_surface, base::ScopedCFTypeRef cv_pixel_buffer, const gfx::RectF& contents_rect, - const gfx::Rect& rect_in, + const gfx::Rect& rect, unsigned background_color, const gfx::ColorSpace& io_surface_color_space, unsigned edge_aa_mask, float opacity, - unsigned filter) - : io_surface(io_surface), - cv_pixel_buffer(cv_pixel_buffer), - contents_rect(contents_rect), - rect(rect_in), - background_color(background_color), - io_surface_color_space(io_surface_color_space), - ca_edge_aa_mask(0), - opacity(opacity), - ca_filter(filter == GL_LINEAR ? kCAFilterLinear : kCAFilterNearest) { + unsigned filter, + gfx::ProtectedVideoType protected_video_type) + : io_surface_(io_surface), + cv_pixel_buffer_(cv_pixel_buffer), + contents_rect_(contents_rect), + rect_(rect), + background_color_(background_color), + io_surface_color_space_(io_surface_color_space), + ca_edge_aa_mask_(0), + opacity_(opacity), + ca_filter_(filter == GL_LINEAR ? kCAFilterLinear : kCAFilterNearest), + protected_video_type_(protected_video_type) { DCHECK(filter == GL_LINEAR || filter == GL_NEAREST); - // On Mac OS Sierra, solid color layers are not color color corrected to the - // output monitor color space, but IOSurface-backed layers are color - // corrected. Note that this is only the case when the CALayers are shared - // across processes. To make colors consistent across both solid color and - // IOSurface-backed layers, use a cache of solid-color IOSurfaces as - // contents. Black and transparent layers must use real colors to be eligible - // for low power detachment in fullscreen. + // On Mac OS Sierra, solid color layers are not color converted to the output + // monitor color space, but IOSurface-backed layers are color converted. Note + // that this is only the case when the CALayers are shared across processes. + // To make colors consistent across both solid color and IOSurface-backed + // layers, use a cache of solid-color IOSurfaces as contents. Black and + // transparent layers must use real colors to be eligible for low power + // detachment in fullscreen. // https://crbug.com/633805 if (!io_surface && !tree->allow_solid_color_layers_ && - background_color != SK_ColorBLACK && - background_color != SK_ColorTRANSPARENT) { - solid_color_contents = SolidColorContents::Get(background_color); - ContentLayer::contents_rect = gfx::RectF(0, 0, 1, 1); + background_color_ != SK_ColorBLACK && + background_color_ != SK_ColorTRANSPARENT) { + solid_color_contents_ = SolidColorContents::Get(background_color); + contents_rect_ = gfx::RectF(0, 0, 1, 1); } // Because the root layer has setGeometryFlipped:YES, there is some ambiguity @@ -466,45 +468,54 @@ CARendererLayerTree::ContentLayer::ContentLayer( // top edge on-screen. // https://crbug.com/567946 if (edge_aa_mask & GL_CA_LAYER_EDGE_LEFT_CHROMIUM) - ca_edge_aa_mask |= kCALayerLeftEdge; + ca_edge_aa_mask_ |= kCALayerLeftEdge; if (edge_aa_mask & GL_CA_LAYER_EDGE_RIGHT_CHROMIUM) - ca_edge_aa_mask |= kCALayerRightEdge; - if (io_surface || solid_color_contents) { + ca_edge_aa_mask_ |= kCALayerRightEdge; + if (io_surface || solid_color_contents_) { if (edge_aa_mask & GL_CA_LAYER_EDGE_TOP_CHROMIUM) - ca_edge_aa_mask |= kCALayerBottomEdge; + ca_edge_aa_mask_ |= kCALayerBottomEdge; if (edge_aa_mask & GL_CA_LAYER_EDGE_BOTTOM_CHROMIUM) - ca_edge_aa_mask |= kCALayerTopEdge; + ca_edge_aa_mask_ |= kCALayerTopEdge; } else { if (edge_aa_mask & GL_CA_LAYER_EDGE_TOP_CHROMIUM) - ca_edge_aa_mask |= kCALayerTopEdge; + ca_edge_aa_mask_ |= kCALayerTopEdge; if (edge_aa_mask & GL_CA_LAYER_EDGE_BOTTOM_CHROMIUM) - ca_edge_aa_mask |= kCALayerBottomEdge; + ca_edge_aa_mask_ |= kCALayerBottomEdge; } // Determine which type of CALayer subclass we should use. if (metal::ShouldUseHDRCopier(io_surface, io_surface_color_space)) { - type = CALayerType::kHDRCopier; + type_ = CALayerType::kHDRCopier; } else if (io_surface) { - // Only allow 4:2:0 frames which fill the layer's contents to be - // promoted to AV layers. - if (tree->allow_av_sample_buffer_display_layer_ && - contents_rect == gfx::RectF(0, 0, 1, 1)) { - switch (IOSurfaceGetPixelFormat(io_surface)) { - case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: - type = CALayerType::kVideo; - video_type_can_downgrade = !io_surface_color_space.IsHDR(); - break; - case kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange: - type = CALayerType::kVideo; - video_type_can_downgrade = false; - break; - default: - break; + // Only allow 4:2:0 frames which fill the layer's contents or protected + // video to be promoted to AV layers. + if (tree->allow_av_sample_buffer_display_layer_) { + if (contents_rect == gfx::RectF(0, 0, 1, 1)) { + switch (IOSurfaceGetPixelFormat(io_surface)) { + case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange: + type_ = CALayerType::kVideo; + video_type_can_downgrade_ = !io_surface_color_space.IsHDR(); + break; + case kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange: + type_ = CALayerType::kVideo; + video_type_can_downgrade_ = false; + break; + default: + break; + } + } + + if (protected_video_type_ == + gfx::ProtectedVideoType::kHardwareProtected) { + if (@available(macOS 10.15, *)) { + type_ = CALayerType::kVideo; + video_type_can_downgrade_ = false; + } } } } - if (type == CALayerType::kVideo) { + if (type_ == CALayerType::kVideo) { // If the layer's aspect ratio could be made to match the video's aspect // ratio by expanding either dimension by a fractional pixel, do so. The // mismatch probably resulted from rounding the dimensions to integers. @@ -516,43 +527,45 @@ CARendererLayerTree::ContentLayer::ContentLayer( : gfx::RectF(IOSurfaceGetWidth(io_surface), IOSurfaceGetHeight(io_surface))); const CGFloat av_ratio = av_rect.width() / av_rect.height(); - const CGFloat layer_ratio = rect.width() / rect.height(); + const CGFloat layer_ratio = rect_.width() / rect_.height(); const CGFloat ratio_error = av_ratio / layer_ratio; if (ratio_error > 1) { - const float width_correction = rect.width() * ratio_error - rect.width(); + const float width_correction = + rect_.width() * ratio_error - rect_.width(); if (width_correction < 1) - rect.Inset(-width_correction / 2, 0); + rect_.Inset(-width_correction / 2, 0); } else if (ratio_error < 1) { const float height_correction = - rect.height() / ratio_error - rect.height(); + rect_.height() / ratio_error - rect_.height(); if (height_correction < 1) - rect.Inset(0, -height_correction / 2); + rect_.Inset(0, -height_correction / 2); } } } CARendererLayerTree::ContentLayer::ContentLayer(ContentLayer&& layer) - : io_surface(layer.io_surface), - cv_pixel_buffer(layer.cv_pixel_buffer), - solid_color_contents(layer.solid_color_contents), - contents_rect(layer.contents_rect), - rect(layer.rect), - background_color(layer.background_color), - io_surface_color_space(layer.io_surface_color_space), - ca_edge_aa_mask(layer.ca_edge_aa_mask), - opacity(layer.opacity), - ca_filter(layer.ca_filter), - type(layer.type), - video_type_can_downgrade(layer.video_type_can_downgrade), - ca_layer(std::move(layer.ca_layer)), - av_layer(std::move(layer.av_layer)) { - DCHECK(!layer.ca_layer); - DCHECK(!layer.av_layer); + : io_surface_(layer.io_surface_), + cv_pixel_buffer_(layer.cv_pixel_buffer_), + solid_color_contents_(layer.solid_color_contents_), + contents_rect_(layer.contents_rect_), + rect_(layer.rect_), + background_color_(layer.background_color_), + io_surface_color_space_(layer.io_surface_color_space_), + ca_edge_aa_mask_(layer.ca_edge_aa_mask_), + opacity_(layer.opacity_), + ca_filter_(layer.ca_filter_), + type_(layer.type_), + video_type_can_downgrade_(layer.video_type_can_downgrade_), + protected_video_type_(layer.protected_video_type_), + ca_layer_(std::move(layer.ca_layer_)), + av_layer_(std::move(layer.av_layer_)) { + DCHECK(!layer.ca_layer_); + DCHECK(!layer.av_layer_); } CARendererLayerTree::ContentLayer::~ContentLayer() { - [ca_layer removeFromSuperlayer]; + [ca_layer_ removeFromSuperlayer]; } bool CARendererLayerTree::RootLayer::AddContentLayer( @@ -567,33 +580,34 @@ bool CARendererLayerTree::RootLayer::AddContentLayer( bool is_singleton_sorting_context = !params.sorting_context_id && !params.transform.IsFlat(); - if (!clip_and_sorting_layers.empty()) { - ClipAndSortingLayer& current_layer = clip_and_sorting_layers.back(); + if (!clip_and_sorting_layers_.empty()) { + ClipAndSortingLayer& current_layer = clip_and_sorting_layers_.back(); // It is in error to change the clipping settings within a non-zero sorting // context. The result will be incorrect layering and intersection. if (params.sorting_context_id && - current_layer.sorting_context_id == params.sorting_context_id && - (current_layer.is_clipped != params.is_clipped || - current_layer.clip_rect != params.clip_rect || - current_layer.rounded_corner_bounds != params.rounded_corner_bounds)) { + current_layer.sorting_context_id_ == params.sorting_context_id && + (current_layer.is_clipped_ != params.is_clipped || + current_layer.clip_rect_ != params.clip_rect || + current_layer.rounded_corner_bounds_ != + params.rounded_corner_bounds)) { DLOG(ERROR) << "CALayer changed clip inside non-zero sorting context."; return false; } if (!is_singleton_sorting_context && - !current_layer.is_singleton_sorting_context && - current_layer.is_clipped == params.is_clipped && - current_layer.clip_rect == params.clip_rect && - current_layer.rounded_corner_bounds == params.rounded_corner_bounds && - current_layer.sorting_context_id == params.sorting_context_id) { + !current_layer.is_singleton_sorting_context_ && + current_layer.is_clipped_ == params.is_clipped && + current_layer.clip_rect_ == params.clip_rect && + current_layer.rounded_corner_bounds_ == params.rounded_corner_bounds && + current_layer.sorting_context_id_ == params.sorting_context_id) { needs_new_clip_and_sorting_layer = false; } } if (needs_new_clip_and_sorting_layer) { - clip_and_sorting_layers.push_back(ClipAndSortingLayer( + clip_and_sorting_layers_.push_back(ClipAndSortingLayer( params.is_clipped, params.clip_rect, params.rounded_corner_bounds, params.sorting_context_id, is_singleton_sorting_context)); } - clip_and_sorting_layers.back().AddContentLayer(tree, params); + clip_and_sorting_layers_.back().AddContentLayer(tree, params); return true; } @@ -601,14 +615,14 @@ void CARendererLayerTree::ClipAndSortingLayer::AddContentLayer( CARendererLayerTree* tree, const CARendererLayerParams& params) { bool needs_new_transform_layer = true; - if (!transform_layers.empty()) { - const TransformLayer& current_layer = transform_layers.back(); - if (current_layer.transform == params.transform) + if (!transform_layers_.empty()) { + const TransformLayer& current_layer = transform_layers_.back(); + if (current_layer.transform_ == params.transform) needs_new_transform_layer = false; } if (needs_new_transform_layer) - transform_layers.push_back(TransformLayer(params.transform)); - transform_layers.back().AddContentLayer(tree, params); + transform_layers_.push_back(TransformLayer(params.transform)); + transform_layers_.back().AddContentLayer(tree, params); } void CARendererLayerTree::TransformLayer::AddContentLayer( @@ -632,10 +646,10 @@ void CARendererLayerTree::TransformLayer::AddContentLayer( // cv_pixel_buffer = io_surface_image->cv_pixel_buffer(); io_surface_color_space = params.image->color_space(); } - content_layers.push_back( - ContentLayer(tree, io_surface, cv_pixel_buffer, params.contents_rect, - params.rect, params.background_color, io_surface_color_space, - params.edge_aa_mask, params.opacity, params.filter)); + content_layers_.push_back(ContentLayer( + tree, io_surface, cv_pixel_buffer, params.contents_rect, params.rect, + params.background_color, io_surface_color_space, params.edge_aa_mask, + params.opacity, params.filter, params.protected_video_type)); } void CARendererLayerTree::RootLayer::CommitToCA(CALayer* superlayer, @@ -643,16 +657,16 @@ void CARendererLayerTree::RootLayer::CommitToCA(CALayer* superlayer, const gfx::Size& pixel_size, float scale_factor) { if (old_layer) { - DCHECK(old_layer->ca_layer); - std::swap(ca_layer, old_layer->ca_layer); + DCHECK(old_layer->ca_layer_); + std::swap(ca_layer_, old_layer->ca_layer_); } else { - ca_layer.reset([[CALayer alloc] init]); - [ca_layer setAnchorPoint:CGPointZero]; + ca_layer_.reset([[CALayer alloc] init]); + [ca_layer_ setAnchorPoint:CGPointZero]; [superlayer setSublayers:nil]; - [superlayer addSublayer:ca_layer]; + [superlayer addSublayer:ca_layer_]; [superlayer setBorderWidth:0]; } - if ([ca_layer superlayer] != superlayer) { + if ([ca_layer_ superlayer] != superlayer) { DLOG(ERROR) << "CARendererLayerTree root layer not attached to tree."; } @@ -661,15 +675,15 @@ void CARendererLayerTree::RootLayer::CommitToCA(CALayer* superlayer, // solid black background. const gfx::RectF bg_rect( ScaleSize(gfx::SizeF(pixel_size), 1 / scale_factor)); - if (gfx::RectF([ca_layer frame]) != bg_rect) - [ca_layer setFrame:bg_rect.ToCGRect()]; - if (![ca_layer backgroundColor]) - [ca_layer setBackgroundColor:CGColorGetConstantColor(kCGColorBlack)]; + if (gfx::RectF([ca_layer_ frame]) != bg_rect) + [ca_layer_ setFrame:bg_rect.ToCGRect()]; + if (![ca_layer_ backgroundColor]) + [ca_layer_ setBackgroundColor:CGColorGetConstantColor(kCGColorBlack)]; } else { - if (gfx::RectF([ca_layer frame]) != gfx::RectF()) - [ca_layer setFrame:CGRectZero]; - if ([ca_layer backgroundColor]) - [ca_layer setBackgroundColor:nil]; + if (gfx::RectF([ca_layer_ frame]) != gfx::RectF()) + [ca_layer_ setFrame:CGRectZero]; + if ([ca_layer_ backgroundColor]) + [ca_layer_ setBackgroundColor:nil]; // We know that we are not in fullscreen low power mode, so there is no // power savings (and a slight power cost) to using // AVSampleBufferDisplayLayer. @@ -682,13 +696,13 @@ void CARendererLayerTree::RootLayer::CommitToCA(CALayer* superlayer, DowngradeAVLayersToCALayers(); } - for (size_t i = 0; i < clip_and_sorting_layers.size(); ++i) { + for (size_t i = 0; i < clip_and_sorting_layers_.size(); ++i) { ClipAndSortingLayer* old_clip_and_sorting_layer = nullptr; - if (old_layer && i < old_layer->clip_and_sorting_layers.size()) { - old_clip_and_sorting_layer = &old_layer->clip_and_sorting_layers[i]; + if (old_layer && i < old_layer->clip_and_sorting_layers_.size()) { + old_clip_and_sorting_layer = &old_layer->clip_and_sorting_layers_[i]; } - clip_and_sorting_layers[i].CommitToCA( - ca_layer.get(), old_clip_and_sorting_layer, scale_factor); + clip_and_sorting_layers_[i].CommitToCA( + ca_layer_.get(), old_clip_and_sorting_layer, scale_factor); } } @@ -699,83 +713,83 @@ void CARendererLayerTree::ClipAndSortingLayer::CommitToCA( bool update_is_clipped = true; bool update_clip_rect = true; if (old_layer) { - DCHECK(old_layer->clipping_ca_layer); - DCHECK(old_layer->rounded_corner_ca_layer); - std::swap(clipping_ca_layer, old_layer->clipping_ca_layer); - std::swap(rounded_corner_ca_layer, old_layer->rounded_corner_ca_layer); - update_is_clipped = old_layer->is_clipped != is_clipped; - update_clip_rect = update_is_clipped || old_layer->clip_rect != clip_rect; + DCHECK(old_layer->clipping_ca_layer_); + DCHECK(old_layer->rounded_corner_ca_layer_); + std::swap(clipping_ca_layer_, old_layer->clipping_ca_layer_); + std::swap(rounded_corner_ca_layer_, old_layer->rounded_corner_ca_layer_); + update_is_clipped = old_layer->is_clipped_ != is_clipped_; + update_clip_rect = update_is_clipped || old_layer->clip_rect_ != clip_rect_; } else { - clipping_ca_layer.reset([[CALayer alloc] init]); - [clipping_ca_layer setAnchorPoint:CGPointZero]; - [superlayer addSublayer:clipping_ca_layer]; - rounded_corner_ca_layer.reset([[CALayer alloc] init]); - [rounded_corner_ca_layer setAnchorPoint:CGPointZero]; - [clipping_ca_layer addSublayer:rounded_corner_ca_layer]; + clipping_ca_layer_.reset([[CALayer alloc] init]); + [clipping_ca_layer_ setAnchorPoint:CGPointZero]; + [superlayer addSublayer:clipping_ca_layer_]; + rounded_corner_ca_layer_.reset([[CALayer alloc] init]); + [rounded_corner_ca_layer_ setAnchorPoint:CGPointZero]; + [clipping_ca_layer_ addSublayer:rounded_corner_ca_layer_]; } - if (!rounded_corner_bounds.IsEmpty()) { + if (!rounded_corner_bounds_.IsEmpty()) { if (!old_layer || - old_layer->rounded_corner_bounds != rounded_corner_bounds) { + old_layer->rounded_corner_bounds_ != rounded_corner_bounds_) { gfx::RectF dip_rounded_corner_bounds = - gfx::RectF(rounded_corner_bounds.rect()); + gfx::RectF(rounded_corner_bounds_.rect()); dip_rounded_corner_bounds.Scale(1 / scale_factor); - [rounded_corner_ca_layer setMasksToBounds:true]; + [rounded_corner_ca_layer_ setMasksToBounds:true]; - [rounded_corner_ca_layer + [rounded_corner_ca_layer_ setPosition:CGPointMake(dip_rounded_corner_bounds.x(), dip_rounded_corner_bounds.y())]; - [rounded_corner_ca_layer + [rounded_corner_ca_layer_ setBounds:CGRectMake(0, 0, dip_rounded_corner_bounds.width(), dip_rounded_corner_bounds.height())]; - [rounded_corner_ca_layer + [rounded_corner_ca_layer_ setSublayerTransform:CATransform3DMakeTranslation( -dip_rounded_corner_bounds.x(), -dip_rounded_corner_bounds.y(), 0)]; - [rounded_corner_ca_layer - setCornerRadius:rounded_corner_bounds.GetSimpleRadius() / + [rounded_corner_ca_layer_ + setCornerRadius:rounded_corner_bounds_.GetSimpleRadius() / scale_factor]; } } else { - [rounded_corner_ca_layer setMasksToBounds:false]; - [rounded_corner_ca_layer setPosition:CGPointZero]; - [rounded_corner_ca_layer setBounds:CGRectZero]; - [rounded_corner_ca_layer setSublayerTransform:CATransform3DIdentity]; - [rounded_corner_ca_layer setCornerRadius:0]; + [rounded_corner_ca_layer_ setMasksToBounds:false]; + [rounded_corner_ca_layer_ setPosition:CGPointZero]; + [rounded_corner_ca_layer_ setBounds:CGRectZero]; + [rounded_corner_ca_layer_ setSublayerTransform:CATransform3DIdentity]; + [rounded_corner_ca_layer_ setCornerRadius:0]; } - if ([clipping_ca_layer superlayer] != superlayer) { + if ([clipping_ca_layer_ superlayer] != superlayer) { DLOG(ERROR) << "CARendererLayerTree root layer not attached to tree."; } if (update_is_clipped) - [clipping_ca_layer setMasksToBounds:is_clipped]; + [clipping_ca_layer_ setMasksToBounds:is_clipped_]; if (update_clip_rect) { - if (is_clipped) { - gfx::RectF dip_clip_rect = gfx::RectF(clip_rect); + if (is_clipped_) { + gfx::RectF dip_clip_rect = gfx::RectF(clip_rect_); dip_clip_rect.Scale(1 / scale_factor); - [clipping_ca_layer + [clipping_ca_layer_ setPosition:CGPointMake(dip_clip_rect.x(), dip_clip_rect.y())]; - [clipping_ca_layer setBounds:CGRectMake(0, 0, dip_clip_rect.width(), - dip_clip_rect.height())]; - [clipping_ca_layer + [clipping_ca_layer_ setBounds:CGRectMake(0, 0, dip_clip_rect.width(), + dip_clip_rect.height())]; + [clipping_ca_layer_ setSublayerTransform:CATransform3DMakeTranslation( -dip_clip_rect.x(), -dip_clip_rect.y(), 0)]; } else { - [clipping_ca_layer setPosition:CGPointZero]; - [clipping_ca_layer setBounds:CGRectZero]; - [clipping_ca_layer setSublayerTransform:CATransform3DIdentity]; + [clipping_ca_layer_ setPosition:CGPointZero]; + [clipping_ca_layer_ setBounds:CGRectZero]; + [clipping_ca_layer_ setSublayerTransform:CATransform3DIdentity]; } } - for (size_t i = 0; i < transform_layers.size(); ++i) { + for (size_t i = 0; i < transform_layers_.size(); ++i) { TransformLayer* old_transform_layer = nullptr; - if (old_layer && i < old_layer->transform_layers.size()) - old_transform_layer = &old_layer->transform_layers[i]; - transform_layers[i].CommitToCA(rounded_corner_ca_layer, old_transform_layer, - scale_factor); + if (old_layer && i < old_layer->transform_layers_.size()) + old_transform_layer = &old_layer->transform_layers_[i]; + transform_layers_[i].CommitToCA(rounded_corner_ca_layer_, + old_transform_layer, scale_factor); } } @@ -784,33 +798,33 @@ void CARendererLayerTree::TransformLayer::CommitToCA(CALayer* superlayer, float scale_factor) { bool update_transform = true; if (old_layer) { - DCHECK(old_layer->ca_layer); - std::swap(ca_layer, old_layer->ca_layer); - update_transform = old_layer->transform != transform; + DCHECK(old_layer->ca_layer_); + std::swap(ca_layer_, old_layer->ca_layer_); + update_transform = old_layer->transform_ != transform_; } else { - ca_layer.reset([[CATransformLayer alloc] init]); - [superlayer addSublayer:ca_layer]; + ca_layer_.reset([[CATransformLayer alloc] init]); + [superlayer addSublayer:ca_layer_]; } - DCHECK_EQ([ca_layer superlayer], superlayer); + DCHECK_EQ([ca_layer_ superlayer], superlayer); if (update_transform) { gfx::Transform pre_scale; gfx::Transform post_scale; pre_scale.Scale(1 / scale_factor, 1 / scale_factor); post_scale.Scale(scale_factor, scale_factor); - gfx::Transform conjugated_transform = pre_scale * transform * post_scale; + gfx::Transform conjugated_transform = pre_scale * transform_ * post_scale; CATransform3D ca_transform; conjugated_transform.matrix().asColMajord(&ca_transform.m11); - [ca_layer setTransform:ca_transform]; + [ca_layer_ setTransform:ca_transform]; } - for (size_t i = 0; i < content_layers.size(); ++i) { + for (size_t i = 0; i < content_layers_.size(); ++i) { ContentLayer* old_content_layer = nullptr; - if (old_layer && i < old_layer->content_layers.size()) - old_content_layer = &old_layer->content_layers[i]; - content_layers[i].CommitToCA(ca_layer.get(), old_content_layer, - scale_factor); + if (old_layer && i < old_layer->content_layers_.size()) + old_content_layer = &old_layer->content_layers_[i]; + content_layers_[i].CommitToCA(ca_layer_.get(), old_content_layer, + scale_factor); } } @@ -824,64 +838,70 @@ void CARendererLayerTree::ContentLayer::CommitToCA(CALayer* superlayer, bool update_ca_edge_aa_mask = true; bool update_opacity = true; bool update_ca_filter = true; - if (old_layer && old_layer->type == type) { - DCHECK(old_layer->ca_layer); - std::swap(ca_layer, old_layer->ca_layer); - std::swap(av_layer, old_layer->av_layer); - update_contents = old_layer->io_surface != io_surface || - old_layer->cv_pixel_buffer != cv_pixel_buffer || - old_layer->solid_color_contents != solid_color_contents; - update_contents_rect = old_layer->contents_rect != contents_rect; - update_rect = old_layer->rect != rect; - update_background_color = old_layer->background_color != background_color; - update_ca_edge_aa_mask = old_layer->ca_edge_aa_mask != ca_edge_aa_mask; - update_opacity = old_layer->opacity != opacity; - update_ca_filter = old_layer->ca_filter != ca_filter; + if (old_layer && old_layer->type_ == type_) { + DCHECK(old_layer->ca_layer_); + std::swap(ca_layer_, old_layer->ca_layer_); + std::swap(av_layer_, old_layer->av_layer_); + update_contents = old_layer->io_surface_ != io_surface_ || + old_layer->cv_pixel_buffer_ != cv_pixel_buffer_ || + old_layer->solid_color_contents_ != solid_color_contents_; + update_contents_rect = old_layer->contents_rect_ != contents_rect_; + update_rect = old_layer->rect_ != rect_; + update_background_color = old_layer->background_color_ != background_color_; + update_ca_edge_aa_mask = old_layer->ca_edge_aa_mask_ != ca_edge_aa_mask_; + update_opacity = old_layer->opacity_ != opacity_; + update_ca_filter = old_layer->ca_filter_ != ca_filter_; } else { - switch (type) { + switch (type_) { case CALayerType::kHDRCopier: - ca_layer.reset(metal::CreateHDRCopierLayer()); + ca_layer_.reset(metal::CreateHDRCopierLayer()); break; case CALayerType::kVideo: - av_layer.reset([[AVSampleBufferDisplayLayer alloc] init]); - ca_layer.reset([av_layer retain]); - [av_layer setVideoGravity:AVLayerVideoGravityResize]; + av_layer_.reset([[AVSampleBufferDisplayLayer alloc] init]); + ca_layer_.reset([av_layer_ retain]); + [av_layer_ setVideoGravity:AVLayerVideoGravityResize]; + if (protected_video_type_ == + gfx::ProtectedVideoType::kHardwareProtected) { + if (@available(macOS 10.15, *)) { + [av_layer_ setPreventsCapture:true]; + } + } break; case CALayerType::kDefault: - ca_layer.reset([[CALayer alloc] init]); + ca_layer_.reset([[CALayer alloc] init]); } - [ca_layer setAnchorPoint:CGPointZero]; - if (old_layer && old_layer->ca_layer) - [superlayer replaceSublayer:old_layer->ca_layer with:ca_layer]; + [ca_layer_ setAnchorPoint:CGPointZero]; + if (old_layer && old_layer->ca_layer_) + [superlayer replaceSublayer:old_layer->ca_layer_ with:ca_layer_]; else - [superlayer addSublayer:ca_layer]; + [superlayer addSublayer:ca_layer_]; } - DCHECK_EQ([ca_layer superlayer], superlayer); + DCHECK_EQ([ca_layer_ superlayer], superlayer); bool update_anything = update_contents || update_contents_rect || update_rect || update_background_color || update_ca_edge_aa_mask || update_opacity || update_ca_filter; - switch (type) { + switch (type_) { case CALayerType::kHDRCopier: if (update_contents) { - metal::UpdateHDRCopierLayer(ca_layer.get(), io_surface.get(), - io_surface_color_space); + metal::UpdateHDRCopierLayer(ca_layer_.get(), io_surface_.get(), + io_surface_color_space_); } break; case CALayerType::kVideo: if (update_contents) { bool result = false; - if (cv_pixel_buffer) { + if (cv_pixel_buffer_) { result = AVSampleBufferDisplayLayerEnqueueCVPixelBuffer( - av_layer, cv_pixel_buffer); + av_layer_, cv_pixel_buffer_); if (!result) { LOG(ERROR) << "AVSampleBufferDisplayLayerEnqueueCVPixelBuffer failed"; } } else { result = AVSampleBufferDisplayLayerEnqueueIOSurface( - av_layer, io_surface, io_surface_color_space); + av_layer_, io_surface_, io_surface_color_space_); if (!result) { LOG(ERROR) << "AVSampleBufferDisplayLayerEnqueueIOSurface failed"; } @@ -894,47 +914,47 @@ void CARendererLayerTree::ContentLayer::CommitToCA(CALayer* superlayer, break; case CALayerType::kDefault: if (update_contents) { - if (io_surface) { - [ca_layer setContents:static_cast(io_surface.get())]; - } else if (solid_color_contents) { - [ca_layer setContents:solid_color_contents->GetContents()]; + if (io_surface_) { + [ca_layer_ setContents:static_cast(io_surface_.get())]; + } else if (solid_color_contents_) { + [ca_layer_ setContents:solid_color_contents_->GetContents()]; } else { - [ca_layer setContents:nil]; + [ca_layer_ setContents:nil]; } - if ([ca_layer respondsToSelector:(@selector(setContentsScale:))]) - [ca_layer setContentsScale:scale_factor]; + if ([ca_layer_ respondsToSelector:(@selector(setContentsScale:))]) + [ca_layer_ setContentsScale:scale_factor]; } break; } if (update_contents_rect) { - if (type != CALayerType::kVideo) - [ca_layer setContentsRect:contents_rect.ToCGRect()]; + if (type_ != CALayerType::kVideo) + [ca_layer_ setContentsRect:contents_rect_.ToCGRect()]; } if (update_rect) { - gfx::RectF dip_rect = gfx::RectF(rect); + gfx::RectF dip_rect = gfx::RectF(rect_); dip_rect.Scale(1 / scale_factor); - [ca_layer setPosition:CGPointMake(dip_rect.x(), dip_rect.y())]; - [ca_layer setBounds:CGRectMake(0, 0, dip_rect.width(), dip_rect.height())]; + [ca_layer_ setPosition:CGPointMake(dip_rect.x(), dip_rect.y())]; + [ca_layer_ setBounds:CGRectMake(0, 0, dip_rect.width(), dip_rect.height())]; } if (update_background_color) { CGFloat rgba_color_components[4] = { - SkColorGetR(background_color) / 255., - SkColorGetG(background_color) / 255., - SkColorGetB(background_color) / 255., - SkColorGetA(background_color) / 255., + SkColorGetR(background_color_) / 255., + SkColorGetG(background_color_) / 255., + SkColorGetB(background_color_) / 255., + SkColorGetA(background_color_) / 255., }; base::ScopedCFTypeRef srgb_background_color(CGColorCreate( CGColorSpaceCreateWithName(kCGColorSpaceSRGB), rgba_color_components)); - [ca_layer setBackgroundColor:srgb_background_color]; + [ca_layer_ setBackgroundColor:srgb_background_color]; } if (update_ca_edge_aa_mask) - [ca_layer setEdgeAntialiasingMask:ca_edge_aa_mask]; + [ca_layer_ setEdgeAntialiasingMask:ca_edge_aa_mask_]; if (update_opacity) - [ca_layer setOpacity:opacity]; + [ca_layer_ setOpacity:opacity_]; if (update_ca_filter) { - [ca_layer setMagnificationFilter:ca_filter]; - [ca_layer setMinificationFilter:ca_filter]; + [ca_layer_ setMagnificationFilter:ca_filter_]; + [ca_layer_ setMinificationFilter:ca_filter_]; } static bool show_borders = base::CommandLine::ForCurrentProcess()->HasSwitch( @@ -942,24 +962,24 @@ void CARendererLayerTree::ContentLayer::CommitToCA(CALayer* superlayer, if (show_borders) { base::ScopedCFTypeRef color; float alpha = update_anything ? 1.f : 0.2f; - if (type == CALayerType::kHDRCopier) { + if (type_ == CALayerType::kHDRCopier) { // Blue represents an HDR layer. color.reset(CGColorCreateGenericRGB(0, 0, 1, alpha)); - } else if (type == CALayerType::kVideo) { + } else if (type_ == CALayerType::kVideo) { // Yellow represents an AV layer. color.reset(CGColorCreateGenericRGB(1, 1, 0, alpha)); - } else if (io_surface) { + } else if (io_surface_) { // Magenta represents a CALayer. color.reset(CGColorCreateGenericRGB(1, 0, 1, alpha)); - } else if (solid_color_contents) { + } else if (solid_color_contents_) { // Cyan represents a solid color. color.reset(CGColorCreateGenericRGB(0, 1, 1, alpha)); } else { // Grey represents a CALayer that has not changed. color.reset(CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1)); } - [ca_layer setBorderWidth:1]; - [ca_layer setBorderColor:color]; + [ca_layer_ setBorderWidth:1]; + [ca_layer_ setBorderColor:color]; } } diff --git a/chromium/ui/accelerated_widget_mac/ca_transaction_observer.mm b/chromium/ui/accelerated_widget_mac/ca_transaction_observer.mm index af02cc27bcb..03bdf5fe8a3 100644 --- a/chromium/ui/accelerated_widget_mac/ca_transaction_observer.mm +++ b/chromium/ui/accelerated_widget_mac/ca_transaction_observer.mm @@ -13,11 +13,11 @@ #import #import -typedef enum { +typedef NS_ENUM(unsigned int, CATransactionPhase) { kCATransactionPhasePreLayout, kCATransactionPhasePreCommit, kCATransactionPhasePostCommit, -} CATransactionPhase; +}; @interface CATransaction () + (void)addCommitHandler:(void (^)(void))block diff --git a/chromium/ui/accelerated_widget_mac/io_surface_context.h b/chromium/ui/accelerated_widget_mac/io_surface_context.h index 504a52b3b60..a46878285b3 100644 --- a/chromium/ui/accelerated_widget_mac/io_surface_context.h +++ b/chromium/ui/accelerated_widget_mac/io_surface_context.h @@ -7,8 +7,6 @@ #include -#include -#include #include "base/mac/scoped_nsobject.h" #include "base/memory/ref_counted.h" diff --git a/chromium/ui/accessibility/BUILD.gn b/chromium/ui/accessibility/BUILD.gn index b4707c34628..cf03156c5c0 100644 --- a/chromium/ui/accessibility/BUILD.gn +++ b/chromium/ui/accessibility/BUILD.gn @@ -111,6 +111,8 @@ component("accessibility") { "ax_event_generator.cc", "ax_event_generator.h", "ax_export.h", + "ax_hypertext.cc", + "ax_hypertext.h", "ax_language_detection.cc", "ax_language_detection.h", "ax_mode_observer.h", @@ -242,6 +244,8 @@ test("accessibility_unittests") { "platform/ax_platform_node_unittest.cc", "platform/ax_platform_node_unittest.h", "platform/ax_unique_id_unittest.cc", + "platform/inspect/ax_inspect_scenario_unittest.cc", + "platform/inspect/ax_inspect_utils_unittest.cc", "platform/inspect/ax_property_node_unittest.cc", "run_all_unittests.cc", ] diff --git a/chromium/ui/accessibility/PRESUBMIT.py b/chromium/ui/accessibility/PRESUBMIT.py index c97381a70c1..e61f4cbdc7f 100644 --- a/chromium/ui/accessibility/PRESUBMIT.py +++ b/chromium/ui/accessibility/PRESUBMIT.py @@ -34,6 +34,9 @@ def GetEnumsFromFile(fullpath): # Strip out comments line = re.sub('//.*', '', line) + # Strip out mojo annotations. + line = re.sub('\[(.*)\]', '', line) + # Look for lines of the form "enum ENUM_NAME {" and get the enum_name m = re.search('enum ([\w]+) {', line) if m: diff --git a/chromium/ui/accessibility/accessibility_features.cc b/chromium/ui/accessibility/accessibility_features.cc index 07cd30ebfe1..57551faa5f0 100644 --- a/chromium/ui/accessibility/accessibility_features.cc +++ b/chromium/ui/accessibility/accessibility_features.cc @@ -94,13 +94,6 @@ bool IsIChromeAccessibleEnabled() { #endif // defined(OS_WIN) #if BUILDFLAG(IS_CHROMEOS_ASH) -const base::Feature kMagnifierNewFocusFollowing{ - "MagnifierNewFocusFollowing", base::FEATURE_ENABLED_BY_DEFAULT}; - -bool IsMagnifierNewFocusFollowingEnabled() { - return base::FeatureList::IsEnabled(::features::kMagnifierNewFocusFollowing); -} - const base::Feature kMagnifierPanningImprovements{ "MagnifierPanningImprovements", base::FEATURE_ENABLED_BY_DEFAULT}; @@ -119,12 +112,21 @@ bool IsMagnifierContinuousMouseFollowingModeSettingEnabled() { } const base::Feature kEnableSwitchAccessPointScanning{ - "EnableSwitchAccessPointScanning", base::FEATURE_DISABLED_BY_DEFAULT}; + "EnableSwitchAccessPointScanning", base::FEATURE_ENABLED_BY_DEFAULT}; bool IsSwitchAccessPointScanningEnabled() { return base::FeatureList::IsEnabled( ::features::kEnableSwitchAccessPointScanning); } + +const base::Feature kExperimentalAccessibilityDictationListening{ + "ExperimentalAccessibilityDictationListening", + base::FEATURE_ENABLED_BY_DEFAULT}; + +bool IsExperimentalAccessibilityDictationListeningEnabled() { + return base::FeatureList::IsEnabled( + ::features::kExperimentalAccessibilityDictationListening); +} #endif // BUILDFLAG(IS_CHROMEOS_ASH) const base::Feature kAugmentExistingImageLabels{ @@ -159,4 +161,13 @@ bool IsSelectToSpeakNavigationControlEnabled() { } #endif // BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_ANDROID) +const base::Feature kComputeAXMode{"ComputeAXMode", + base::FEATURE_DISABLED_BY_DEFAULT}; + +bool IsComputeAXModeEnabled() { + return base::FeatureList::IsEnabled(::features::kComputeAXMode); +} +#endif // defined(OS_ANDROID) + } // namespace features diff --git a/chromium/ui/accessibility/accessibility_features.h b/chromium/ui/accessibility/accessibility_features.h index 848656cc4af..09e87f2dd62 100644 --- a/chromium/ui/accessibility/accessibility_features.h +++ b/chromium/ui/accessibility/accessibility_features.h @@ -78,13 +78,6 @@ AX_BASE_EXPORT bool IsIChromeAccessibleEnabled(); #endif // defined(OS_WIN) #if BUILDFLAG(IS_CHROMEOS_ASH) -// Enables new magnifier focus following feature, which provides a richer -// focus following experience. -AX_BASE_EXPORT extern const base::Feature kMagnifierNewFocusFollowing; - -// Returns true if the new magnifier focus following feature is enabled. -AX_BASE_EXPORT bool IsMagnifierNewFocusFollowingEnabled(); - // Enables new magnifier panning improvements feature, which adds // additional keyboard and mouse panning functionality in Magnifier. AX_BASE_EXPORT extern const base::Feature kMagnifierPanningImprovements; @@ -107,6 +100,16 @@ AX_BASE_EXPORT extern const base::Feature kEnableSwitchAccessPointScanning; // Returns true if the feature to allow point scanning in switch access is // enabled. AX_BASE_EXPORT bool IsSwitchAccessPointScanningEnabled(); + +// Enables dictation using web speech to listen for a longer duration and +// allow profanity, and for dictation with web speech or on-device speech +// to continue listening after speech is finalized. +AX_BASE_EXPORT extern const base::Feature + kExperimentalAccessibilityDictationListening; + +// Returns true if the feature to allow experimental listening features for +// Dictation is enabled. +AX_BASE_EXPORT bool IsExperimentalAccessibilityDictationListeningEnabled(); #endif // BUILDFLAG(IS_CHROMEOS_ASH) // Enables Get Image Descriptions to augment existing images labels, @@ -144,6 +147,15 @@ AX_BASE_EXPORT extern const base::Feature kSelectToSpeakNavigationControl; AX_BASE_EXPORT bool IsSelectToSpeakNavigationControlEnabled(); #endif // BUILDFLAG(IS_CHROMEOS_ASH) +#if defined(OS_ANDROID) +// Compute the AXMode based on AccessibilityServiceInfo. If disabled, +// the AXMode is either entirely on or entirely off. +AX_BASE_EXPORT extern const base::Feature kComputeAXMode; + +// Returns true if the IChromeAccessible COM API is enabled. +AX_BASE_EXPORT bool IsComputeAXModeEnabled(); +#endif // defined(OS_ANDROID) + } // namespace features #endif // UI_ACCESSIBILITY_ACCESSIBILITY_FEATURES_H_ diff --git a/chromium/ui/accessibility/accessibility_switches.cc b/chromium/ui/accessibility/accessibility_switches.cc index 3bd01485bb3..b4ffa8e9806 100644 --- a/chromium/ui/accessibility/accessibility_switches.cc +++ b/chromium/ui/accessibility/accessibility_switches.cc @@ -22,12 +22,6 @@ const char kEnableExperimentalAccessibilityDictationExtension[] = const char kEnableExperimentalAccessibilityDictationOffline[] = "enable-experimental-accessibility-dictation-offline"; -// Enables dictation using web speech to listen for a longer duration, -// and for dictation with web speech or on-device speech to continue listening -// after speech is finalized. -const char kEnableExperimentalAccessibilityDictationListening[] = - "enable-experimental-accessibility-dictation-listening"; - // Enables support for visually debugging the accessibility labels // feature, which provides images descriptions for screen reader users. const char kEnableExperimentalAccessibilityLabelsDebugging[] = @@ -65,11 +59,6 @@ bool IsExperimentalAccessibilityDictationOfflineEnabled() { ::switches::kEnableExperimentalAccessibilityDictationOffline); } -bool IsExperimentalAccessibilityDictationListeningEnabled() { - return base::CommandLine::ForCurrentProcess()->HasSwitch( - ::switches::kEnableExperimentalAccessibilityDictationListening); -} - bool IsExperimentalAccessibilityLanguageDetectionEnabled() { return base::CommandLine::ForCurrentProcess()->HasSwitch( ::switches::kEnableExperimentalAccessibilityLanguageDetection); diff --git a/chromium/ui/accessibility/accessibility_switches.h b/chromium/ui/accessibility/accessibility_switches.h index 5dfeba83b64..634b7808717 100644 --- a/chromium/ui/accessibility/accessibility_switches.h +++ b/chromium/ui/accessibility/accessibility_switches.h @@ -35,10 +35,6 @@ AX_BASE_EXPORT bool IsExperimentalAccessibilityDictationExtensionEnabled(); // Returns true if experimental accessibility offline dictation is enabled. AX_BASE_EXPORT bool IsExperimentalAccessibilityDictationOfflineEnabled(); -// Returns true if experimental accessibility dictation listening features are -// enabled. -AX_BASE_EXPORT bool IsExperimentalAccessibilityDictationListeningEnabled(); - // Returns true if experimental accessibility language detection is enabled. AX_BASE_EXPORT bool IsExperimentalAccessibilityLanguageDetectionEnabled(); diff --git a/chromium/ui/accessibility/ax_action_data.h b/chromium/ui/accessibility/ax_action_data.h index 796f04c40ea..4fe1b186602 100644 --- a/chromium/ui/accessibility/ax_action_data.h +++ b/chromium/ui/accessibility/ax_action_data.h @@ -66,7 +66,7 @@ struct AX_BASE_EXPORT AXActionData { // The target rect for the action. gfx::Rect target_rect; - // The target point for the action. + // The target point for the action in screen coordinates. gfx::Point target_point; // The new value for a node, for the SET_VALUE action. UTF-8 encoded. diff --git a/chromium/ui/accessibility/ax_active_popup.cc b/chromium/ui/accessibility/ax_active_popup.cc index f459bbf3a31..40ef023245f 100644 --- a/chromium/ui/accessibility/ax_active_popup.cc +++ b/chromium/ui/accessibility/ax_active_popup.cc @@ -11,23 +11,23 @@ namespace ui { namespace { -base::Optional& GetActivePopupAXUniqueIdInstance() { +absl::optional& GetActivePopupAXUniqueIdInstance() { // Keeps track of the unique ID that can be used to retrieve the // `ViewAccessibility` object that is handling the accessibility for the // currently active autofill popup. This singleton is used for communicating // the live status of the autofill popup between web contents and Views. The // assumption here is that only one autofill popup can exist at a time. - static base::NoDestructor> active_popup_ax_unique_id; + static base::NoDestructor> active_popup_ax_unique_id; return *active_popup_ax_unique_id; } } // namespace -base::Optional GetActivePopupAxUniqueId() { +absl::optional GetActivePopupAxUniqueId() { return GetActivePopupAXUniqueIdInstance(); } -void SetActivePopupAxUniqueId(base::Optional ax_unique_id) { +void SetActivePopupAxUniqueId(absl::optional ax_unique_id) { // When an instance of autofill popup hides, the caller of popup hide should // make sure active_popup_ax_unique_id is cleared. The assumption is that // there can only be one active autofill popup existing at a time. If on @@ -41,7 +41,7 @@ void SetActivePopupAxUniqueId(base::Optional ax_unique_id) { } void ClearActivePopupAxUniqueId() { - GetActivePopupAXUniqueIdInstance() = base::nullopt; + GetActivePopupAXUniqueIdInstance() = absl::nullopt; } } // namespace ui diff --git a/chromium/ui/accessibility/ax_active_popup.h b/chromium/ui/accessibility/ax_active_popup.h index 9d6f1abb775..82ba49dd4d0 100644 --- a/chromium/ui/accessibility/ax_active_popup.h +++ b/chromium/ui/accessibility/ax_active_popup.h @@ -5,15 +5,15 @@ #ifndef UI_ACCESSIBILITY_AX_ACTIVE_POPUP_H_ #define UI_ACCESSIBILITY_AX_ACTIVE_POPUP_H_ -#include "base/optional.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/accessibility/ax_export.h" #include "ui/accessibility/ax_node_data.h" namespace ui { -AX_EXPORT base::Optional GetActivePopupAxUniqueId(); +AX_EXPORT absl::optional GetActivePopupAxUniqueId(); -AX_EXPORT void SetActivePopupAxUniqueId(base::Optional ax_unique_id); +AX_EXPORT void SetActivePopupAxUniqueId(absl::optional ax_unique_id); AX_EXPORT void ClearActivePopupAxUniqueId(); diff --git a/chromium/ui/accessibility/ax_assistant_structure.cc b/chromium/ui/accessibility/ax_assistant_structure.cc index ffc101c9509..6e7155334cb 100644 --- a/chromium/ui/accessibility/ax_assistant_structure.cc +++ b/chromium/ui/accessibility/ax_assistant_structure.cc @@ -7,9 +7,9 @@ #include #include "base/logging.h" -#include "base/optional.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_node.h" #include "ui/accessibility/ax_role_properties.h" @@ -35,13 +35,8 @@ bool HasFocusableChild(const AXNode* node) { } // TODO(muyuanli): share with BrowserAccessibility. -bool IsSimpleTextControl(const AXNode* node, uint32_t state) { - return (node->data().role == ax::mojom::Role::kTextField || - node->data().role == ax::mojom::Role::kTextFieldWithComboBox || - node->data().role == ax::mojom::Role::kSearchBox || - node->data().HasBoolAttribute( - ax::mojom::BoolAttribute::kEditableRoot)) && - !node->data().HasState(ax::mojom::State::kRichlyEditable); +bool IsTextField(const AXNode* node, uint32_t state) { + return node->data().IsTextField(); } bool IsRichTextEditable(const AXNode* node) { @@ -51,7 +46,7 @@ bool IsRichTextEditable(const AXNode* node) { !parent->data().HasState(ax::mojom::State::kRichlyEditable)); } -bool IsNativeTextControl(const AXNode* node) { +bool IsAtomicTextField(const AXNode* node) { const std::string& html_tag = node->data().GetStringAttribute(ax::mojom::StringAttribute::kHtmlTag); if (html_tag == "input") { @@ -70,7 +65,7 @@ bool IsLeaf(const AXNode* node) { if (node->children().empty()) return true; - if (IsNativeTextControl(node) || node->IsText()) { + if (IsAtomicTextField(node) || node->IsText()) { return true; } @@ -107,9 +102,8 @@ std::u16string GetValue(const AXNode* node) { node->data().GetString16Attribute(ax::mojom::StringAttribute::kValue); if (value.empty() && - (IsSimpleTextControl(node, node->data().state) || - IsRichTextEditable(node)) && - !IsNativeTextControl(node)) { + (IsTextField(node, node->data().state) || IsRichTextEditable(node)) && + !IsAtomicTextField(node)) { value = GetInnerText(node); } @@ -198,44 +192,44 @@ std::u16string GetText(const AXNode* node) { // Get string representation of ax::mojom::Role. We are not using ToString() in // ax_enums.h since the names are subject to change in the future and // we are only interested in a subset of the roles. -base::Optional AXRoleToString(ax::mojom::Role role) { +absl::optional AXRoleToString(ax::mojom::Role role) { switch (role) { case ax::mojom::Role::kArticle: - return base::Optional("article"); + return absl::optional("article"); case ax::mojom::Role::kBanner: - return base::Optional("banner"); + return absl::optional("banner"); case ax::mojom::Role::kCaption: - return base::Optional("caption"); + return absl::optional("caption"); case ax::mojom::Role::kComplementary: - return base::Optional("complementary"); + return absl::optional("complementary"); case ax::mojom::Role::kDate: - return base::Optional("date"); + return absl::optional("date"); case ax::mojom::Role::kDateTime: - return base::Optional("date_time"); + return absl::optional("date_time"); case ax::mojom::Role::kDefinition: - return base::Optional("definition"); + return absl::optional("definition"); case ax::mojom::Role::kDetails: - return base::Optional("details"); + return absl::optional("details"); case ax::mojom::Role::kDocument: - return base::Optional("document"); + return absl::optional("document"); case ax::mojom::Role::kFeed: - return base::Optional("feed"); + return absl::optional("feed"); case ax::mojom::Role::kHeading: - return base::Optional("heading"); + return absl::optional("heading"); case ax::mojom::Role::kIframe: - return base::Optional("iframe"); + return absl::optional("iframe"); case ax::mojom::Role::kIframePresentational: - return base::Optional("iframe_presentational"); + return absl::optional("iframe_presentational"); case ax::mojom::Role::kList: - return base::Optional("list"); + return absl::optional("list"); case ax::mojom::Role::kListItem: - return base::Optional("list_item"); + return absl::optional("list_item"); case ax::mojom::Role::kMain: - return base::Optional("main"); + return absl::optional("main"); case ax::mojom::Role::kParagraph: - return base::Optional("paragraph"); + return absl::optional("paragraph"); default: - return base::Optional(); + return absl::optional(); } } @@ -318,16 +312,19 @@ void WalkAXTreeDepthFirst(const AXNode* node, } if (end_selection > 0) result->selection = - base::make_optional(start_selection, end_selection); + absl::make_optional(start_selection, end_selection); } result->html_tag = node->GetStringAttribute(ax::mojom::StringAttribute::kHtmlTag); - node->GetHtmlAttribute("id", &result->html_id); - result->html_class = - node->GetStringAttribute(ax::mojom::StringAttribute::kClassName); result->css_display = node->GetStringAttribute(ax::mojom::StringAttribute::kDisplay); + result->html_attributes = node->data().html_attributes; + + std::string class_name = + node->GetStringAttribute(ax::mojom::StringAttribute::kClassName); + if (!class_name.empty()) + result->html_attributes.push_back({"class", class_name}); for (size_t i = 0; i < node->GetUnignoredChildCount(); ++i) { AXNode* child = node->GetUnignoredChildAtIndex(i); diff --git a/chromium/ui/accessibility/ax_assistant_structure.h b/chromium/ui/accessibility/ax_assistant_structure.h index c9003cfd36f..87cae9df62f 100644 --- a/chromium/ui/accessibility/ax_assistant_structure.h +++ b/chromium/ui/accessibility/ax_assistant_structure.h @@ -12,7 +12,7 @@ #include #include "base/macros.h" -#include "base/optional.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/accessibility/ax_enums.mojom-forward.h" #include "ui/accessibility/ax_export.h" #include "ui/accessibility/ax_tree_update.h" @@ -45,7 +45,7 @@ struct AssistantNode { bool line_through; // Selected portion of the text. - base::Optional selection; + absl::optional selection; // Fake Android view class name of the element. Each node is assigned // a closest approximation of Android's views to keep the server happy. @@ -53,13 +53,14 @@ struct AssistantNode { // HTML and CSS attributes. std::string html_tag; - std::string html_id; - std::string html_class; std::string css_display; + // HTML attributes: map from lowercase ASCII HTML attribute name to value. + base::StringPairs html_attributes; + // Accessibility functionality of the node inferred from DOM or based on HTML // role attribute. - base::Optional role; + absl::optional role; }; struct AssistantTree { diff --git a/chromium/ui/accessibility/ax_enum_util.cc b/chromium/ui/accessibility/ax_enum_util.cc index dcd52498110..2e3200de4f1 100644 --- a/chromium/ui/accessibility/ax_enum_util.cc +++ b/chromium/ui/accessibility/ax_enum_util.cc @@ -338,8 +338,6 @@ const char* ToString(ax::mojom::Role role) { return "iframe"; case ax::mojom::Role::kIframePresentational: return "iframePresentational"; - case ax::mojom::Role::kIgnored: - return "ignored"; case ax::mojom::Role::kImage: return "image"; case ax::mojom::Role::kImeCandidate: @@ -422,8 +420,6 @@ const char* ToString(ax::mojom::Role role) { return "portal"; case ax::mojom::Role::kPre: return "pre"; - case ax::mojom::Role::kPresentational: - return "presentational"; case ax::mojom::Role::kProgressIndicator: return "progressIndicator"; case ax::mojom::Role::kRadioButton: @@ -792,8 +788,8 @@ const char* ToString(ax::mojom::StringAttribute string_attribute) { return "liveRelevant"; case ax::mojom::StringAttribute::kLiveStatus: return "liveStatus"; - case ax::mojom::StringAttribute::kParentTreeNodeAppId: - return "parentTreeNodeAppId"; + case ax::mojom::StringAttribute::kAppId: + return "appId"; case ax::mojom::StringAttribute::kPlaceholder: return "placeholder"; case ax::mojom::StringAttribute::kRole: @@ -971,8 +967,8 @@ const char* ToString(ax::mojom::BoolAttribute bool_attribute) { return "none"; case ax::mojom::BoolAttribute::kBusy: return "busy"; - case ax::mojom::BoolAttribute::kEditableRoot: - return "editableRoot"; + case ax::mojom::BoolAttribute::kContentEditableRoot: + return "contentEditableRoot"; case ax::mojom::BoolAttribute::kContainerLiveAtomic: return "containerLiveAtomic"; case ax::mojom::BoolAttribute::kContainerLiveBusy: @@ -1498,14 +1494,18 @@ const char* ToString(ax::mojom::DescriptionFrom description_from) { switch (description_from) { case ax::mojom::DescriptionFrom::kNone: return "none"; - case ax::mojom::DescriptionFrom::kUninitialized: - return "uninitialized"; - case ax::mojom::DescriptionFrom::kAttribute: - return "attribute"; - case ax::mojom::DescriptionFrom::kContents: - return "contents"; + case ax::mojom::DescriptionFrom::kAriaDescription: + return "ariaDescription"; + case ax::mojom::DescriptionFrom::kButtonLabel: + return "buttonLabel"; case ax::mojom::DescriptionFrom::kRelatedElement: return "relatedElement"; + case ax::mojom::DescriptionFrom::kRubyAnnotation: + return "rubyAnnotation"; + case ax::mojom::DescriptionFrom::kSummary: + return "summary"; + case ax::mojom::DescriptionFrom::kTableCaption: + return "tableCaption"; case ax::mojom::DescriptionFrom::kTitle: return "title"; } diff --git a/chromium/ui/accessibility/ax_enums.mojom b/chromium/ui/accessibility/ax_enums.mojom index 6ff101120cc..5097998533f 100644 --- a/chromium/ui/accessibility/ax_enums.mojom +++ b/chromium/ui/accessibility/ax_enums.mojom @@ -25,68 +25,73 @@ module ax.mojom; // If unspecified, the attribute is used across web and native on multiple // platforms. +// Next version: 1 +// Next value: 59 +[Extensible, Stable, Uuid="686e661e-f8c7-4214-8713-1f66d95d3ffa"] enum Event { - kNone, - kActiveDescendantChanged, - kAlert, - kAriaAttributeChanged, // Implicit - kAutocorrectionOccured, // Unknown: http://crbug.com/392498 - kBlur, // Remove: http://crbug.com/392502 - kCheckedStateChanged, // Implicit - kChildrenChanged, - kClicked, - kControlsChanged, - kDocumentSelectionChanged, - kDocumentTitleChanged, - kEndOfTest, // Sentinel value indicating the end of a test - kExpandedChanged, // Web - kFocus, - kFocusAfterMenuClose, - kFocusContext, // Contextual focus event that must delay the next focus event - kHide, // Remove: http://crbug.com/392502 - kHitTestResult, - kHover, - kImageFrameUpdated, // Web - kLayoutComplete, // Web - kLiveRegionCreated, // Implicit - kLiveRegionChanged, // Web - kLoadComplete, // Web - kLoadStart, // Web / AuraLinux - kLocationChanged, // Web - kMediaStartedPlaying, // Native / Automation - kMediaStoppedPlaying, // Native / Automation - kMenuEnd, // Native / web: menu interaction has ended. - kMenuListValueChanged, // Web - kMenuPopupEnd, // Native / web: a menu/submenu is hidden/closed. - kMenuPopupStart, // Native / web: a menu/submenu is shown/opened. - kMenuStart, // Native / web: menu interaction has begun. - kMouseCanceled, - kMouseDragged, - kMouseMoved, - kMousePressed, - kMouseReleased, - kRowCollapsed, - kRowCountChanged, - kRowExpanded, - kScrollPositionChanged, // Web - kScrolledToAnchor, // Web - kSelectedChildrenChanged, // Web - kSelection, // Native - kSelectionAdd, // Native - kSelectionRemove, // Native - kShow, // Native / Automation - kStateChanged, // Native / Automation - kTextChanged, + [Default]kNone = 0, + kActiveDescendantChanged = 1, + kAlert = 2, + kAriaAttributeChanged = 3, // Implicit + kAutocorrectionOccured = 4, // Unknown: http://crbug.com/392498 + kBlur = 5, // Remove: http://crbug.com/392502 + kCheckedStateChanged = 6, // Implicit + kChildrenChanged = 7, + kClicked = 8, + kControlsChanged = 9, + kDocumentSelectionChanged = 10, + kDocumentTitleChanged = 11, + kEndOfTest = 12, // Sentinel value indicating the end of a test + kExpandedChanged = 13, // Web + kFocus = 14, + kFocusAfterMenuClose = 15, + + // Contextual focus event that must delay the next focus event. + kFocusContext = 16, + kHide = 17, // Remove: http://crbug.com/392502 + kHitTestResult = 18, + kHover = 19, + kImageFrameUpdated = 20, // Web + kLayoutComplete = 21, // Web + kLiveRegionCreated = 22, // Implicit + kLiveRegionChanged = 23, // Web + kLoadComplete = 24, // Web + kLoadStart = 25, // Web / AuraLinux + kLocationChanged = 26, // Web + kMediaStartedPlaying = 27, // Native / Automation + kMediaStoppedPlaying = 28, // Native / Automation + kMenuEnd = 29, // Native / web: menu interaction has ended. + kMenuListValueChanged = 30, // Web + kMenuPopupEnd = 31, // Native / web: a menu/submenu is hidden/closed. + kMenuPopupStart = 32, // Native / web: a menu/submenu is shown/opened. + kMenuStart = 33, // Native / web: menu interaction has begun. + kMouseCanceled = 34, + kMouseDragged = 35, + kMouseMoved = 36, + kMousePressed = 37, + kMouseReleased = 38, + kRowCollapsed = 39, + kRowCountChanged = 40, + kRowExpanded = 41, + kScrollPositionChanged = 42, // Web + kScrolledToAnchor = 43, // Web + kSelectedChildrenChanged = 44, // Web + kSelection = 45, // Native + kSelectionAdd = 46, // Native + kSelectionRemove = 47, // Native + kShow = 48, // Native / Automation + kStateChanged = 49, // Native / Automation + kTextChanged = 50, // TODO(nektar): Remove kTextSelectionChanged. - kTextSelectionChanged, - kTooltipClosed, - kTooltipOpened, - kTreeChanged, // Don't explicitly fire this event. + kTextSelectionChanged = 51, + kTooltipClosed = 52, + kTooltipOpened = 53, + kTreeChanged = 54, // Don't explicitly fire this event. // TODO(nektar): Remove kValueChanged. - kValueChanged, - kWindowActivated, // Native - kWindowDeactivated, // Native - kWindowVisibilityChanged, // Native + kValueChanged = 55, + kWindowActivated = 56, // Native + kWindowDeactivated = 57, // Native + kWindowVisibilityChanged = 58, // Native }; // Accessibility object roles. @@ -102,7 +107,7 @@ enum Event { // // Native: this attribute is only used in native UI. enum Role { - kNone, + kNone, // Used for role="none"/"presentation" -- ignored in platform tree. kAbbr, kAlert, kAlertDialog, @@ -212,7 +217,6 @@ enum Role { kHeading, kIframe, kIframePresentational, - kIgnored, kImage, kImeCandidate, kInlineTextBox, @@ -257,7 +261,6 @@ enum Role { kPopUpButton, kPortal, kPre, - kPresentational, kProgressIndicator, kRadioButton, kRadioGroup, @@ -333,102 +336,105 @@ enum State { // An action to be taken on an accessibility node. // In contrast to |AXDefaultActionVerb|, these describe what happens to the // object, e.g. "FOCUS". +// Next version: 1 +// Next value: 33 +[Extensible, Stable, Uuid="ed8e4466-0522-4f98-ac28-59a523b70232"] enum Action { - kNone, + [Default]kNone = 0, // Request image annotations for all the eligible images on a page. - kAnnotatePageImages, + kAnnotatePageImages = 1, - kBlur, + kBlur = 2, // Notifies a node that it no longer has accessibility focus. // Currently used only on Android and only internally, it's not // exposed to the open web. See kSetAccessibilityFocus, below. - kClearAccessibilityFocus, + kClearAccessibilityFocus = 3, // Collapse the collapsible node. - kCollapse, + kCollapse = 4, - kCustomAction, + kCustomAction = 5, // Decrement a slider or range control by one step value. - kDecrement, + kDecrement = 6, // Do the default action for an object, typically this means "click". - kDoDefault, + kDoDefault = 7, // Expand the expandable node. - kExpand, + kExpand = 8, - kFocus, + kFocus = 9, // Return the content of this image object in the image_data attribute. - kGetImageData, + kGetImageData = 10, // Gets the bounding rect for a range of text. - kGetTextLocation, + kGetTextLocation = 11, - kHideTooltip, + kHideTooltip = 12, // Given a point, find the object it corresponds to and fire a // |AXActionData.hit_test_event_to_fire| event on it in response. - kHitTest, + kHitTest = 13, // Increment a slider or range control by one step value. - kIncrement, + kIncrement = 14, // For internal use only; signals to tree sources to invalidate an entire // tree. - kInternalInvalidateTree, + kInternalInvalidateTree = 15, // Load inline text boxes for this subtree, providing information // about word boundaries, line layout, and individual character // bounding boxes. - kLoadInlineTextBoxes, + kLoadInlineTextBoxes = 16, // Delete any selected text in the control's text value and // insert |AXActionData::value| in its place, like when typing or pasting. - kReplaceSelectedText, + kReplaceSelectedText = 17, // Scrolls by approximately one screen in a specific direction. Should be // called on a node that has scrollable boolean set to true. - kScrollBackward, - kScrollDown, - kScrollForward, - kScrollLeft, - kScrollRight, - kScrollUp, + kScrollBackward = 18, + kScrollDown = 19, + kScrollForward = 20, + kScrollLeft = 21, + kScrollRight = 22, + kScrollUp = 23, // Scroll any scrollable containers to make the target object visible // on the screen. Optionally pass a subfocus rect in // AXActionData.target_rect, in node-local coordinates. - kScrollToMakeVisible, + kScrollToMakeVisible = 24, // Scroll the given object to a specified point on the screen in // global screen coordinates. Pass a point in AXActionData.target_point. - kScrollToPoint, + kScrollToPoint = 25, // Notifies a node that it has accessibility focus. // Currently used only on Android and only internally, it's not // exposed to the open web. See kClearAccessibilityFocus, above. - kSetAccessibilityFocus, + kSetAccessibilityFocus = 26, - kSetScrollOffset, - kSetSelection, + kSetScrollOffset = 27, + kSetSelection = 28, // Don't focus this node, but set it as the sequential focus navigation // starting point, so that pressing Tab moves to the next element // following this one, for example. - kSetSequentialFocusNavigationStartingPoint, + kSetSequentialFocusNavigationStartingPoint = 29, // Replace the value of the control with AXActionData::value and // reset the selection, if applicable. - kSetValue, - kShowContextMenu, + kSetValue = 30, + kShowContextMenu = 31, // Send an event signaling the end of a test. - kSignalEndOfTest, - kShowTooltip, + kSignalEndOfTest = 32, + kShowTooltip = 33, }; enum ActionFlags { @@ -440,23 +446,28 @@ enum ActionFlags { // A list of valid values for the horizontal and vertical scroll alignment // arguments in |AXActionData|. These values control where a node is scrolled // in the viewport. +// Next version: 1 +// Next value: 6 +[Extensible, Stable, Uuid="a9d4f137-4f2e-4533-a4ac-cabdc433ecee"] enum ScrollAlignment { - kNone, - kScrollAlignmentCenter, - kScrollAlignmentTop, - kScrollAlignmentBottom, - kScrollAlignmentLeft, - kScrollAlignmentRight, - kScrollAlignmentClosestEdge + [Default]kNone = 0, + kScrollAlignmentCenter = 1, + kScrollAlignmentTop = 2, + kScrollAlignmentBottom = 3, + kScrollAlignmentLeft = 4, + kScrollAlignmentRight = 5, + kScrollAlignmentClosestEdge = 6 }; // A list of valid values for the scroll behavior argument to argument in // |AXActionData|. These values control whether a node is scrolled in the // viewport if it is already visible. +// Next version: 1 +[Extensible, Stable, Uuid="8bf2a1cb-2edb-4e41-8d7e-a6c8baa95c85"] enum ScrollBehavior { - kNone, - kDoNotScrollIfVisible, - kScrollIfVisible, + [Default]kNone = 0, + kDoNotScrollIfVisible = 1, + kScrollIfVisible = 2, }; // A list of valid values for the |AXIntAttribute| |default_action_verb|. @@ -496,6 +507,7 @@ enum Mutation { enum StringAttribute { kNone, kAccessKey, + kAppId, // Only used when invalid_state == invalid_state_other. kAriaInvalidValue, kAutoComplete, @@ -505,7 +517,7 @@ enum StringAttribute { kClassName, kContainerLiveRelevant, kContainerLiveStatus, - kDescription, + kDescription, // Any description, from any description source. kDisplay, // Only present when different from parent. kFontFamily, @@ -522,7 +534,6 @@ enum StringAttribute { kName, kLiveRelevant, kLiveStatus, - kParentTreeNodeAppId, // Only if not already exposed in kName (NameFrom::kPlaceholder) kPlaceholder, kRole, @@ -708,9 +719,9 @@ enum BoolAttribute { // Generic busy state, does not have to be on a live region. kBusy, - // The object is at the root of an editable field, such as a content - // editable. - kEditableRoot, + // The object is at the root of a content editable region, or at a + // element that has "design-mode" set to "on". + kContentEditableRoot, // Live region attributes. kContainerLiveAtomic, @@ -1079,11 +1090,13 @@ enum NameFrom { enum DescriptionFrom { kNone, - kUninitialized, - kAttribute, - kContents, + kAriaDescription, + kButtonLabel, // HTML-AAM 5.2.2 kRelatedElement, - kTitle, + kRubyAnnotation, + kSummary, // HTML-AAM 5.8.2 + kTableCaption, // HTML-AAM 5.9.2 + kTitle }; enum EventFrom { diff --git a/chromium/ui/accessibility/ax_event_generator.cc b/chromium/ui/accessibility/ax_event_generator.cc index ebc55f7490f..6290c3932b3 100644 --- a/chromium/ui/accessibility/ax_event_generator.cc +++ b/chromium/ui/accessibility/ax_event_generator.cc @@ -342,6 +342,10 @@ void AXEventGenerator::OnStateChanged(AXTree* tree, AddEvent(node, Event::IGNORED_CHANGED); if (!new_value) AddEvent(node, Event::SUBTREE_CREATED); + if (node->data().role == ax::mojom::Role::kMenu) { + new_value ? AddEvent(node, Event::MENU_POPUP_END) + : AddEvent(node, Event::MENU_POPUP_START); + } break; } case ax::mojom::State::kMultiline: @@ -1195,6 +1199,10 @@ const char* ToString(AXEventGenerator::Event event) { return "loadStart"; case AXEventGenerator::Event::MENU_ITEM_SELECTED: return "menuItemSelected"; + case ui::AXEventGenerator::Event::MENU_POPUP_END: + return "menuPopupEnd"; + case ui::AXEventGenerator::Event::MENU_POPUP_START: + return "menuPopupStart"; case AXEventGenerator::Event::MULTILINE_STATE_CHANGED: return "multilineStateChanged"; case AXEventGenerator::Event::MULTISELECTABLE_STATE_CHANGED: diff --git a/chromium/ui/accessibility/ax_event_generator.h b/chromium/ui/accessibility/ax_event_generator.h index 96dbf98525e..71d124e1501 100644 --- a/chromium/ui/accessibility/ax_event_generator.h +++ b/chromium/ui/accessibility/ax_event_generator.h @@ -82,6 +82,8 @@ class AX_EXPORT AXEventGenerator : public AXTreeObserver { LOAD_COMPLETE, LOAD_START, MENU_ITEM_SELECTED, + MENU_POPUP_END, + MENU_POPUP_START, MULTILINE_STATE_CHANGED, MULTISELECTABLE_STATE_CHANGED, NAME_CHANGED, diff --git a/chromium/ui/accessibility/ax_event_generator_unittest.cc b/chromium/ui/accessibility/ax_event_generator_unittest.cc index e612489e4b7..9ed23892c9b 100644 --- a/chromium/ui/accessibility/ax_event_generator_unittest.cc +++ b/chromium/ui/accessibility/ax_event_generator_unittest.cc @@ -523,7 +523,6 @@ TEST(AXEventGeneratorTest, SelectionInTextFieldChanged) { text_field.role = ax::mojom::Role::kTextField; text_field.SetValue("Testing"); text_field.AddState(ax::mojom::State::kEditable); - text_field.AddBoolAttribute(ax::mojom::BoolAttribute::kEditableRoot, true); root.child_ids = {text_field.id}; @@ -615,7 +614,6 @@ TEST(AXEventGeneratorTest, ValueInTextFieldChanged) { text_field.id = 1; text_field.role = ax::mojom::Role::kTextField; text_field.AddState(ax::mojom::State::kEditable); - text_field.AddBoolAttribute(ax::mojom::BoolAttribute::kEditableRoot, true); text_field.SetValue("Before"); AXTreeUpdate initial_state; @@ -665,7 +663,6 @@ TEST(AXEventGeneratorTest, InvalidStatusChanged) { text_field.id = 1; text_field.role = ax::mojom::Role::kTextField; text_field.AddState(ax::mojom::State::kEditable); - text_field.AddBoolAttribute(ax::mojom::BoolAttribute::kEditableRoot, true); text_field.AddStringAttribute(ax::mojom::StringAttribute::kValue, "Text"); AXTreeUpdate initial_state; @@ -2442,7 +2439,6 @@ TEST(AXEventGeneratorTest, RequiredStateChanged) { text_field.id = 1; text_field.role = ax::mojom::Role::kTextField; text_field.AddState(ax::mojom::State::kEditable); - text_field.AddBoolAttribute(ax::mojom::BoolAttribute::kEditableRoot, true); AXTreeUpdate initial_state; initial_state.root_id = text_field.id; @@ -2654,7 +2650,6 @@ TEST(AXEventGeneratorTest, EditableTextChanged) { text_field.id = 2; text_field.role = ax::mojom::Role::kTextField; text_field.AddState(ax::mojom::State::kEditable); - text_field.AddBoolAttribute(ax::mojom::BoolAttribute::kEditableRoot, true); text_field.SetValue("Before"); root.child_ids = {text_field.id}; diff --git a/chromium/ui/accessibility/ax_hypertext.cc b/chromium/ui/accessibility/ax_hypertext.cc new file mode 100644 index 00000000000..a6770a16f33 --- /dev/null +++ b/chromium/ui/accessibility/ax_hypertext.cc @@ -0,0 +1,14 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/accessibility/ax_hypertext.h" + +namespace ui { + +AXHypertext::AXHypertext() = default; +AXHypertext::~AXHypertext() = default; +AXHypertext::AXHypertext(const AXHypertext& other) = default; +AXHypertext& AXHypertext::operator=(const AXHypertext& other) = default; + +} // namespace ui diff --git a/chromium/ui/accessibility/ax_hypertext.h b/chromium/ui/accessibility/ax_hypertext.h new file mode 100644 index 00000000000..6abb3d7498a --- /dev/null +++ b/chromium/ui/accessibility/ax_hypertext.h @@ -0,0 +1,50 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_ACCESSIBILITY_AX_HYPERTEXT_H_ +#define UI_ACCESSIBILITY_AX_HYPERTEXT_H_ + +#include +#include +#include +#include + +#include "ui/accessibility/ax_export.h" +#include "ui/accessibility/ax_node_data.h" + +namespace ui { + +// Stores the hypertext for an `AXNode` in the accessibility tree. Hypertext has +// nothing to do with HTML but is how displayed text and embedded objects are +// represented in ATK and IAccessible2 APIs. +// +// Hypertext is computed as follows: If this node is a leaf, returns the inner +// text of this node. This is equivalent to its visible accessible name. +// Otherwise, if this node is not a leaf, represents every non-textual child +// node with a special "embedded object character", and every textual child node +// with its inner text. Textual nodes include e.g. static text and white space. +// Each non-textual child node is also called a hyperlink. +struct AX_EXPORT AXHypertext { + AXHypertext(); + ~AXHypertext(); + AXHypertext(const AXHypertext& other); + AXHypertext& operator=(const AXHypertext& other); + + // A flag that should be set if the hypertext information in this struct is + // out-of-date and needs to be updated. This flag should always be set upon + // construction because constructing this struct doesn't compute the + // hypertext. + bool needs_update = true; + + // Maps an embedded character offset in |hypertext| to an index in the list of + // unignored children. A hyperlink is defined as any non-textual child. + std::map hypertext_offset_to_hyperlink_child_index; + + // See class comment for information on how this is computed. + std::u16string hypertext; +}; + +} // namespace ui + +#endif // UI_ACCESSIBILITY_AX_HYPERTEXT_H_ diff --git a/chromium/ui/accessibility/ax_node.cc b/chromium/ui/accessibility/ax_node.cc index 4f6ca792e4d..e6cf4b3c4df 100644 --- a/chromium/ui/accessibility/ax_node.cc +++ b/chromium/ui/accessibility/ax_node.cc @@ -15,6 +15,7 @@ #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" #include "ui/accessibility/ax_enums.mojom.h" +#include "ui/accessibility/ax_hypertext.h" #include "ui/accessibility/ax_language_detection.h" #include "ui/accessibility/ax_role_properties.h" #include "ui/accessibility/ax_table_info.h" @@ -629,13 +630,16 @@ void AXNode::ClearLanguageInfo() { std::u16string AXNode::GetHypertext() const { DCHECK(!tree_->GetTreeUpdateInProgressState()); + // TODO(nektar): Introduce proper caching of hypertext via + // `AXHypertext::needs_update`. + hypertext_ = AXHypertext(); // Hypertext is not exposed for descendants of leaf nodes. For such nodes, // their inner text is equivalent to their hypertext. Otherwise, we would - // never be able to compute equivalent ancestor positions in text fields given - // an AXPosition on an inline text box descendant, because there is often an - // ignored generic container between the text descendants and the text field - // node. + // never be able to compute equivalent ancestor positions in atomic text + // fields given an AXPosition on an inline text box descendant, because there + // is often an ignored generic container between the text descendants and the + // text field node. // // For example, look at the following accessibility tree and the text // positions indicated using "<>" symbols in the inner text of every node, and @@ -646,29 +650,62 @@ std::u16string AXNode::GetHypertext() const { // ++++kGenericContainer "Hell" ignored IsChildOfLeaf=true // ++++++kStaticText "Hell" IsChildOfLeaf=true // ++++++++kInlineTextBox "Hell" IsChildOfLeaf=true - if (IsLeaf() || IsChildOfLeaf()) - return base::UTF8ToUTF16(GetInnerText()); - // Construct the hypertext for this node, which contains the concatenation of - // the inner text of this node's textual children, and an "object replacement - // character" for all the other children. - // - // Note that the word "hypertext" comes from the IAccessible2 Standard and has - // nothing to do with HTML. - const std::u16string embedded_character_str(kEmbeddedCharacter); - DCHECK_EQ(int{embedded_character_str.length()}, kEmbeddedCharacterLength); - std::u16string hypertext; - for (auto it = UnignoredChildrenBegin(); it != UnignoredChildrenEnd(); ++it) { - // Similar to Firefox, we don't expose text nodes in IAccessible2 and ATK - // hypertext with the embedded object character. We copy all of their text - // instead. - if (it->IsText()) { - hypertext += base::UTF8ToUTF16(it->GetInnerText()); - } else { - hypertext += embedded_character_str; + if (IsLeaf() || IsChildOfLeaf()) { + hypertext_.hypertext = base::UTF8ToUTF16(GetInnerText()); + } else { + // Construct the hypertext for this node, which contains the concatenation + // of the inner text of this node's textual children, and an "object + // replacement character" for all the other children. + // + // Note that the word "hypertext" comes from the IAccessible2 Standard and + // has nothing to do with HTML. + const std::u16string embedded_character_str(kEmbeddedCharacter); + DCHECK_EQ(int{embedded_character_str.length()}, kEmbeddedCharacterLength); + for (size_t i = 0; i < GetUnignoredChildCountCrossingTreeBoundary(); ++i) { + const AXNode* child = GetUnignoredChildAtIndexCrossingTreeBoundary(i); + // Similar to Firefox, we don't expose text nodes in IAccessible2 and ATK + // hypertext with the embedded object character. We copy all of their text + // instead. + if (child->IsText()) { + hypertext_.hypertext += base::UTF8ToUTF16(child->GetInnerText()); + } else { + int character_offset = int{hypertext_.hypertext.size()}; + auto inserted = + hypertext_.hypertext_offset_to_hyperlink_child_index.emplace( + character_offset, int{i}); + DCHECK(inserted.second) << "An embedded object at " << character_offset + << " has already been encountered."; + hypertext_.hypertext += embedded_character_str; + } } } - return hypertext; + + hypertext_.needs_update = false; + return hypertext_.hypertext; +} + +void AXNode::SetNeedsToUpdateHypertext() { + old_hypertext_ = hypertext_; + hypertext_.needs_update = true; + // TODO(nektar): Introduce proper caching of hypertext via + // `AXHypertext::needs_update`. + GetHypertext(); // Forces `hypertext_` to immediately update. +} + +const std::map& AXNode::GetHypertextOffsetToHyperlinkChildIndex() + const { + // TODO(nektar): Introduce proper caching of hypertext via + // `AXHypertext::needs_update`. + GetHypertext(); // Update `hypertext_` if not up-to-date. + return hypertext_.hypertext_offset_to_hyperlink_child_index; +} + +const AXHypertext& AXNode::GetOldHypertext() const { + // TODO(nektar): Introduce proper caching of hypertext via + // `AXHypertext::needs_update`. + GetHypertext(); // Update `hypertext_` if not up-to-date. + return old_hypertext_; } std::string AXNode::GetInnerText() const { @@ -690,9 +727,9 @@ std::string AXNode::GetInnerText() const { // value or its placeholder. Otherwise we prefer to look at its descendant // text nodes because Blink doesn't always add all trailing white space to the // value attribute. - const bool is_plain_text_field_without_descendants = + const bool is_atomic_text_field_without_descendants = (node->data().IsTextField() && !node->GetUnignoredChildCount()); - if (is_plain_text_field_without_descendants) { + if (is_atomic_text_field_without_descendants) { std::string value = node->data().GetStringAttribute(ax::mojom::StringAttribute::kValue); // If the value is empty, then there might be some placeholder text in the @@ -702,13 +739,13 @@ std::string AXNode::GetInnerText() const { return value; } - // Ordinarily, plain text fields are leaves. We need to exclude them from the + // Ordinarily, atomic text fields are leaves. We need to exclude them from the // set of leaf nodes when they expose any descendants. This is because we want // to compute their inner text from their descendant text nodes as we don't // always trust the "value" attribute provided by Blink. - const bool is_plain_text_field_with_descendants = + const bool is_atomic_text_field_with_descendants = (node->data().IsTextField() && node->GetUnignoredChildCount()); - if (node->IsLeaf() && !is_plain_text_field_with_descendants) { + if (node->IsLeaf() && !is_atomic_text_field_with_descendants) { switch (node->data().GetNameFrom()) { case ax::mojom::NameFrom::kNone: case ax::mojom::NameFrom::kUninitialized: @@ -767,12 +804,12 @@ int AXNode::GetInnerTextLength() const { DCHECK(node) << "All child trees should have a non-null rootnode."; } - const bool is_plain_text_field_with_descendants = + const bool is_atomic_text_field_with_descendants = (node->data().IsTextField() && node->GetUnignoredChildCount()); - // Plain text fields are always leaves so we need to exclude them when + // Atomic text fields are always leaves so we need to exclude them when // computing the length of their inner text if that text should be derived // from their descendant nodes. - if (node->IsLeaf() && !is_plain_text_field_with_descendants) + if (node->IsLeaf() && !is_atomic_text_field_with_descendants) return int{node->GetInnerText().length()}; int inner_text_length = 0; @@ -824,52 +861,52 @@ bool AXNode::IsTable() const { return IsTableLike(data().role); } -base::Optional AXNode::GetTableColCount() const { +absl::optional AXNode::GetTableColCount() const { DCHECK(!tree_->GetTreeUpdateInProgressState()); const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; return int{table_info->col_count}; } -base::Optional AXNode::GetTableRowCount() const { +absl::optional AXNode::GetTableRowCount() const { DCHECK(!tree_->GetTreeUpdateInProgressState()); const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; return int{table_info->row_count}; } -base::Optional AXNode::GetTableAriaColCount() const { +absl::optional AXNode::GetTableAriaColCount() const { DCHECK(!tree_->GetTreeUpdateInProgressState()); const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; - return base::make_optional(table_info->aria_col_count); + return absl::nullopt; + return absl::make_optional(table_info->aria_col_count); } -base::Optional AXNode::GetTableAriaRowCount() const { +absl::optional AXNode::GetTableAriaRowCount() const { DCHECK(!tree_->GetTreeUpdateInProgressState()); const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; - return base::make_optional(table_info->aria_row_count); + return absl::nullopt; + return absl::make_optional(table_info->aria_row_count); } -base::Optional AXNode::GetTableCellCount() const { +absl::optional AXNode::GetTableCellCount() const { DCHECK(!tree_->GetTreeUpdateInProgressState()); const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; return static_cast(table_info->unique_cell_ids.size()); } -base::Optional AXNode::GetTableHasColumnOrRowHeaderNode() const { +absl::optional AXNode::GetTableHasColumnOrRowHeaderNode() const { DCHECK(!tree_->GetTreeUpdateInProgressState()); const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; return !table_info->all_headers.empty(); } @@ -980,17 +1017,17 @@ bool AXNode::IsTableRow() const { return ui::IsTableRow(data().role); } -base::Optional AXNode::GetTableRowRowIndex() const { +absl::optional AXNode::GetTableRowRowIndex() const { if (!IsTableRow()) - return base::nullopt; + return absl::nullopt; const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; const auto& iter = table_info->row_id_to_index.find(id()); if (iter == table_info->row_id_to_index.end()) - return base::nullopt; + return absl::nullopt; return int{iter->second}; } @@ -1016,13 +1053,13 @@ bool AXNode::IsTableColumn() const { return ui::IsTableColumn(data().role); } -base::Optional AXNode::GetTableColColIndex() const { +absl::optional AXNode::GetTableColColIndex() const { if (!IsTableColumn()) - return base::nullopt; + return absl::nullopt; const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; int index = 0; for (const AXNode* node : table_info->extra_mac_nodes) { @@ -1043,48 +1080,48 @@ bool AXNode::IsTableCellOrHeader() const { return IsCellOrTableHeader(data().role); } -base::Optional AXNode::GetTableCellIndex() const { +absl::optional AXNode::GetTableCellIndex() const { if (!IsTableCellOrHeader()) - return base::nullopt; + return absl::nullopt; const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; const auto& iter = table_info->cell_id_to_index.find(id()); if (iter != table_info->cell_id_to_index.end()) return int{iter->second}; - return base::nullopt; + return absl::nullopt; } -base::Optional AXNode::GetTableCellColIndex() const { +absl::optional AXNode::GetTableCellColIndex() const { const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; - base::Optional index = GetTableCellIndex(); + absl::optional index = GetTableCellIndex(); if (!index) - return base::nullopt; + return absl::nullopt; return int{table_info->cell_data_vector[*index].col_index}; } -base::Optional AXNode::GetTableCellRowIndex() const { +absl::optional AXNode::GetTableCellRowIndex() const { const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; - base::Optional index = GetTableCellIndex(); + absl::optional index = GetTableCellIndex(); if (!index) - return base::nullopt; + return absl::nullopt; return int{table_info->cell_data_vector[*index].row_index}; } -base::Optional AXNode::GetTableCellColSpan() const { +absl::optional AXNode::GetTableCellColSpan() const { // If it's not a table cell, don't return a col span. if (!IsTableCellOrHeader()) - return base::nullopt; + return absl::nullopt; // Otherwise, try to return a colspan, with 1 as the default if it's not // specified. @@ -1094,10 +1131,10 @@ base::Optional AXNode::GetTableCellColSpan() const { return 1; } -base::Optional AXNode::GetTableCellRowSpan() const { +absl::optional AXNode::GetTableCellRowSpan() const { // If it's not a table cell, don't return a row span. if (!IsTableCellOrHeader()) - return base::nullopt; + return absl::nullopt; // Otherwise, try to return a row span, with 1 as the default if it's not // specified. @@ -1107,26 +1144,26 @@ base::Optional AXNode::GetTableCellRowSpan() const { return 1; } -base::Optional AXNode::GetTableCellAriaColIndex() const { +absl::optional AXNode::GetTableCellAriaColIndex() const { const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; - base::Optional index = GetTableCellIndex(); + absl::optional index = GetTableCellIndex(); if (!index) - return base::nullopt; + return absl::nullopt; return int{table_info->cell_data_vector[*index].aria_col_index}; } -base::Optional AXNode::GetTableCellAriaRowIndex() const { +absl::optional AXNode::GetTableCellAriaRowIndex() const { const AXTableInfo* table_info = GetAncestorTableInfo(); if (!table_info) - return base::nullopt; + return absl::nullopt; - base::Optional index = GetTableCellIndex(); + absl::optional index = GetTableCellIndex(); if (!index) - return base::nullopt; + return absl::nullopt; return int{table_info->cell_data_vector[*index].aria_row_index}; } @@ -1212,7 +1249,7 @@ void AXNode::IdVectorToNodeVector(const std::vector& ids, } } -base::Optional AXNode::GetHierarchicalLevel() const { +absl::optional AXNode::GetHierarchicalLevel() const { int hierarchical_level = GetIntAttribute(ax::mojom::IntAttribute::kHierarchicalLevel); @@ -1222,7 +1259,7 @@ base::Optional AXNode::GetHierarchicalLevel() const { if (hierarchical_level > 0) return hierarchical_level; - return base::nullopt; + return absl::nullopt; } bool AXNode::IsOrderedSetItem() const { @@ -1234,12 +1271,12 @@ bool AXNode::IsOrderedSet() const { } // Uses AXTree's cache to calculate node's PosInSet. -base::Optional AXNode::GetPosInSet() { +absl::optional AXNode::GetPosInSet() { return tree_->GetPosInSet(*this); } // Uses AXTree's cache to calculate node's SetSize. -base::Optional AXNode::GetSetSize() { +absl::optional AXNode::GetSetSize() { return tree_->GetSetSize(*this); } @@ -1392,7 +1429,7 @@ std::string AXNode::GetValueForTextField() const { // Some screen readers like Jaws and VoiceOver require a value to be set in // text fields with rich content, even though the same information is // available on the children. - if (value.empty() && data().IsRichTextField()) + if (value.empty() && data().IsNonAtomicTextField()) return GetInnerText(); return value; } @@ -1483,7 +1520,7 @@ bool AXNode::IsLeaf() const { // different return values here, even though 'contenteditable' has no effect. // This needs to be modified from the Blink side, so 'kRichlyEditable' isn't // added in this case. - if (data().IsPlainTextField() || IsText()) + if (data().IsAtomicTextField() || IsText()) return true; // Roles whose children are only presentational according to the ARIA and @@ -1507,6 +1544,7 @@ bool AXNode::IsLeaf() const { case ax::mojom::Role::kGraphicsSymbol: case ax::mojom::Role::kMeter: case ax::mojom::Role::kScrollBar: + case ax::mojom::Role::kSpinButton: case ax::mojom::Role::kSlider: case ax::mojom::Role::kSplitter: case ax::mojom::Role::kProgressIndicator: @@ -1606,13 +1644,13 @@ AXNode* AXNode::GetTextFieldAncestor() const { // The descendants of a text field usually have State::kEditable, however in // the case of Role::kSearchBox or Role::kSpinButton being the text field // ancestor, its immediate descendant can have Role::kGenericContainer without - // State::kEditable. Same with inline text boxes. + // State::kEditable. Same with inline text boxes and placeholder text. // TODO(nektar): Fix all such inconsistencies in Blink. for (AXNode* ancestor = const_cast(this); ancestor && (ancestor->data().HasState(ax::mojom::State::kEditable) || ancestor->data().role == ax::mojom::Role::kGenericContainer || - ancestor->data().role == ax::mojom::Role::kInlineTextBox); + ancestor->IsText()); ancestor = ancestor->GetUnignoredParent()) { if (ancestor->data().IsTextField()) return ancestor; @@ -1620,9 +1658,9 @@ AXNode* AXNode::GetTextFieldAncestor() const { return nullptr; } -bool AXNode::IsDescendantOfPlainTextField() const { +bool AXNode::IsDescendantOfAtomicTextField() const { AXNode* text_field_node = GetTextFieldAncestor(); - return text_field_node && text_field_node->data().IsPlainTextField(); + return text_field_node && text_field_node->data().IsAtomicTextField(); } } // namespace ui diff --git a/chromium/ui/accessibility/ax_node.h b/chromium/ui/accessibility/ax_node.h index 2a5841c04f8..8e192d5da27 100644 --- a/chromium/ui/accessibility/ax_node.h +++ b/chromium/ui/accessibility/ax_node.h @@ -12,11 +12,12 @@ #include #include -#include "base/optional.h" #include "base/strings/char_traits.h" #include "build/build_config.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/accessibility/ax_export.h" +#include "ui/accessibility/ax_hypertext.h" #include "ui/accessibility/ax_node_data.h" #include "ui/accessibility/ax_tree_id.h" @@ -26,7 +27,7 @@ class AXTableInfo; struct AXLanguageInfo; struct AXTreeData; -// One node in an AXTree. +// This class is used to represent a node in an accessibility tree (`AXTree`). class AX_EXPORT AXNode final { public: // Replacement character used to represent an embedded (or, additionally for @@ -69,8 +70,8 @@ class AX_EXPORT AXNode final { // See AXTree::data. virtual const AXTreeData& data() const = 0; - virtual base::Optional GetPosInSet(const AXNode& node) = 0; - virtual base::Optional GetSetSize(const AXNode& node) = 0; + virtual absl::optional GetPosInSet(const AXNode& node) = 0; + virtual absl::optional GetSetSize(const AXNode& node) = 0; virtual Selection GetUnignoredSelection() const = 0; virtual bool GetTreeUpdateInProgressState() const = 0; @@ -313,13 +314,13 @@ class AX_EXPORT AXNode final { } // Return the hierarchical level if supported. - base::Optional GetHierarchicalLevel() const; + absl::optional GetHierarchicalLevel() const; // PosInSet and SetSize public methods. bool IsOrderedSetItem() const; bool IsOrderedSet() const; - base::Optional GetPosInSet(); - base::Optional GetSetSize(); + absl::optional GetPosInSet(); + absl::optional GetSetSize(); // Helpers for GetPosInSet and GetSetSize. // Returns true if the role of ordered set matches the role of item. @@ -347,6 +348,14 @@ class AX_EXPORT AXNode final { // TODO(nektar): Consider changing the return value to std::string. std::u16string GetHypertext() const; + // Temporary method that marks `hypertext_` dirty. This will eventually be + // handled by the AX tree in a followup patch. + void SetNeedsToUpdateHypertext(); + // Temporary accessor methods until hypertext is fully migrated to this class. + // Hypertext won't eventually need to be accessed outside this class. + const std::map& GetHypertextOffsetToHyperlinkChildIndex() const; + const AXHypertext& GetOldHypertext() const; + // Returns the text that is found inside this node and all its descendants; // including text found in embedded objects. // @@ -376,14 +385,14 @@ class AX_EXPORT AXNode final { // Returns empty string if no appropriate language was found. std::string GetLanguage() const; - // Returns the value of a control such as a plain text field, a content - // editable, a submit button, a slider, a progress bar, a scroll bar, a meter, - // a spinner, a or + //