diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-09-07 13:12:05 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-11-09 10:02:59 +0000 |
commit | 33fc33aa94d4add0878ec30dc818e34e1dd3cc2a (patch) | |
tree | f6af110909c79b2759136554f1143d8b0572af0a /chromium/chromeos | |
parent | 7d2c5d177e9813077a621df8d18c0deda73099b3 (diff) | |
download | qtwebengine-chromium-33fc33aa94d4add0878ec30dc818e34e1dd3cc2a.tar.gz |
BASELINE: Update Chromium to 104.0.5112.120
Change-Id: I5d2726c2ab018d75d055739b6ba64317904f05bb
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/438935
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chromeos')
125 files changed, 2866 insertions, 549 deletions
diff --git a/chromium/chromeos/BUILD.gn b/chromium/chromeos/BUILD.gn index ae8537061ba..569ac60cdf3 100644 --- a/chromium/chromeos/BUILD.gn +++ b/chromium/chromeos/BUILD.gn @@ -6,6 +6,7 @@ import("//build/buildflag_header.gni") import("//build/config/ui.gni") import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") +import("./features.gni") import("./tast_control.gni") if (is_chromeos_device) { @@ -19,6 +20,11 @@ config("chromeos_implementation") { defines = [ "CHROMEOS_IMPLEMENTATION" ] } +buildflag_header("features") { + header = "features.h" + flags = [ "USE_REAL_CHROMEOS_SERVICES=$use_real_chromeos_services" ] +} + component("chromeos") { deps = [ "//chromeos/dbus/constants" ] sources = [] @@ -32,13 +38,10 @@ component("chromeos") { deps += [ ":chromeos_export", "//base", - "//net", ] sources += [ "hugepage_text/hugepage_text.cc", "hugepage_text/hugepage_text.h", - "scanning/scanner.cc", - "scanning/scanner.h", ] if (current_cpu == "arm" || current_cpu == "x86") { defines = [ "BINDER_IPC_32BIT" ] @@ -111,15 +114,13 @@ test("chromeos_unittests") { if (is_chromeos_ash) { deps += [ ":test_support", - "//chromeos/ash/components/dbus:unit_tests", + "//chromeos/ash/components:unit_tests", "//chromeos/crosapi/cpp:unit_tests", "//chromeos/crosapi/mojom:unit_tests", "//chromeos/dbus:test_support", "//chromeos/dbus:unit_tests", - "//chromeos/dbus/services:unit_tests", "//chromeos/language/language_packs:unit_tests", "//chromeos/login/login_state:unit_tests", - "//chromeos/memory:unit_tests", "//chromeos/network:test_support", "//chromeos/network:unit_tests", "//chromeos/printing:unit_tests", @@ -132,7 +133,6 @@ test("chromeos_unittests") { "//components/prefs:test_support", "//components/proxy_config", "//crypto", - "//crypto:platform", "//dbus:test_support", "//google_apis", "//net", @@ -140,10 +140,6 @@ test("chromeos_unittests") { "//services/network/public/cpp", "//url", ] - - if (target_cpu == "x64") { - deps += [ "//chromeos/memory/userspace_swap:unit_tests" ] - } } data = [ "test/data/" ] @@ -162,6 +158,12 @@ if (is_chromeos_ash && is_chromeos_device) { # Assume every time we build cros_test_wrapper, we also build chrome and # want to deploy it to the DUT. deploy_chrome = true + + # The only targets that currently use cros_test_wrapper are Telemetry-based + # tests, which have their own crash/symbolization handling code. So, strip + # Chrome before deploying in order to save disk space and avoid potential + # memory issues on 32-bit devices. + strip_chrome = true } tast_test("chrome_login_tast_tests") { diff --git a/chromium/chromeos/ash/components/BUILD.gn b/chromium/chromeos/ash/components/BUILD.gn new file mode 100644 index 00000000000..0e1717e6c66 --- /dev/null +++ b/chromium/chromeos/ash/components/BUILD.gn @@ -0,0 +1,23 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +# To add a unit test to this target, make a "unit_test" source_set in your +# component and add a reference here. +source_set("unit_tests") { + testonly = true + deps = [ + "//chromeos/ash/components/dbus:unit_tests", + "//chromeos/ash/components/human_presence:unit_tests", + "//chromeos/ash/components/memory:unit_tests", + "//chromeos/ash/components/oobe_quick_start:unit_tests", + ] + + if (target_cpu == "x64") { + deps += [ "//chromeos/ash/components/memory/userspace_swap:unit_tests" ] + } +} diff --git a/chromium/chromeos/assistant/BUILD.gn b/chromium/chromeos/ash/components/assistant/BUILD.gn index 4a35552bdba..63b765afefa 100644 --- a/chromium/chromeos/assistant/BUILD.gn +++ b/chromium/chromeos/ash/components/assistant/BUILD.gn @@ -4,8 +4,11 @@ import("//ash/ambient/resources/resources.gni") import("//build/buildflag_header.gni") -import("//chromeos/assistant/ambient.gni") -import("//chromeos/assistant/assistant.gni") +import("//build/config/chromeos/ui_mode.gni") +import("//chromeos/ash/components/assistant/ambient.gni") +import("//chromeos/ash/components/assistant/assistant.gni") + +assert(is_chromeos_ash, "Non Chrome OS builds cannot depend on //chromeos/ash") buildflag_header("buildflags") { header = "buildflags.h" diff --git a/chromium/chromeos/assistant/ambient.gni b/chromium/chromeos/ash/components/assistant/ambient.gni index 17ca5efbc32..17ca5efbc32 100644 --- a/chromium/chromeos/assistant/ambient.gni +++ b/chromium/chromeos/ash/components/assistant/ambient.gni diff --git a/chromium/chromeos/assistant/assistant.gni b/chromium/chromeos/ash/components/assistant/assistant.gni index 0f462c2728e..5f4150e4d5c 100644 --- a/chromium/chromeos/assistant/assistant.gni +++ b/chromium/chromeos/ash/components/assistant/assistant.gni @@ -6,7 +6,7 @@ declare_args() { enable_cros_libassistant = is_chromeos_ash && is_chrome_branded # Enable a fake microphone, which can replay audio files as microphone input. - # See chromeos/assistant/tools/send-audio.sh + # See chromeos/ash/components/assistant/tools/send-audio.sh enable_fake_assistant_microphone = false } diff --git a/chromium/chromeos/assistant/test_support/BUILD.gn b/chromium/chromeos/ash/components/assistant/test_support/BUILD.gn index a31514ebeac..dd26553dfbb 100644 --- a/chromium/chromeos/assistant/test_support/BUILD.gn +++ b/chromium/chromeos/ash/components/assistant/test_support/BUILD.gn @@ -1,3 +1,7 @@ +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash, "Non Chrome OS builds cannot depend on //chromeos/ash") + static_library("test_support") { testonly = true sources = [ "expect_utils.h" ] diff --git a/chromium/chromeos/ash/components/cros_elements/BUILD.gn b/chromium/chromeos/ash/components/cros_elements/BUILD.gn new file mode 100644 index 00000000000..7be00d31f25 --- /dev/null +++ b/chromium/chromeos/ash/components/cros_elements/BUILD.gn @@ -0,0 +1,20 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") +import("//ui/webui/resources/tools/generate_grd.gni") + +assert(is_chromeos_ash, "Non Chrome OS builds cannot depend on //chromeos/ash") + +generate_grd("build_grdp") { + grd_prefix = "cros_elements" + out_grd = "$target_gen_dir/${grd_prefix}_resources.grdp" + + input_files = [ "button/button.js" ] + + public_deps = [ "button" ] + + input_files_base_dir = rebase_path(target_gen_dir, root_build_dir) + resource_path_prefix = "cros_elements" +} diff --git a/chromium/chromeos/ash/components/cros_elements/button/BUILD.gn b/chromium/chromeos/ash/components/cros_elements/button/BUILD.gn new file mode 100644 index 00000000000..1aa395ecf13 --- /dev/null +++ b/chromium/chromeos/ash/components/cros_elements/button/BUILD.gn @@ -0,0 +1,30 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") +import("//third_party/material_web_components/rewrite_imports.gni") +import("//tools/typescript/ts_library.gni") + +assert(is_chromeos_ash, "Non Chrome OS builds cannot depend on //chromeos/ash") + +ts_library("button_ts") { + composite = true + root_dir = "." + out_dir = "$target_gen_dir/tsc" + tsconfig_base = "../tsconfig_base.json" + in_files = [ "button.ts" ] + deps = [ "//third_party/material_web_components:library" ] + path_mappings = [ + "tslib|" + rebase_path( + "//third_party/material_web_components/components-chromium/node_modules/tslib/tslib.d.ts", + target_gen_dir), + "//resources/mwc/*|" + rebase_path( + "//third_party/material_web_components/components-chromium/node_modules/*", + target_gen_dir), + ] +} + +rewrite_imports("button") { + deps = [ ":button_ts" ] +} diff --git a/chromium/chromeos/ash/components/dbus/BUILD.gn b/chromium/chromeos/ash/components/dbus/BUILD.gn index 09406155e47..cbf0fcbfa42 100644 --- a/chromium/chromeos/ash/components/dbus/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/BUILD.gn @@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/config/ui.gni") +import("//chromeos/components/chromebox_for_meetings/buildflags/buildflags.gni") assert(is_chromeos_ash, "Non ChromeOS builds must not depend on //chromeos/ash") @@ -16,14 +17,25 @@ source_set("unit_tests") { "//chromeos/ash/components/dbus/authpolicy", "//chromeos/ash/components/dbus/authpolicy:authpolicy_proto", "//chromeos/ash/components/dbus/biod:test_support", + "//chromeos/ash/components/dbus/hiberman", + "//chromeos/ash/components/dbus/ip_peripheral:test_support", + "//chromeos/ash/components/dbus/rmad:rmad_proto", + "//chromeos/ash/components/dbus/rmad:test_support", + "//chromeos/ash/components/dbus/services:unit_tests", + "//chromeos/ash/components/dbus/system_clock:unit_tests", "//chromeos/dbus:test_support", "//chromeos/dbus/session_manager", "//components/account_id", "//dbus", ] + if (is_cfm) { + deps += + [ "//chromeos/ash/components/dbus/chromebox_for_meetings:unit_tests" ] + } sources = [ "authpolicy/fake_authpolicy_client_unittest.cc", "biod/biod_client_unittest.cc", "biod/fake_biod_client_unittest.cc", + "hiberman/hiberman_client_unittest.cc", ] } diff --git a/chromium/chromeos/dbus/chromebox_for_meetings/BUILD.gn b/chromium/chromeos/ash/components/dbus/chromebox_for_meetings/BUILD.gn index ac99ee0eb62..c5186a0820a 100644 --- a/chromium/chromeos/dbus/chromebox_for_meetings/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/chromebox_for_meetings/BUILD.gn @@ -2,10 +2,11 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/ui.gni") import("//chromeos/components/chromebox_for_meetings/buildflags/buildflags.gni") import("//third_party/protobuf/proto_library.gni") -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") assert(is_cfm, "Non-CfM builds cannot depend on this library") component("chromebox_for_meetings") { diff --git a/chromium/chromeos/ash/components/dbus/cicerone/BUILD.gn b/chromium/chromeos/ash/components/dbus/cicerone/BUILD.gn new file mode 100644 index 00000000000..d3aabe3254b --- /dev/null +++ b/chromium/chromeos/ash/components/dbus/cicerone/BUILD.gn @@ -0,0 +1,33 @@ +# 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. + +import("//build/config/chromeos/ui_mode.gni") +import("//third_party/protobuf/proto_library.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +component("cicerone") { + defines = [ "IS_CICERONE_IMPL" ] + deps = [ + ":cicerone_proto", + "//base", + "//chromeos/dbus/common", + "//dbus", + ] + + sources = [ + "cicerone_client.cc", + "cicerone_client.h", + "fake_cicerone_client.cc", + "fake_cicerone_client.h", + ] +} + +proto_library("cicerone_proto") { + sources = [ + "//third_party/cros_system_api/dbus/vm_cicerone/cicerone_service.proto", + ] + + proto_out_dir = "chromeos/ash/components/dbus/cicerone" +} diff --git a/chromium/chromeos/ash/components/dbus/concierge/BUILD.gn b/chromium/chromeos/ash/components/dbus/concierge/BUILD.gn new file mode 100644 index 00000000000..b49ae068d44 --- /dev/null +++ b/chromium/chromeos/ash/components/dbus/concierge/BUILD.gn @@ -0,0 +1,35 @@ +# 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. + +import("//build/config/chromeos/ui_mode.gni") +import("//third_party/protobuf/proto_library.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +component("concierge") { + defines = [ "IS_CONCIERGE_IMPL" ] + deps = [ + ":concierge_proto", + "//base", + "//chromeos/ash/components/dbus/cicerone", + "//chromeos/ash/components/dbus/cicerone:cicerone_proto", + "//chromeos/dbus/common", + "//dbus", + ] + + sources = [ + "concierge_client.cc", + "concierge_client.h", + "fake_concierge_client.cc", + "fake_concierge_client.h", + ] +} + +proto_library("concierge_proto") { + sources = [ + "//third_party/cros_system_api/dbus/vm_concierge/concierge_service.proto", + ] + + proto_out_dir = "chromeos/ash/components/dbus/concierge" +} diff --git a/chromium/chromeos/dbus/cros_healthd/BUILD.gn b/chromium/chromeos/ash/components/dbus/cros_healthd/BUILD.gn index e7c5e549426..9b2e41ac8ff 100644 --- a/chromium/chromeos/dbus/cros_healthd/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/cros_healthd/BUILD.gn @@ -2,10 +2,12 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -assert(is_chromeos, "Non-Chrome-OS builds cannot depend on //chromeos") +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash) component("cros_healthd") { - defines = [ "IS_CROS_HEALTHD_IMPL" ] + defines = [ "IS_CHROMEOS_ASH_COMPONENTS_DBUS_CROS_HEALTHD_IMPL" ] deps = [ "//base", @@ -22,7 +24,5 @@ component("cros_healthd") { "cros_healthd_client.h", "fake_cros_healthd_client.cc", "fake_cros_healthd_client.h", - "fake_cros_healthd_service.cc", - "fake_cros_healthd_service.h", ] } diff --git a/chromium/chromeos/dbus/fusebox/BUILD.gn b/chromium/chromeos/ash/components/dbus/fusebox/BUILD.gn index 9b84352ac77..1f52897cd56 100644 --- a/chromium/chromeos/dbus/fusebox/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/fusebox/BUILD.gn @@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/ui.gni") import("//third_party/protobuf/proto_library.gni") assert(is_chromeos_ash, "Non-Chrome-OS builds must not depend on //chromeos") @@ -25,5 +26,5 @@ component("fusebox") { proto_library("proto") { sources = [ "//third_party/cros_system_api/dbus/fusebox/fusebox.proto" ] - proto_out_dir = "chromeos/dbus/fusebox" + proto_out_dir = "chromeos/ash/components/dbus/fusebox" } diff --git a/chromium/chromeos/dbus/hammerd/BUILD.gn b/chromium/chromeos/ash/components/dbus/hammerd/BUILD.gn index 60d6249acf0..ee78fbfd594 100644 --- a/chromium/chromeos/dbus/hammerd/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/hammerd/BUILD.gn @@ -2,7 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +import("//build/config/ui.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") component("hammerd") { defines = [ "IS_HAMMERD_IMPL" ] diff --git a/chromium/chromeos/dbus/hiberman/BUILD.gn b/chromium/chromeos/ash/components/dbus/hiberman/BUILD.gn index dc16f485cd4..ced45344a62 100644 --- a/chromium/chromeos/dbus/hiberman/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/hiberman/BUILD.gn @@ -2,7 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +import("//build/config/ui.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos") component("hiberman") { output_name = "chromeos_dbus_hiberman" diff --git a/chromium/chromeos/dbus/ip_peripheral/BUILD.gn b/chromium/chromeos/ash/components/dbus/ip_peripheral/BUILD.gn index 01fbc666707..9878fe3c40a 100644 --- a/chromium/chromeos/dbus/ip_peripheral/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/ip_peripheral/BUILD.gn @@ -2,7 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +import("//build/config/ui.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos") component("ip_peripheral") { defines = [ "IS_DBUS_IP_PERIPHERAL_CLIENT_IMPL" ] diff --git a/chromium/chromeos/dbus/media_analytics/BUILD.gn b/chromium/chromeos/ash/components/dbus/media_analytics/BUILD.gn index 1f8fd5d94ec..5183e34e377 100644 --- a/chromium/chromeos/dbus/media_analytics/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/media_analytics/BUILD.gn @@ -2,9 +2,10 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/ui.gni") import("//third_party/protobuf/proto_library.gni") -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos") component("media_analytics") { defines = [ "IS_MEDIA_ANALYTICS_CLIENT_IMPL" ] @@ -27,5 +28,5 @@ component("media_analytics") { proto_library("media_perception_proto") { sources = [ "media_perception.proto" ] - proto_out_dir = "chromeos/dbus/media_perception" + proto_out_dir = "chromeos/ash/components/dbus/media_perception" } diff --git a/chromium/chromeos/dbus/patchpanel/BUILD.gn b/chromium/chromeos/ash/components/dbus/patchpanel/BUILD.gn index d53234d8593..1f3d38ed7e6 100644 --- a/chromium/chromeos/dbus/patchpanel/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/patchpanel/BUILD.gn @@ -2,9 +2,10 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/ui.gni") import("//third_party/protobuf/proto_library.gni") -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos") component("patchpanel") { defines = [ "IS_PATCHPANEL_IMPL" ] @@ -29,5 +30,5 @@ proto_library("patchpanel_proto") { "//third_party/cros_system_api/dbus/patchpanel/patchpanel_service.proto", ] - proto_out_dir = "chromeos/dbus/patchpanel" + proto_out_dir = "chromeos/ash/components/dbus/patchpanel" } diff --git a/chromium/chromeos/dbus/pciguard/BUILD.gn b/chromium/chromeos/ash/components/dbus/pciguard/BUILD.gn index 795ccb90ec0..350d5efce6a 100644 --- a/chromium/chromeos/dbus/pciguard/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/pciguard/BUILD.gn @@ -2,9 +2,10 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/ui.gni") import("//third_party/protobuf/proto_library.gni") -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos") component("pciguard") { defines = [ "IS_PCIGUARD_IMPL" ] diff --git a/chromium/chromeos/ash/components/dbus/rgbkbd/BUILD.gn b/chromium/chromeos/ash/components/dbus/rgbkbd/BUILD.gn new file mode 100644 index 00000000000..81e8ee5d5c6 --- /dev/null +++ b/chromium/chromeos/ash/components/dbus/rgbkbd/BUILD.gn @@ -0,0 +1,24 @@ +# Copyright 2022 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. + +import("//build/config/ui.gni") + +assert(is_chromeos_ash, "Non-Chrome-OS builds must not depend on //chromeos") + +component("rgbkbd") { + defines = [ "IS_RGBKBD_CLIENT_IMPL" ] + + deps = [ + "//base", + "//chromeos/dbus/common", + "//dbus", + ] + + sources = [ + "fake_rgbkbd_client.cc", + "fake_rgbkbd_client.h", + "rgbkbd_client.cc", + "rgbkbd_client.h", + ] +} diff --git a/chromium/chromeos/dbus/rmad/BUILD.gn b/chromium/chromeos/ash/components/dbus/rmad/BUILD.gn index e607fd5af5f..0986a07101b 100644 --- a/chromium/chromeos/dbus/rmad/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/rmad/BUILD.gn @@ -2,9 +2,10 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/ui.gni") import("//third_party/protobuf/proto_library.gni") -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") component("rmad") { defines = [ "IS_RMAD_IMPL" ] @@ -45,5 +46,5 @@ source_set("test_support") { proto_library("rmad_proto") { sources = [ "//third_party/cros_system_api/dbus/rmad/rmad.proto" ] - proto_out_dir = "chromeos/dbus/rmad" + proto_out_dir = "chromeos/ash/components/dbus/rmad" } diff --git a/chromium/chromeos/ash/components/dbus/seneschal/BUILD.gn b/chromium/chromeos/ash/components/dbus/seneschal/BUILD.gn new file mode 100644 index 00000000000..176f22e70d0 --- /dev/null +++ b/chromium/chromeos/ash/components/dbus/seneschal/BUILD.gn @@ -0,0 +1,33 @@ +# 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. + +import("//build/config/chromeos/ui_mode.gni") +import("//third_party/protobuf/proto_library.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +component("seneschal") { + defines = [ "IS_SENESCHAL_IMPL" ] + deps = [ + ":seneschal_proto", + "//base", + "//chromeos/ash/components/dbus/cicerone", + "//chromeos/dbus/common", + "//dbus", + ] + + sources = [ + "fake_seneschal_client.cc", + "fake_seneschal_client.h", + "seneschal_client.cc", + "seneschal_client.h", + ] +} + +proto_library("seneschal_proto") { + sources = + [ "//third_party/cros_system_api/dbus/seneschal/seneschal_service.proto" ] + + proto_out_dir = "chromeos/ash/components/dbus/seneschal" +} diff --git a/chromium/chromeos/dbus/services/BUILD.gn b/chromium/chromeos/ash/components/dbus/services/BUILD.gn index 57830d41a6f..161bbe20dbc 100644 --- a/chromium/chromeos/dbus/services/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/services/BUILD.gn @@ -2,10 +2,12 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +import("//build/config/ui.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") source_set("services") { - output_name = "chromeos_dbus_services" + output_name = "ash_dbus_services" deps = [ "//base", diff --git a/chromium/chromeos/dbus/system_clock/BUILD.gn b/chromium/chromeos/ash/components/dbus/system_clock/BUILD.gn index 3d4ab59cf27..52a1b93e046 100644 --- a/chromium/chromeos/dbus/system_clock/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/system_clock/BUILD.gn @@ -2,7 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") component("system_clock") { defines = [ "IS_SYSTEM_CLOCK_IMPL" ] diff --git a/chromium/chromeos/dbus/system_proxy/BUILD.gn b/chromium/chromeos/ash/components/dbus/system_proxy/BUILD.gn index 5c87e56b27a..076daf05770 100644 --- a/chromium/chromeos/dbus/system_proxy/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/system_proxy/BUILD.gn @@ -2,9 +2,10 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/chromeos/ui_mode.gni") import("//third_party/protobuf/proto_library.gni") -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") component("system_proxy") { defines = [ "IS_SYSTEM_PROXY_IMPL" ] @@ -26,5 +27,5 @@ component("system_proxy") { proto_library("system_proxy_proto") { sources = [ "//third_party/cros_system_api/dbus/system_proxy/system_proxy_service.proto" ] - proto_out_dir = "chromeos/dbus/system_proxy" + proto_out_dir = "chromeos/ash/components/dbus/system_proxy" } diff --git a/chromium/chromeos/dbus/typecd/BUILD.gn b/chromium/chromeos/ash/components/dbus/typecd/BUILD.gn index d29b0380812..56e7d78162b 100644 --- a/chromium/chromeos/dbus/typecd/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/typecd/BUILD.gn @@ -2,9 +2,10 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/ui.gni") import("//third_party/protobuf/proto_library.gni") -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos") component("typecd") { defines = [ "IS_TYPECD_IMPL" ] diff --git a/chromium/chromeos/ash/components/dbus/upstart/BUILD.gn b/chromium/chromeos/ash/components/dbus/upstart/BUILD.gn index 8fcdef873ec..ad68f7583c3 100644 --- a/chromium/chromeos/ash/components/dbus/upstart/BUILD.gn +++ b/chromium/chromeos/ash/components/dbus/upstart/BUILD.gn @@ -14,8 +14,8 @@ component("upstart") { "//chromeos/ash/components/dbus/authpolicy", "//chromeos/ash/components/dbus/authpolicy:authpolicy_proto", "//chromeos/ash/components/dbus/kerberos", + "//chromeos/ash/components/dbus/media_analytics", "//chromeos/dbus/common", - "//chromeos/dbus/media_analytics", "//dbus", ] diff --git a/chromium/chromeos/ash/components/dbus/usb/BUILD.gn b/chromium/chromeos/ash/components/dbus/usb/BUILD.gn new file mode 100644 index 00000000000..6692a213e88 --- /dev/null +++ b/chromium/chromeos/ash/components/dbus/usb/BUILD.gn @@ -0,0 +1,23 @@ +# Copyright 2022 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. + +import("//build/config/ui.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +component("usb") { + defines = [ "IS_USB_CLIENT_IMPL" ] + deps = [ + "//base", + "//dbus", + ] + + sources = [ + "fake_usbguard_client.cc", + "fake_usbguard_client.h", + "usbguard_client.cc", + "usbguard_client.h", + "usbguard_observer.h", + ] +} diff --git a/chromium/chromeos/components/hibernate/BUILD.gn b/chromium/chromeos/ash/components/hibernate/BUILD.gn index b11b4ea5b86..9e5d3f09f61 100644 --- a/chromium/chromeos/components/hibernate/BUILD.gn +++ b/chromium/chromeos/ash/components/hibernate/BUILD.gn @@ -3,7 +3,10 @@ # found in the LICENSE file. import("//build/buildflag_header.gni") -import("//chromeos/components/hibernate/buildflags.gni") +import("//build/config/chromeos/ui_mode.gni") +import("//chromeos/ash/components/hibernate/buildflags.gni") + +assert(is_chromeos_ash, "Non Chrome OS builds cannot depend on //chromeos/ash") # This file is in a separate directory so all targets in the build can refer to # the buildflag header to get the necessary preprocessor defines without diff --git a/chromium/chromeos/components/hibernate/buildflags.gni b/chromium/chromeos/ash/components/hibernate/buildflags.gni index a5280df988b..a5280df988b 100644 --- a/chromium/chromeos/components/hibernate/buildflags.gni +++ b/chromium/chromeos/ash/components/hibernate/buildflags.gni diff --git a/chromium/chromeos/components/hps/BUILD.gn b/chromium/chromeos/ash/components/human_presence/BUILD.gn index 340915b1149..e8566de77c2 100644 --- a/chromium/chromeos/components/hps/BUILD.gn +++ b/chromium/chromeos/ash/components/human_presence/BUILD.gn @@ -8,26 +8,26 @@ import("//tools/typescript/ts_library.gni") assert(is_chromeos_ash) -static_library("hps") { +static_library("human_presence") { sources = [ - "hps_configuration.cc", - "hps_configuration.h", - "hps_internals.cc", - "hps_internals.h", + "human_presence_configuration.cc", + "human_presence_configuration.h", + "human_presence_internals.cc", + "human_presence_internals.h", ] deps = [ "//ash/constants:constants" ] public_deps = [ "//base", - "//chromeos/dbus/hps", - "//chromeos/dbus/hps:hps_proto", + "//chromeos/dbus/human_presence", + "//chromeos/dbus/human_presence:hps_proto", ] } -ts_library("hps_internals_ts") { +ts_library("human_presence_internals_ts") { root_dir = "." - in_files = [ "resources/hps_internals.ts" ] + in_files = [ "resources/human_presence_internals.ts" ] definitions = [ "//tools/typescript/definitions/chrome_send.d.ts" ] deps = [ "//third_party/polymer/v3_0:library", @@ -37,9 +37,9 @@ ts_library("hps_internals_ts") { source_set("unit_tests") { testonly = true - sources = [ "hps_configuration_unittest.cc" ] + sources = [ "human_presence_configuration_unittest.cc" ] deps = [ - ":hps", + ":human_presence", "//ash/constants:constants", "//base/test:test_support", "//testing/gtest", @@ -49,7 +49,7 @@ source_set("unit_tests") { js2gtest("browser_tests_js") { test_type = "webui" - sources = [ "test/hps_internals_browsertest.js" ] + sources = [ "test/human_presence_internals_browsertest.js" ] defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] } diff --git a/chromium/chromeos/memory/BUILD.gn b/chromium/chromeos/ash/components/memory/BUILD.gn index c1adb29ab72..93b4be58fb7 100644 --- a/chromium/chromeos/memory/BUILD.gn +++ b/chromium/chromeos/ash/components/memory/BUILD.gn @@ -3,21 +3,15 @@ # found in the LICENSE file. import("//build/buildflag_header.gni") +import("//build/config/chromeos/ui_mode.gni") import("//testing/test.gni") -assert(is_chromeos, "Non-Chrome-OS builds must not depend on //chromeos") - -# Used by targets that compile into the implementation. -config("chromeos_implementation") { - defines = [ "CHROMEOS_IMPLEMENTATION" ] -} +assert(is_chromeos_ash, "Non ChromeOS builds must not depend on //chromeos/ash") component("memory") { - defines = [ "IS_CHROMEOS_MEMORY_IMPL" ] - configs += [ ":chromeos_implementation" ] + defines = [ "IS_ASH_MEMORY_IMPL" ] deps = [ "//base", - "//chromeos:chromeos_export", "//chromeos/dbus", "//chromeos/dbus/constants", "//chromeos/dbus/resourced:resourced", @@ -53,6 +47,7 @@ source_set("unit_tests") { "//testing/gtest", ] sources = [ + "memory_unittest.cc", "pagemap_unittest.cc", "pressure/system_memory_pressure_evaluator_unittest.cc", ] diff --git a/chromium/chromeos/memory/userspace_swap/BUILD.gn b/chromium/chromeos/ash/components/memory/userspace_swap/BUILD.gn index 38876fde910..c5f6df360b1 100644 --- a/chromium/chromeos/memory/userspace_swap/BUILD.gn +++ b/chromium/chromeos/ash/components/memory/userspace_swap/BUILD.gn @@ -3,15 +3,11 @@ # found in the LICENSE file. import("//build/buildflag_header.gni") +import("//build/config/chromeos/ui_mode.gni") import("//mojo/public/tools/bindings/mojom.gni") import("//testing/test.gni") -assert(is_chromeos, "Non-Chrome-OS builds must not depend on //chromeos") - -# Used by targets that compile into the implementation. -config("chromeos_implementation") { - defines = [ "CHROMEOS_IMPLEMENTATION" ] -} +assert(is_chromeos_ash, "Non ChromeOS builds must not depend on //chromeos/ash") mojom("mojom") { sources = [ "userspace_swap.mojom" ] @@ -23,17 +19,15 @@ mojom("mojom") { } component("userspace_swap") { - configs += [ ":chromeos_implementation" ] + defines = [ "IS_USERSPACE_SWAP_IMPL" ] deps = [ ":mojom", "//base", - "//chromeos:chromeos_export", + "//chromeos/ash/components/memory", "//chromeos/dbus", "//chromeos/dbus/constants", - "//chromeos/memory", "//components/memory_pressure", "//crypto", - "//crypto:platform", "//services/resource_coordinator/public/cpp/memory_instrumentation", "//third_party/zlib/google:compression_utils", ] diff --git a/chromium/chromeos/memory/userspace_swap/userspace_swap.mojom b/chromium/chromeos/ash/components/memory/userspace_swap/userspace_swap.mojom index d863458c89f..d863458c89f 100644 --- a/chromium/chromeos/memory/userspace_swap/userspace_swap.mojom +++ b/chromium/chromeos/ash/components/memory/userspace_swap/userspace_swap.mojom diff --git a/chromium/chromeos/ash/components/network/metrics/BUILD.gn b/chromium/chromeos/ash/components/network/metrics/BUILD.gn new file mode 100644 index 00000000000..8783043e2bf --- /dev/null +++ b/chromium/chromeos/ash/components/network/metrics/BUILD.gn @@ -0,0 +1,53 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +source_set("metrics") { + # Due to circular dependency, others should depend on via chromeos/network. + visibility = [ "//chromeos/network" ] + + configs += [ "//chromeos/network:network_config" ] + deps = [ + "//base", + "//chromeos/login/login_state", + "//chromeos/services/network_config/public/mojom", + ] + sources = [ + "connection_info_metrics_logger.cc", + "connection_info_metrics_logger.h", + "connection_results.cc", + "connection_results.h", + "esim_policy_login_metrics_logger.cc", + "esim_policy_login_metrics_logger.h", + "network_metrics_helper.cc", + "network_metrics_helper.h", + "vpn_network_metrics_helper.cc", + "vpn_network_metrics_helper.h", + ] +} + +source_set("unit_tests") { + testonly = true + deps = [ + "//ash/constants", + "//base", + "//base/test:test_support", + "//chromeos/dbus/shill", + "//chromeos/login/login_state", + "//chromeos/network", + "//chromeos/network:test_support", + "//components/prefs", + "//components/prefs:test_support", + "//testing/gtest", + ] + sources = [ + "connection_info_metrics_logger_unittest.cc", + "esim_policy_login_metrics_logger_unittest.cc", + "network_metrics_helper_unittest.cc", + "vpn_network_metrics_helper_unittest.cc", + ] +} diff --git a/chromium/chromeos/ash/components/network/onc/BUILD.gn b/chromium/chromeos/ash/components/network/onc/BUILD.gn new file mode 100644 index 00000000000..9803b5cf73a --- /dev/null +++ b/chromium/chromeos/ash/components/network/onc/BUILD.gn @@ -0,0 +1,82 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") +import("//testing/libfuzzer/fuzzer_test.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +source_set("onc") { + # Due to circular dependency, others should depend on via chromeos/network. + visibility = [ + "//chromeos/ash/components/network/proxy", + "//chromeos/network", + ] + + configs += [ "//chromeos/network:network_config" ] + deps = [ + "//base", + "//chromeos/components/onc", + "//components/account_id", + "//components/certificate_matching", + "//components/device_event_log", + "//components/onc", + "//components/prefs", + "//components/proxy_config", + "//components/url_formatter", + "//components/user_manager", + "//net", + ] + sources = [ + "network_onc_utils.cc", + "network_onc_utils.h", + "onc_certificate_importer.h", + "onc_certificate_importer_impl.cc", + "onc_certificate_importer_impl.h", + "onc_certificate_pattern.cc", + "onc_certificate_pattern.h", + "onc_merger.cc", + "onc_merger.h", + "onc_normalizer.cc", + "onc_normalizer.h", + "onc_translation_tables.cc", + "onc_translation_tables.h", + "onc_translator.h", + "onc_translator_onc_to_shill.cc", + "onc_translator_shill_to_onc.cc", + ] +} + +source_set("unit_tests") { + testonly = true + deps = [ + "//base/test:test_support", + "//chromeos:test_utils", + "//chromeos/components/onc", + "//chromeos/components/onc:test_support", + "//chromeos/network", + "//components/onc", + "//crypto:test_support", + "//net:test_support", + "//testing/gmock", + "//testing/gtest", + ] + sources = [ + "network_onc_utils_unittest.cc", + "onc_certificate_importer_impl_unittest.cc", + "onc_certificate_pattern_unittest.cc", + "onc_merger_unittest.cc", + "onc_normalizer_unittest.cc", + "onc_translator_unittest.cc", + ] +} + +fuzzer_test("onc_normalizer_fuzzer") { + sources = [ "onc_normalizer_fuzzer.cc" ] + deps = [ + "//base", + "//chromeos/components/onc", + "//chromeos/network", + ] +} diff --git a/chromium/chromeos/ash/components/network/portal_detector/BUILD.gn b/chromium/chromeos/ash/components/network/portal_detector/BUILD.gn new file mode 100644 index 00000000000..1628a1afc32 --- /dev/null +++ b/chromium/chromeos/ash/components/network/portal_detector/BUILD.gn @@ -0,0 +1,37 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +source_set("portal_detector") { + configs += [ "//chromeos/network:network_config" ] + deps = [ + "//base", + "//chromeos/network", + "//components/device_event_log", + "//net", + ] + sources = [ + "network_portal_detector.cc", + "network_portal_detector.h", + "network_portal_detector_strategy.cc", + "network_portal_detector_strategy.h", + "network_portal_detector_stub.cc", + "network_portal_detector_stub.h", + ] +} + +source_set("test_support") { + testonly = true + deps = [ + ":portal_detector", + "//testing/gmock", + ] + sources = [ + "mock_network_portal_detector.cc", + "mock_network_portal_detector.h", + ] +} diff --git a/chromium/chromeos/ash/components/network/proxy/BUILD.gn b/chromium/chromeos/ash/components/network/proxy/BUILD.gn new file mode 100644 index 00000000000..82fad61c46b --- /dev/null +++ b/chromium/chromeos/ash/components/network/proxy/BUILD.gn @@ -0,0 +1,55 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +source_set("proxy") { + # Due to circular dependency, others should depend on via chromeos/network. + visibility = [ "//chromeos/network" ] + + configs += [ "//chromeos/network:network_config" ] + deps = [ + "//base", + "//chromeos/ash/components/network/onc", + "//chromeos/dbus/shill", + "//components/onc", + "//components/pref_registry", + "//components/prefs", + "//components/proxy_config", + "//components/user_manager", + "//dbus", + "//net", + ] + sources = [ + "proxy_config_handler.cc", + "proxy_config_handler.h", + "proxy_config_service_impl.cc", + "proxy_config_service_impl.h", + "ui_proxy_config_service.cc", + "ui_proxy_config_service.h", + ] +} + +source_set("unit_tests") { + testonly = true + deps = [ + "//base", + "//chromeos/dbus/shill", + "//chromeos/network", + "//chromeos/network:test_support", + "//components/onc", + "//components/prefs", + "//components/prefs:test_support", + "//components/proxy_config", + "//components/sync_preferences:test_support", + "//net:test_support", + "//testing/gtest", + ] + sources = [ + "proxy_config_service_impl_unittest.cc", + "ui_proxy_config_service_unittest.cc", + ] +} diff --git a/chromium/chromeos/ash/components/oobe_quick_start/BUILD.gn b/chromium/chromeos/ash/components/oobe_quick_start/BUILD.gn new file mode 100644 index 00000000000..d1ee1e6a73f --- /dev/null +++ b/chromium/chromeos/ash/components/oobe_quick_start/BUILD.gn @@ -0,0 +1,30 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +source_set("oobe_quick_start") { + deps = [ + "connectivity", + "//base", + ] + sources = [ + "verification_shapes.cc", + "verification_shapes.h", + ] +} + +source_set("unit_tests") { + testonly = true + deps = [ + ":oobe_quick_start", + "connectivity:test_support", + "connectivity:unit_tests", + "//base", + "//base/test:test_support", + ] + sources = [ "verification_shapes_unittest.cc" ] +} diff --git a/chromium/chromeos/ash/components/oobe_quick_start/connectivity/BUILD.gn b/chromium/chromeos/ash/components/oobe_quick_start/connectivity/BUILD.gn new file mode 100644 index 00000000000..72cfeb1a637 --- /dev/null +++ b/chromium/chromeos/ash/components/oobe_quick_start/connectivity/BUILD.gn @@ -0,0 +1,40 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") + +source_set("connectivity") { + deps = [ + "//base", + "//device/bluetooth", + ] + sources = [ + "target_device_bootstrap_controller.cc", + "target_device_bootstrap_controller.h", + "target_device_bootstrap_controller_impl.cc", + "target_device_bootstrap_controller_impl.h", + ] +} + +source_set("test_support") { + testonly = true + public_deps = [ ":connectivity" ] + deps = [ "//base" ] + sources = [ + # Add fakes/mocks here. + ] +} + +source_set("unit_tests") { + testonly = true + deps = [ + ":connectivity", + "//base", + "//base/test:test_support", + "//device/bluetooth:mocks", + ] + sources = [ "target_device_bootstrap_controller_impl_unittest.cc" ] +} diff --git a/chromium/chromeos/ash/components/scanning/BUILD.gn b/chromium/chromeos/ash/components/scanning/BUILD.gn new file mode 100644 index 00000000000..d0bc1ed4843 --- /dev/null +++ b/chromium/chromeos/ash/components/scanning/BUILD.gn @@ -0,0 +1,19 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash, "Non Chrome OS builds cannot depend on //chromeos/ash") + +component("scanning") { + defines = [ "IS_SCANNING_IMPL" ] + deps = [ + "//base", + "//net", + ] + sources = [ + "scanner.cc", + "scanner.h", + ] +} diff --git a/chromium/chromeos/ash/resources/BUILD.gn b/chromium/chromeos/ash/resources/BUILD.gn new file mode 100644 index 00000000000..568912acfce --- /dev/null +++ b/chromium/chromeos/ash/resources/BUILD.gn @@ -0,0 +1,36 @@ +# Copyright 2022 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. + +import("//build/config/chromeos/ui_mode.gni") +import("//chromeos/ash/components/assistant/assistant.gni") +import("//tools/grit/grit_rule.gni") + +assert(is_chromeos_ash) + +grit("resources") { + source = "ash_resources.grd" + + outputs = [ + "grit/ash_resources.h", + "grit/ash_resources_map.cc", + "grit/ash_resources_map.h", + "ash_resources.pak", + ] + output_dir = "$root_gen_dir/chromeos/ash" + + defines = [ "enable_cros_libassistant=$enable_cros_libassistant" ] + + grit_flags = [ + "-E", + "mojom_root=" + rebase_path(root_gen_dir, root_build_dir), + ] + + deps = [ + "//ash/components/multidevice/mojom:mojom_js", + "//ash/services/cellular_setup/public/mojom:mojom_js", + "//ash/services/device_sync/public/mojom:mojom_js", + "//ash/services/multidevice_setup/public/mojom:mojom_js", + "//chromeos/ash/components/human_presence:human_presence_internals_ts", + ] +} diff --git a/chromium/chromeos/services/assistant/BUILD.gn b/chromium/chromeos/ash/services/assistant/BUILD.gn index 8fcd00a71e8..7d75e7bab45 100644 --- a/chromium/chromeos/services/assistant/BUILD.gn +++ b/chromium/chromeos/ash/services/assistant/BUILD.gn @@ -4,7 +4,7 @@ import("//build/buildflag_header.gni") import("//build/config/chromeos/ui_mode.gni") -import("//chromeos/assistant/assistant.gni") +import("//chromeos/ash/components/assistant/assistant.gni") assert(is_chromeos_ash) @@ -58,8 +58,10 @@ component("lib") { "//ash/components/audio", "//ash/constants", "//base", - "//chromeos/assistant:buildflags", + "//chromeos/ash/components/assistant:buildflags", "//chromeos/dbus", + "//chromeos/dbus/dlcservice:dlcservice", + "//chromeos/dbus/dlcservice:dlcservice_proto", "//chromeos/dbus/power", "//chromeos/dbus/power:power_manager_proto", "//chromeos/dbus/util", @@ -102,8 +104,8 @@ source_set("tests") { "//ash/public/cpp/assistant/test_support", "//base", "//base/test:test_support", - "//chromeos/assistant:buildflags", - "//chromeos/assistant/test_support", + "//chromeos/ash/components/assistant:buildflags", + "//chromeos/ash/components/assistant/test_support", "//chromeos/dbus:test_support", "//chromeos/dbus/audio", "//chromeos/dbus/power", @@ -164,7 +166,7 @@ static_library("test_support") { deps = [ ":lib", "//base", - "//chromeos/assistant:buildflags", + "//chromeos/ash/components/assistant:buildflags", "//chromeos/services/assistant/public/cpp", "//chromeos/services/assistant/public/mojom", "//chromeos/services/assistant/public/proto", diff --git a/chromium/chromeos/services/assistant/audio_decoder/BUILD.gn b/chromium/chromeos/ash/services/assistant/audio_decoder/BUILD.gn index bbb0fb5b333..71e78eb1034 100644 --- a/chromium/chromeos/services/assistant/audio_decoder/BUILD.gn +++ b/chromium/chromeos/ash/services/assistant/audio_decoder/BUILD.gn @@ -2,8 +2,10 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//chromeos/assistant/assistant.gni") +import("//build/config/chromeos/ui_mode.gni") +import("//chromeos/ash/components/assistant/assistant.gni") +assert(is_chromeos_ash, "Non Chrome OS builds cannot depend on //chromeos/ash") assert(enable_cros_libassistant) source_set("lib") { diff --git a/chromium/chromeos/components/BUILD.gn b/chromium/chromeos/components/BUILD.gn index d8a2a34bddb..306a1a44371 100644 --- a/chromium/chromeos/components/BUILD.gn +++ b/chromium/chromeos/components/BUILD.gn @@ -23,12 +23,12 @@ test("chromeos_components_unittests") { "//build:chromeos_buildflags", "//chromeos/components/cdm_factory_daemon:unit_tests", "//chromeos/components/feature_usage:unit_tests", - "//chromeos/components/hps:unit_tests", "//chromeos/components/local_search_service:unit_tests", "//chromeos/components/local_search_service/public/mojom:unit_tests", "//chromeos/components/mojo_bootstrap:unit_tests", "//chromeos/components/onc:unit_tests", "//chromeos/components/quick_answers:unit_tests", + "//chromeos/components/security_token_pin:unit_tests", "//chromeos/components/sensors:unit_tests", "//chromeos/components/string_matching:unit_tests", "//chromeos/components/sync_wifi:unit_tests", diff --git a/chromium/chromeos/components/cdm_factory_daemon/mojom/cdm_factory_daemon.mojom b/chromium/chromeos/components/cdm_factory_daemon/mojom/cdm_factory_daemon.mojom index 655808b4f2b..c446ab3f1a2 100644 --- a/chromium/chromeos/components/cdm_factory_daemon/mojom/cdm_factory_daemon.mojom +++ b/chromium/chromeos/components/cdm_factory_daemon/mojom/cdm_factory_daemon.mojom @@ -84,4 +84,9 @@ interface CdmFactoryDaemon { // Deprecated, do not use. [MinVersion=4] RemovedMethod5@5(); + + // Returns the provisioned HDCP Key back to Chrome. If successful, it will + // return the full key. If not, it will return an empty string. + [MinVersion=5] + GetHdcp14Key@6() => (string hdcp_key_base64); }; diff --git a/chromium/chromeos/components/disks/BUILD.gn b/chromium/chromeos/components/disks/BUILD.gn new file mode 100644 index 00000000000..140b2e7c175 --- /dev/null +++ b/chromium/chromeos/components/disks/BUILD.gn @@ -0,0 +1,11 @@ +# Copyright 2022 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. + +source_set("prefs") { + sources = [ + "disks_prefs.cc", + "disks_prefs.h", + ] + deps = [ "//components/prefs" ] +} diff --git a/chromium/chromeos/components/local_search_service/public/mojom/local_search_service.mojom b/chromium/chromeos/components/local_search_service/public/mojom/local_search_service.mojom index 54b50b04b19..0fde4775293 100644 --- a/chromium/chromeos/components/local_search_service/public/mojom/local_search_service.mojom +++ b/chromium/chromeos/components/local_search_service/public/mojom/local_search_service.mojom @@ -11,7 +11,8 @@ import "sandbox/policy/mojom/sandbox.mojom"; enum IndexId { kCrosSettings = 0, kHelpApp = 1, - kHelpAppLauncher = 2 + kHelpAppLauncher = 2, + kPersonalization = 3 // Add new client IDs here. }; diff --git a/chromium/chromeos/components/mojo_service_manager/BUILD.gn b/chromium/chromeos/components/mojo_service_manager/BUILD.gn new file mode 100644 index 00000000000..ec1dbfbe7e2 --- /dev/null +++ b/chromium/chromeos/components/mojo_service_manager/BUILD.gn @@ -0,0 +1,28 @@ +# Copyright 2022 The Chromium OS Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//chromeos/features.gni") + +assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") + +component("mojo_service_manager") { + sources = [ + "connection.cc", + "connection.h", + ] + deps = [ + "//base", + "//chromeos:features", + "//mojo/public/cpp/bindings", + ] + public_deps = [ "//chromeos/components/mojo_service_manager/mojom" ] + defines = [ "IS_CHROMEOS_MOJO_SERVICE_MANAGER_IMPL" ] + + if (!use_real_chromeos_services) { + sources += [ + "fake_mojo_service_manager.cc", + "fake_mojo_service_manager.h", + ] + } +} diff --git a/chromium/chromeos/components/mojo_service_manager/mojom/BUILD.gn b/chromium/chromeos/components/mojo_service_manager/mojom/BUILD.gn new file mode 100644 index 00000000000..9c038a0b9ae --- /dev/null +++ b/chromium/chromeos/components/mojo_service_manager/mojom/BUILD.gn @@ -0,0 +1,13 @@ +# Copyright 2022 The Chromium OS Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//mojo/public/tools/bindings/mojom.gni") + +mojom("mojom") { + sources = [ "mojo_service_manager.mojom" ] + public_deps = [ "//mojo/public/mojom/base" ] + + component_output_prefix = "chromeos_mojo_service_manager" + component_macro_prefix = "CHROMEOS_MOJO_SERVICE_MANAGER" +} diff --git a/chromium/chromeos/components/mojo_service_manager/mojom/mojo_service_manager.mojom b/chromium/chromeos/components/mojo_service_manager/mojom/mojo_service_manager.mojom new file mode 100644 index 00000000000..ecfe0dfca9c --- /dev/null +++ b/chromium/chromeos/components/mojo_service_manager/mojom/mojo_service_manager.mojom @@ -0,0 +1,195 @@ +// Copyright 2022 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. + +// API exposed by the ChromeOS mojo service manager. + +// NOTE: This mojom should be kept in sync with the copy in ChromeOS's repo in +// src/platform2/mojo_service_manager/lib/mojom/service_manager.mojom + +module chromeos.mojo_service_manager.mojom; + +import "mojo/public/mojom/base/time.mojom"; + +// Shares and manages mojo services between all the processes running on +// ChromeOS. This is provided by the ChromeOS mojo service manager daemon. +// The argument |service_name| should match the regex ([a-zA-Z0-9._\-]+). It is +// used for identifying the services and for the ACLs. +// +// Next MinVersion: 1 +// Next Method ID: 4 +interface ServiceManager { + // Registers a service to the service manager. Callers should set disconnect + // handler on the corresponding mojo receiver of |service_provider| to handle + // errors. + Register@0(string service_name, + pending_remote<ServiceProvider> service_provider); + + // Requests a service from the service manager. The |receiver| will be bound + // to the service. In the case that the service is not registered, if + // |timeout| is null, the |receiver| will be bound after the service is + // available. If |timeout| is not null and the |receiver| cannot be bound + // after |timeout|, it will be reset. Callers should set disconnect handler on + // the corresponding mojo remote of |receiver| to handle errors. + Request@1(string service_name, mojo_base.mojom.TimeDelta? timeout, + handle<message_pipe> receiver); + + // Queries the state of a service. + Query@2(string service_name) => (ErrorOrServiceState result); + + // Registers an observer to observe the state of services. The observer can + // only receive the events related to the services which the callers are + // allowed to request. Callers should set disconnect handler on the + // corresponding mojo receiver of |observer| to handle errors. + AddServiceObserver@3(pending_remote<ServiceObserver> observer); +}; + +// Provides a service to other processes. Each provider process implements this +// for each mojo service and registers each of them to the service manager. This +// will only be called by the service manager and will not be exported to other +// processes directly. +// +// Next MinVersion: 1 +// Next Method ID: 1 +interface ServiceProvider { + // Requests to bind the |receiver| to the corresponding mojo interface. + // The service manager checks the policies and calling this if the requester + // is allowed. The |client_identity| is set by the service manager for + // identifying the requester process. This can be used for more detail ACLs if + // needed. + // Note: the implementations can reset |receiver| to return errors. They + // should use the error codes defined in |ErrorCode| enum when returning + // errors. + Request@0(ProcessIdentity client_identity, + handle<message_pipe> receiver); +}; + +// Observes the service events. Requester processes implement this and register +// it to the service manager. +// +// Next MinVersion: 1 +// Next Method ID: 1 +interface ServiceObserver { + // Is called when service events occur. + OnServiceEvent@0(ServiceEvent event); +}; + +// The identity information about a process. +// +// Next MinVersion: 1 +// Next Field ID: 4 +struct ProcessIdentity { + // The SELinux security context. + string security_context@0; + // The process id. + uint32 pid@1; + // The user / group id. + uint32 uid@2; + uint32 gid@3; +}; + +// The result of ServiceManager::Query. +// +// Next MinVersion: 1 +// Next Field ID: 3 +[Extensible] +union ErrorOrServiceState { + // The default value for forward compatibility. All the unknown type will be + // mapped to this. + [Default] uint8 default_type@0; + // The result if succeeds. + ServiceState state@1; + // The error if fails. + Error error@2; +}; + +// The state of a service. +// +// Next MinVersion: 1 +// Next Field ID: 3 +[Extensible] +union ServiceState { + // The default value for forward compatibility. All the unknown type will be + // mapped to this. + [Default] uint8 default_type@0; + // The state of a registered service. + RegisteredServiceState registered_state; + // The state of a unregistered service. + UnregisteredServiceState unregistered_state; +}; + +// The state of a registered service. +// +// Next MinVersion: 1 +// Next Field ID: 1 +struct RegisteredServiceState { + // The identity of the owner of the service. + ProcessIdentity owner@0; +}; + +// The state of a unregistered service. +// +// Next MinVersion: 1 +// Next Field ID: 0 +struct UnregisteredServiceState { +}; + +// The event about a service. +// +// Next MinVersion: 1 +// Next Field ID: 3 +struct ServiceEvent { + [Extensible] + enum Type { + // The default value for forward compatibility. All the unknown value will + // be mapped to this. + [Default] kUnknown, + // The service is registered. + kRegistered, + // The service is not registered. + kUnRegistered, + }; + + Type type@0; + // The name of the service which triggers the event. + string service_name@1; + // The dispatcher of the event. It is the process which registered or + // unregistered the service. + ProcessIdentity dispatcher@2; +}; + +// A generic error type for functions to return error. +// +// Next MinVersion: 1 +// Next Field ID: 2 +struct Error { + ErrorCode code@0; + string message@1; +}; + +// The error code for |struct Error| and the disconnect handlers. This is used +// in the disconnect reason of all the mojo handles (namely, message pipe, +// receiver and remote) which are sent to |ServiceManager|. +// Note that in the disconnect handlers, this is casted to |uint32| and has no +// guarantee that the value can be casted back to this. Use +// |mojo::ConvertIntToMojoEnum()| for casting. +// +// NextMinVersion: 1 +[Extensible] +enum ErrorCode { + // The default value for forward compatibility. In struct |Error|, all the + // unknown value will be mapped to this. + // In disconnect handlers, if the handle is reset without a reason, the error + // code is 0. So this enum starts from 1 to be distinguish from that. + [Default] kUnknown = 1, + // Timeout is reached. + kTimeout, + // The caller is not permit to perform the operation. + kPermissionDenied, + // The service has already been registered. + kServiceAlreadyRegistered, + // The service cannot be found. + kServiceNotFound, + // Unexpected os error. + kUnexpectedOsError, +}; diff --git a/chromium/chromeos/components/quick_answers/BUILD.gn b/chromium/chromeos/components/quick_answers/BUILD.gn index 4481212fa6d..f4c358fab74 100644 --- a/chromium/chromeos/components/quick_answers/BUILD.gn +++ b/chromium/chromeos/components/quick_answers/BUILD.gn @@ -62,6 +62,7 @@ source_set("quick_answers") { "//components/signin/public/identity_manager", "//components/spellcheck/common", "//content/public/browser", + "//google_apis", "//net:net", "//services/data_decoder/public/cpp", "//services/network/public/cpp:cpp", @@ -105,6 +106,7 @@ source_set("unit_tests") { "//chromeos/services/assistant/public/shared", "//chromeos/services/machine_learning/public/cpp:stub", "//chromeos/services/machine_learning/public/mojom", + "//google_apis", "//services/data_decoder/public/cpp:test_support", "//services/network:test_support", "//testing/gmock", diff --git a/chromium/chromeos/components/remote_apps/mojom/remote_apps.mojom b/chromium/chromeos/components/remote_apps/mojom/remote_apps.mojom index d4b1d9d65d1..0ab31db28fa 100644 --- a/chromium/chromeos/components/remote_apps/mojom/remote_apps.mojom +++ b/chromium/chromeos/components/remote_apps/mojom/remote_apps.mojom @@ -6,22 +6,42 @@ module chromeos.remote_apps.mojom; import "url/mojom/url.mojom"; +[Stable] +union AddFolderResult { + // The ID of the added folder. Implies success. + string folder_id; + + // Implies failure. + string error; +}; + +[Stable] +union AddAppResult { + // The ID of the added app. Implies success. + string app_id; + + // Implies failure. + string error; +}; + // Interface for communication between an extension and the Remote Apps -// Manager. +// Manager or |RemoteAppsProxyLacros|. +[Stable] interface RemoteApps { // Adds a Remote Apps folder to the launcher. Empty folders are not shown in // the launcher. // // Input parameters: // - |name|: the name of the folder. - // - // Output parameters: - // - |folder_id|: the ID of the newly added folder. - // - |error|: A string describing the error if any. // - |add_to_front|: true if the folder should be added to the front of the // app list. - AddFolder(string name, - bool add_to_front) => (string? folder_id, string? error); + // + // Output parameters: + // - |result|: A union with |folder_id| representing the ID of the added + // folder on success, and |error| representing the error message + // on failure. + AddFolder@0(string name, + bool add_to_front) => (AddFolderResult result); // Adds a Remote Apps app to the launcher. // @@ -36,13 +56,14 @@ interface RemoteApps { // list. Has no effect if the app has a parent folder. // // Output parameters: - // - |app_id|: the ID of the newly added app. - // - |error|: A string describing the error if any. - AddApp(string source_id, + // - |result|: A union with |app_id| representing the ID of the added app on + // success, and |error| representing the error message on + // failure. + AddApp@1(string source_id, string name, string folder_id, url.mojom.Url icon_url, - bool add_to_front) => (string? app_id, string? error); + bool add_to_front) => (AddAppResult result); // Deletes a Remote App added by |AddApp()|. // @@ -51,22 +72,35 @@ interface RemoteApps { // // Output parameters: // - |error|: A string describing the error if any. - DeleteApp(string app_id) => (string? error); + DeleteApp@2(string app_id) => (string? error); }; -// Factory for creating an instance of RemoteApps. +// Factory for creating an instance of |RemoteApps|. +[Stable] interface RemoteAppsFactory { - // Creates an instance of RemoteApps. The JS bindings manages |source_id| - // and passes the extension ID. - Create(string source_id, + // Binds to the Profile's |RemoteApps| implementation. The + // |OnRemoteAppLaunched| event is only dispatched to the observer associated + // with the source which added the app. + BindRemoteAppsAndAppLaunchObserver@0(string source_id, + pending_receiver<RemoteApps> remote_apps, + pending_remote<RemoteAppLaunchObserver> observer); +}; + +// Bridge for binding the |RemoteApps| interfaces from Lacros to Ash. Used by +// |RemoteAppsProxyLacros|. +[Stable, Uuid="80d5b638-317b-4e9c-b8fc-5ecfa7ec5f30"] +interface RemoteAppsLacrosBridge { + // Binds to the |RemoteApps| implementation in Ash. All |OnRemoteAppLaunched| + // events will be dispatched to the observer. + BindRemoteAppsAndAppLaunchObserverForLacros@0( pending_receiver<RemoteApps> remote_apps, pending_remote<RemoteAppLaunchObserver> observer); }; // A RemoteAppLaunchObserver gets notifications when a remote app is launched. +[Stable] interface RemoteAppLaunchObserver { - // Invoked when a remote app is launched. |app_id| is the ID of the app - // which was launched. The event is only dispatched to the extension which - // added the app. - OnRemoteAppLaunched(string app_id); + // Invoked when a remote app is launched. |app_id| is the ID of the app which + // was launched. |source_id| is the same ID passed to the |AddApp()| method. + OnRemoteAppLaunched@0(string app_id, string source_id); }; diff --git a/chromium/chromeos/components/security_token_pin/BUILD.gn b/chromium/chromeos/components/security_token_pin/BUILD.gn new file mode 100644 index 00000000000..c07f7b46254 --- /dev/null +++ b/chromium/chromeos/components/security_token_pin/BUILD.gn @@ -0,0 +1,35 @@ +# Copyright 2020 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. + +assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") + +component("security_token_pin") { + sources = [ + "constants.h", + "error_generator.cc", + "error_generator.h", + ] + + defines = [ "IS_SECURITY_TOKEN_PIN_IMPL" ] + + deps = [ + "//base", + "//base:i18n", + "//chromeos/strings", + "//ui/base", + ] +} + +source_set("unit_tests") { + testonly = true + sources = [ "error_generator_unittest.cc" ] + + deps = [ + ":security_token_pin", + "//base", + "//base:i18n", + "//testing/gtest", + "//ui/base", + ] +} diff --git a/chromium/chromeos/constants/BUILD.gn b/chromium/chromeos/constants/BUILD.gn index d43e59ca81c..d13693f39a2 100644 --- a/chromium/chromeos/constants/BUILD.gn +++ b/chromium/chromeos/constants/BUILD.gn @@ -20,7 +20,7 @@ component("constants") { if (is_chromeos_lacros) { deps += [ "//chromeos/crosapi/mojom", - "//chromeos/lacros:lacros", + "//chromeos/startup", ] } } @@ -39,6 +39,7 @@ source_set("unit_tests") { deps += [ "//chromeos/lacros:lacros", "//chromeos/lacros:test_support", + "//chromeos/startup", ] } } diff --git a/chromium/chromeos/crosapi/cpp/BUILD.gn b/chromium/chromeos/crosapi/cpp/BUILD.gn index d6124283baf..9fad9e7bf1f 100644 --- a/chromium/chromeos/crosapi/cpp/BUILD.gn +++ b/chromium/chromeos/crosapi/cpp/BUILD.gn @@ -12,8 +12,6 @@ config("crosapi_implementation") { component("cpp") { output_name = "crosapi_public_cpp" sources = [ - "crosapi_constants.cc", - "crosapi_constants.h", "gurl_os_handler_utils.cc", "gurl_os_handler_utils.h", "keystore_service_util.cc", @@ -23,6 +21,7 @@ component("cpp") { ] configs += [ ":crosapi_implementation" ] deps = [ + ":crosapi_constants", "//base", "//chromeos/crosapi/mojom", "//mojo/public/cpp/bindings", @@ -36,6 +35,14 @@ component("cpp") { } } +static_library("crosapi_constants") { + sources = [ + "crosapi_constants.cc", + "crosapi_constants.h", + ] + deps = [ "//base" ] +} + source_set("unit_tests") { testonly = true deps = [ diff --git a/chromium/chromeos/crosapi/mojom/BUILD.gn b/chromium/chromeos/crosapi/mojom/BUILD.gn index a0990048743..b1bbf5ffc23 100644 --- a/chromium/chromeos/crosapi/mojom/BUILD.gn +++ b/chromium/chromeos/crosapi/mojom/BUILD.gn @@ -18,6 +18,7 @@ mojom("mojom") { "browser_app_instance_registry.mojom", "browser_version.mojom", "cert_database.mojom", + "chrome_app_kiosk_service.mojom", "clipboard.mojom", "clipboard_history.mojom", "content_protection.mojom", @@ -25,12 +26,17 @@ mojom("mojom") { "desk_template.mojom", "device_attributes.mojom", "device_settings_service.mojom", + "digital_goods.mojom", "dlp.mojom", + "document_scan.mojom", "download_controller.mojom", "drive_integration_service.mojom", + "echo_private.mojom", + "extension_info_private.mojom", "feedback.mojom", "field_trial.mojom", "file_manager.mojom", + "file_system_provider.mojom", "force_installed_tracker.mojom", "geolocation.mojom", "holding_space_service.mojom", @@ -50,6 +56,7 @@ mojom("mojom") { "native_theme.mojom", "network_settings_service.mojom", "networking_attributes.mojom", + "networking_private.mojom", "notification.mojom", "policy_namespace.mojom", "policy_service.mojom", @@ -60,6 +67,7 @@ mojom("mojom") { "screen_manager.mojom", "select_file.mojom", "sharesheet.mojom", + "speech_recognition.mojom", "structured_metrics_service.mojom", "sync.mojom", "system_display.mojom", @@ -69,6 +77,9 @@ mojom("mojom") { "tts.mojom", "url_handler.mojom", "video_capture.mojom", + "vpn_extension_observer.mojom", + "vpn_service.mojom", + "wallpaper.mojom", "web_app_service.mojom", "web_app_types.mojom", "web_page_info.mojom", @@ -76,12 +87,15 @@ mojom("mojom") { disable_variants = true public_deps = [ + "//chromeos/components/remote_apps/mojom", "//chromeos/components/sensors/mojom", "//chromeos/services/machine_learning/public/mojom", + "//components/digital_goods/mojom:mojom", "//components/metrics/structured/mojom", "//components/services/app_service/public/mojom:mojom", "//media/capture/mojom:image_capture", "//media/capture/mojom:video_capture_types", + "//media/mojo/mojom:speech_recognition", "//mojo/public/mojom/base", "//printing/backend/mojom", "//printing/mojom", @@ -182,12 +196,12 @@ mojom("mojom") { }, { mojom = "crosapi.mojom.PreferredApp" - cpp = "::apps::mojom::PreferredAppPtr" + cpp = "::apps::PreferredAppPtr" move_only = true }, { mojom = "crosapi.mojom.PreferredAppChanges" - cpp = "::apps::mojom::PreferredAppChangesPtr" + cpp = "::apps::PreferredAppChangesPtr" move_only = true }, { @@ -211,6 +225,7 @@ mojom("mojom") { "//chromeos/crosapi/mojom/web_app_types_mojom_traits.h", "//chromeos/crosapi/mojom/browser_app_instance_registry_mojom_traits.h", "//components/services/app_service/public/cpp/app_types.h", + "//components/services/app_service/public/cpp/preferred_app.h", "//chromeos/crosapi/mojom/sharesheet_mojom_traits.h", "//components/services/app_service/public/cpp/icon_types.h", "//components/services/app_service/public/mojom/types.mojom.h", @@ -228,6 +243,7 @@ mojom("mojom") { "//components/services/app_service/public/cpp:app_types", "//components/services/app_service/public/cpp:browser_app_instance_registry_update", "//components/services/app_service/public/cpp:icon_types", + "//components/services/app_service/public/cpp:preferred_app", "//components/services/app_service/public/mojom:mojom", "//components/webapps/browser:constants", ] diff --git a/chromium/chromeos/crosapi/mojom/arc.mojom b/chromium/chromeos/crosapi/mojom/arc.mojom index edac26a0533..58e2397dac0 100644 --- a/chromium/chromeos/crosapi/mojom/arc.mojom +++ b/chromium/chromeos/crosapi/mojom/arc.mojom @@ -11,31 +11,31 @@ import "ui/gfx/image/mojom/image.mojom"; // TODO(crbug.com/1268687): It should be migrated to AppService in the future. // The status in ash-chrome side. Return with the result. -[Stable] +[Stable, Extensible] enum RequestActivityIconsStatus { // Connection established successfully in ash-chrome. kSuccess, // Ended with error to connect to ARC in ash-chrome. - kArcNotAvailable, + [Default] kArcNotAvailable, }; -[Stable] +[Stable, Extensible] enum RequestTextSelectionActionsStatus { // Connection established successfully in ash-chrome. kSuccess, // Ended with error to connect to ARC in ash-chrome. - kArcNotAvailable, + [Default] kArcNotAvailable, }; -[Stable] +[Stable, Extensible] enum RequestUrlHandlerListStatus { // Connection established successfully in ash-chrome. kSuccess, // Ended with error to connect to ARC in ash-chrome. - kArcNotAvailable, + [Default]kArcNotAvailable, }; [Stable, Extensible] diff --git a/chromium/chromeos/crosapi/mojom/cert_database.mojom b/chromium/chromeos/crosapi/mojom/cert_database.mojom index 4f828d81d07..dd9f3c8d84c 100644 --- a/chromium/chromeos/crosapi/mojom/cert_database.mojom +++ b/chromium/chromeos/crosapi/mojom/cert_database.mojom @@ -4,7 +4,7 @@ module crosapi.mojom; -[Stable, Extensible] +[Stable] struct GetCertDatabaseInfoResult { // Deprecated on 10/2021. Use `user_nss_database` from // crosapi.BrowserInitParams instead. diff --git a/chromium/chromeos/crosapi/mojom/chrome_app_kiosk_service.mojom b/chromium/chromeos/crosapi/mojom/chrome_app_kiosk_service.mojom new file mode 100644 index 00000000000..ee2dd9d4e87 --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/chrome_app_kiosk_service.mojom @@ -0,0 +1,80 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +// Set of parameters required to install the kiosk app from a cached location. +[Stable] +struct AppInstallParams { + // Id of the primary kiosk app. + string id@0; + // Location of the crx file in local cache. + string crx_file_location@1; + // Version of the app to be installed. + string version@2; + // Indicates whether the app should be downloaded from Chrome Web Store. + bool is_store_app@3; +}; + +[Stable, Extensible] +enum ChromeKioskInstallResult { + [Default] kUnknown = 0, + // Installation completed successfully, kiosk is ready to launch. + kSuccess = 1, + // Primary app is not cached yet, network is required to rectify. + kPrimaryAppNotCached = 2, + // Install of primary app failed + kPrimaryAppInstallFailed = 3, + // Install of a secondary app failed + kSecondaryAppInstallFailed = 4, + // The primary app does not have kiosk support in the manifest + kPrimaryAppNotKioskEnabled = 5, +}; + +[Stable, Extensible] +enum ChromeKioskLaunchResult { + [Default] kUnknown = 0, + // Launch of kiosk app was successful. + kSuccess = 1, + // Primary or secondary apps are not ready for launch + kUnableToLaunch = 2, + // The primary app is not offline enabled, but network is not ready + kNetworkMissing = 3, +}; + +// A client implemented in lacros-chrome for the DownloadController which is +// implemented in ash-chrome. +// +// Next MinVersion: 1 +// Next ID: 1 +[Stable] +interface ChromeKioskLaunchController { + // Trigger a full install of the kiosk app into Lacros chrome. + // Note that this contains the finalization below, so the caller is expected + // to only call one of the two methods. + // |is_network_ready| indicates whether the device has network connectivity. + InstallKioskApp@0(AppInstallParams params) + => (ChromeKioskInstallResult result); + + // Only finalize the app installation. This performs the last steps of + // verifying that the kiosk app and its dependencies are installed and + // enabled. + // |is_network_ready| indicates whether the device has network connectivity. + LaunchKioskApp@1(string app_id, bool is_network_ready) + => (ChromeKioskLaunchResult result); +}; + +// Service used to register a ChromeAppKioskInstaller into ash. +// Implemented in ash-chrome. +// +// Next MinVersion: 1 +// Next ID: 1 +[Stable, Uuid="7aca9ca3-6d25-450d-83ee-1a0069df0eb3"] +interface ChromeAppKioskService{ + // Binds the ChromeAppKioskInstaller interface, which allows the + // Kiosk startup process running in ash-chrome to trigger the installation of + // the kiosk app into lacros-chrome. + BindLaunchController@0( + pending_remote<ChromeKioskLaunchController> controller); +}; diff --git a/chromium/chromeos/crosapi/mojom/clipboard_history.mojom b/chromium/chromeos/crosapi/mojom/clipboard_history.mojom index cf735619727..6ddc69a3f47 100644 --- a/chromium/chromeos/crosapi/mojom/clipboard_history.mojom +++ b/chromium/chromeos/crosapi/mojom/clipboard_history.mojom @@ -11,7 +11,7 @@ import "ui/base/mojom/ui_base_types.mojom"; // written to logs. New enum values can be added, but existing enums must // never be renumbered, deleted, or reused. If adding an enum, add it at the // bottom. -[Stable, Extensible, Default=kUnknown] +[Stable, Extensible] enum ClipboardHistoryControllerShowSource { // Shown by the accelerator(search + v). kAccelerator, @@ -22,7 +22,7 @@ enum ClipboardHistoryControllerShowSource { // Shown by the virtual keyboard. kVirtualKeyboard, // Used as a default value in case of version skew. - kUnknown + [Default] kUnknown }; // This interface is implemented by Ash-Chrome. diff --git a/chromium/chromeos/crosapi/mojom/crosapi.mojom b/chromium/chromeos/crosapi/mojom/crosapi.mojom index 931df8d67b3..7330560f290 100644 --- a/chromium/chromeos/crosapi/mojom/crosapi.mojom +++ b/chromium/chromeos/crosapi/mojom/crosapi.mojom @@ -4,6 +4,7 @@ module crosapi.mojom; +import "chromeos/components/remote_apps/mojom/remote_apps.mojom"; import "chromeos/components/sensors/mojom/cros_sensor_service.mojom"; import "chromeos/crosapi/mojom/account_manager.mojom"; import "chromeos/crosapi/mojom/app_service.mojom"; @@ -14,18 +15,24 @@ import "chromeos/crosapi/mojom/automation.mojom"; import "chromeos/crosapi/mojom/browser_app_instance_registry.mojom"; import "chromeos/crosapi/mojom/browser_version.mojom"; import "chromeos/crosapi/mojom/cert_database.mojom"; +import "chromeos/crosapi/mojom/chrome_app_kiosk_service.mojom"; import "chromeos/crosapi/mojom/clipboard.mojom"; import "chromeos/crosapi/mojom/clipboard_history.mojom"; import "chromeos/crosapi/mojom/content_protection.mojom"; import "chromeos/crosapi/mojom/desk_template.mojom"; import "chromeos/crosapi/mojom/device_attributes.mojom"; import "chromeos/crosapi/mojom/device_settings_service.mojom"; +import "chromeos/crosapi/mojom/digital_goods.mojom"; import "chromeos/crosapi/mojom/dlp.mojom"; +import "chromeos/crosapi/mojom/document_scan.mojom"; import "chromeos/crosapi/mojom/download_controller.mojom"; import "chromeos/crosapi/mojom/drive_integration_service.mojom"; +import "chromeos/crosapi/mojom/echo_private.mojom"; +import "chromeos/crosapi/mojom/extension_info_private.mojom"; import "chromeos/crosapi/mojom/feedback.mojom"; import "chromeos/crosapi/mojom/field_trial.mojom"; import "chromeos/crosapi/mojom/file_manager.mojom"; +import "chromeos/crosapi/mojom/file_system_provider.mojom"; import "chromeos/crosapi/mojom/force_installed_tracker.mojom"; import "chromeos/crosapi/mojom/geolocation.mojom"; import "chromeos/crosapi/mojom/holding_space_service.mojom"; @@ -44,6 +51,7 @@ import "chromeos/crosapi/mojom/message_center.mojom"; import "chromeos/crosapi/mojom/metrics_reporting.mojom"; import "chromeos/crosapi/mojom/native_theme.mojom"; import "chromeos/crosapi/mojom/networking_attributes.mojom"; +import "chromeos/crosapi/mojom/networking_private.mojom"; import "chromeos/crosapi/mojom/power.mojom"; import "chromeos/crosapi/mojom/network_settings_service.mojom"; import "chromeos/crosapi/mojom/prefs.mojom"; @@ -52,6 +60,7 @@ import "chromeos/crosapi/mojom/resource_manager.mojom"; import "chromeos/crosapi/mojom/screen_manager.mojom"; import "chromeos/crosapi/mojom/select_file.mojom"; import "chromeos/crosapi/mojom/sharesheet.mojom"; +import "chromeos/crosapi/mojom/speech_recognition.mojom"; import "chromeos/crosapi/mojom/structured_metrics_service.mojom"; import "chromeos/crosapi/mojom/sync.mojom"; import "chromeos/crosapi/mojom/system_display.mojom"; @@ -60,9 +69,12 @@ import "chromeos/crosapi/mojom/test_controller.mojom"; import "chromeos/crosapi/mojom/timezone.mojom"; import "chromeos/crosapi/mojom/tts.mojom"; import "chromeos/crosapi/mojom/url_handler.mojom"; +import "chromeos/crosapi/mojom/vpn_service.mojom"; import "chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom"; import "chromeos/crosapi/mojom/video_capture.mojom"; import "chromeos/crosapi/mojom/kiosk_session_service.mojom"; +import "chromeos/crosapi/mojom/vpn_extension_observer.mojom"; +import "chromeos/crosapi/mojom/wallpaper.mojom"; import "chromeos/crosapi/mojom/web_app_service.mojom"; import "chromeos/crosapi/mojom/web_page_info.mojom"; import "mojo/public/mojom/base/big_string.mojom"; @@ -101,8 +113,8 @@ struct BrowserInfo { // please note the milestone when you added it, to help us reason about // compatibility between the client applications and older ash-chrome binaries. // -// Next version: 71 -// Next method id: 74 +// Next version: 83 +// Next method id: 86 [Stable, Uuid="8b79c34f-2bf8-4499-979a-b17cac522c1e", RenamedFrom="crosapi.mojom.AshChromeService"] interface Crosapi { @@ -215,11 +227,20 @@ interface Crosapi { [MinVersion=55] BindDeviceSettingsService@59( pending_receiver<DeviceSettingsService> receiver); + // Added in M104. + [MinVersion=76] BindDigitalGoodsFactory@79( + pending_receiver<DigitalGoodsFactory> receiver); + // Binds the DLP (Data Leak Prevention) interface for notifying Ash about // content restrictions applied to web content in Lacros. // Added in M98. [MinVersion=60] BindDlp@64(pending_receiver<Dlp> receiver); + // Binds the DocumentScan interface, which allows Lacros to get scanner access + // via Ash Chrome. + // Added in M104. + [MinVersion=77] BindDocumentScan@80(pending_receiver<DocumentScan> receiver); + // Binds the DownloadController interface, which allows Lacros download // information to be passed into Ash Chrome. // Added in M92. @@ -232,6 +253,21 @@ interface Crosapi { [MinVersion=29] BindDriveIntegrationService@34( pending_receiver<DriveIntegrationService> receiver); + // EchoPrivate is a service used to provide trusted websites a mechanism to + // confirm the device is a ChromeOS device. + [MinVersion=71] BindEchoPrivate@74( + pending_receiver<EchoPrivate> receiver); + + // ExtensionInfoPrivate is a service that allows trusted extensions in Lacros + // to get and set system properties. Implemented in Ash. + [MinVersion=72] BindExtensionInfoPrivate@75( + pending_receiver<ExtensionInfoPrivate> receiver); + + // NetworkingPrivate is a service that allows users to modify + // network settings in Lacros. Implemented in Ash. + [MinVersion=80] BindNetworkingPrivate@83( + pending_receiver<NetworkingPrivate> receiver); + // Binds the extension publisher service, which allows Lacros to connect its // extensions to the app service. // Added in M93. @@ -243,6 +279,12 @@ interface Crosapi { [MinVersion=5] BindFileManager@8(pending_receiver<FileManager> receiver); + // This interface allows Lacros extensions to implement file systems. + // Added in M104. + [MinVersion=78] + BindFileSystemProviderService@81( + pending_receiver<FileSystemProviderService> receiver); + // Binds the ForceInstalledTracker interface for track the status of // force-installed extensions. // Added in M96. @@ -335,6 +377,12 @@ interface Crosapi { // Added in M89. [MinVersion=11] BindPrefs@16(pending_receiver<Prefs> receiver); + // Binds the RemoteAppsLacrosBridge for the Remote Apps private Mojo API. + // Added in M103. + [MinVersion=74] BindRemoteAppsLacrosBridge@77( + pending_receiver<chromeos.remote_apps.mojom.RemoteAppsLacrosBridge> + receiver); + // Binds the Remoting service to allow websites running in Lacros to interact // with Chrome Remote Desktop functionality available in ash-chrome. // Added in M93. @@ -361,6 +409,12 @@ interface Crosapi { BindSharesheet@70( pending_receiver<Sharesheet> receiver); + // Binds the SpeechRecognition interface to access on-device speech + // recognition. + // Added in M104. + [MinVersion=81] + BindSpeechRecognition@84(pending_receiver<SpeechRecognition> receiver); + // Binds the StableVideoDecoderFactory, which allows lacros-chrome to request // hardware accelerated video decoding. We need to use a // GenericPendingReceiver to avoid dependency circularities. @@ -461,11 +515,30 @@ interface Crosapi { [MinVersion=20] BindVideoCaptureDeviceFactory@25( pending_receiver<crosapi.mojom.VideoCaptureDeviceFactory> receiver); + // Binds the vpn extension observer so that lacros can inform ash about + // Vpn extension events. + [MinVersion=75] BindVpnExtensionObserver@78( + pending_receiver<VpnExtensionObserver> receiver); + // Binds the Kiosk session service which sends session status changes from // lacros to ash. // Added in M96. [MinVersion=49] BindKioskSessionService@53( - pending_receiver<KioskSessionService> receiver); + pending_receiver<KioskSessionService> receiver); + + // Binds the chrome app kiosk service. This service is used to install and + // launch the chrome app inside lacros. + [MinVersion=73] BindChromeAppKioskService@76( + pending_receiver<ChromeAppKioskService> receiver); + + // Binds the vpn service. This service is used to facilirate + // communication between chrome.vpnProvider extension in lacros and the + // network services in ash. + [MinVersion=79] BindVpnService@82( + pending_receiver<VpnService> receiver); + + // Binds the service to allow lacros-chrome to set the chromeos wallpaper. + [MinVersion=82] BindWallpaper@85(pending_receiver<Wallpaper> receiver); // Binds the web page info factory interface which allows ash to request web // page info from Lacros. @@ -490,6 +563,8 @@ interface Crosapi { // |browser_info| during startup. // Added in M87. [MinVersion=3] OnBrowserStartup@6(BrowserInfo browser_info); + + }; [Stable, Extensible] @@ -536,8 +611,8 @@ enum MetricsReportingManaged { // future compatibility, to avoid assumptions about where on disk the directory // is located. // -// Next version: 34 -// Next id: 9 +// Next version: 35 +// Next id: 11 [Stable] struct DefaultPaths { // The default (non-configurable) directory for documents. For example, @@ -575,13 +650,19 @@ struct DefaultPaths { // The default (non-configurable) directory for shared files. For example, // /home/chronos/u-<hash>/ShareCache. [MinVersion=33] mojo_base.mojom.FilePath? share_cache@8; + + // The directory where default web app configs are stored. + [MinVersion=34] mojo_base.mojom.FilePath? preinstalled_web_app_config@9; + + // The directory where additional web app configs are stored. + [MinVersion=34] mojo_base.mojom.FilePath? + preinstalled_web_app_extra_config@10; }; // The device specific data needed in Lacros. -// Next version: 2 -// Next id: 2 -// TODO(igorcov): Include DeviceAttributes here. -[Stable, Extensible] +// Next version: 4 +// Next id: 9 +[Stable] struct DeviceProperties { // The value of device DM token. It is the raw data from the policy, not // encrypted. @@ -592,6 +673,31 @@ struct DeviceProperties { // determined. It is non-encrypted data corresponding to // PolicyData::device_affiliation_ids. [MinVersion=1] array<string>? device_affiliation_ids@1; + + // Whether ARC is installed and the current device is officially supported to + // run ARC. + [MinVersion=2] bool is_arc_available@2; + + // Whether the device is of tablet form factor. + [MinVersion=2] bool is_tablet_form_factor@3; + + // The value of the device identifier of the directory API that is + // generated by the server and identifies the cloud record of the device for + // querying in the cloud directory API. See + // https://developers.google.com/admin-sdk/directory/v1/guides/manage-chrome-devices. + [MinVersion=3] string? directory_device_id@4; + + // The device's serial number. + [MinVersion=3] string? serial_number@5; + + // The administrator-annotated Asset Id. + [MinVersion=3] string? annotated_asset_id@6; + + // The administrator-annotated location. + [MinVersion=3] string? annotated_location@7; + + // The device's hostname as set by DeviceHostnameTemplate policy. + [MinVersion=3] string? hostname@8; }; [Stable, Extensible] @@ -646,7 +752,7 @@ enum InitialBrowserAction { // Whether / how mlservice on-device handwriting is supported. [Stable, Extensible] -enum OndeviceHandwritingSupport{ +enum OndeviceHandwritingSupport { kUnsupported = 0, kUseRootfs = 1, kUseDlc = 2, @@ -703,8 +809,8 @@ enum OpenUrlFrom { // If ash-chrome is newer than the browser, then some fields may not be // processed by the browser. // -// Next version: 42 -// Next id: 42 +// Next version: 44 +// Next id: 44 [Stable, RenamedFrom="crosapi.mojom.LacrosInitParams"] struct BrowserInitParams { // This is ash-chrome's version of the Crosapi interface. This is used by @@ -782,6 +888,11 @@ struct BrowserInitParams { [MinVersion=11] array<uint8>? device_account_policy@11; + // Timestamp (seconds since epoch in UTC) at which last device account policy + // fetch was attempted. + [MinVersion=42] + uint64 last_policy_fetch_attempt_timestamp@42; + // System idle info to initialize SystemIdleCache. [MinVersion=12] IdleInfo? idle_info@12; @@ -816,10 +927,8 @@ struct BrowserInitParams { [MinVersion=17] bool web_apps_enabled@17; - // TODO(crbug/1198528): remove use_new_account_manager parameter. - // Specifies whether lacros-chrome should use new account manager logic. [MinVersion=18] - bool use_new_account_manager@18; + bool REMOVED_18@18; // When this flag is |true|, Lacros is the primary browser and Ash is the // secondary backup. @@ -881,7 +990,7 @@ struct BrowserInitParams { [MinVersion=28] bool publish_chrome_apps@28; -// When this flag is set, lacros will publish hosted apps to the app service. + // When this flag is set, lacros will publish hosted apps to the app service. [MinVersion=39] bool publish_hosted_apps@39; @@ -969,7 +1078,13 @@ struct BrowserInitParams { // the map are serialized PolicyFetchResponse proto messages from // components/policy/proto/device_management_backend.proto. [MinVersion=41] - map<crosapi.mojom.PolicyNamespace, array<uint8>>? device_account_component_policy@41; + map<crosapi.mojom.PolicyNamespace, array<uint8>>? REMOVED_41@41; + + // Component (i.e. chrome extensions) policy for the device account. + // Maps `PolicyNamespace` representing an extension to the JSON policy + // value for that extension. + [MinVersion=43] + map<crosapi.mojom.PolicyNamespace, mojo_base.mojom.Value>? device_account_component_policy@43; }; // Parameters to specify OpenUrl behavior. @@ -995,6 +1110,19 @@ struct OpenUrlParams { WindowOpenDisposition disposition@0; [MinVersion=1] OpenUrlFrom from@1; + + // Decides how the URL's path is to be considered when WindowOpenDisposition + // is kSwitchToTab, i.e. a search is performed for an existing tab that + // matches a given URL. + [Stable, Extensible] + enum SwitchToTabPathBehavior { + // If the two paths are different, the URLs do not match. + [Default] kRespect = 0, + + // Path is ignored when testing two URLs for a match. + kIgnore = 1, + }; + [MinVersion=2] SwitchToTabPathBehavior path_behavior@2; }; // BrowserService defines the APIs that live in a browser (such as @@ -1004,8 +1132,8 @@ struct OpenUrlParams { // has accidentally become a kitchen sink for different features. This was not // intentional. // -// Next MinVersion: 66. -// Next ID: 17 +// Next MinVersion: 69. +// Next ID: 19 // [Stable, Uuid="4e04dc16-b34c-40fd-9e3f-3c55c2c6cf91", RenamedFrom="crosapi.mojom.LacrosChromeService"] @@ -1049,14 +1177,17 @@ interface BrowserService { NewGuestWindow@14() => (); // Opens a new tab in the browser with, currently, the last used profile. - // This may open a new window, if there's no window. Please see also - // the Chrome's NewTab command for details. + // This may open a new window, if there's no window. If a new browser is + // opened and `should_trigger_session_restore` is set, the new browser will + // open with the profile's session startup pref. If this is not set the + // browser will open without considering the user's session startup pref. + // Please see also the Chrome's NewTab command for details. // The callback is called on the command execution. // This is designed to be equivalent of CTRL+T behavior. By default, this // opens a new-tab-page, but extensions may override the behavior. // Added in M91. [MinVersion=10] - NewTab@7() => (); + NewTab@7([MinVersion=68] bool should_trigger_session_restore) => (); // Opens the specified URL in the browser. This opens a new tab and loads // the page at specified URL. @@ -1105,6 +1236,10 @@ interface BrowserService { [MinVersion=9] UpdateDeviceAccountPolicy@6(array<uint8> policy); + // Notifies Lacros about an attempt to update device account policy. + [MinVersion=66] + NotifyPolicyFetchAttempt@17(); + // Updates keep-alive instance to maintain the browser lifetime. // Note: there is always timing issue. If the browser is in the process of // termination, this may not work. To fully implement keep-alive, ash-chrome @@ -1119,11 +1254,16 @@ interface BrowserService { [MinVersion=64] OpenForFullRestore@15(); + // The old UpdateComponentPolicy method. + [MinVersion=67] + REMOVED_16@16(map<crosapi.mojom.PolicyNamespace, array<uint8>> policy); + // Notifies Lacros to update the component policy data. The values of the map - // are serialized PolicyFetchResponse proto messages from - // components/policy/proto/device_management_backend.proto. - [MinVersion=65] - UpdateComponentPolicy@16(map<crosapi.mojom.PolicyNamespace, array<uint8>> policy); + // are JSON policy data downloaded by Ash. The `component_policy` argument + // maps `PolicyNamespace` representing an extension to the JSON policy value + // for that extension. + [MinVersion=67] + UpdateComponentPolicy@18(map<crosapi.mojom.PolicyNamespace, mojo_base.mojom.Value> component_policy); }; // TODO(crbug.com/1180712): move to its own file. Currently due to circular diff --git a/chromium/chromeos/crosapi/mojom/desk_template.mojom b/chromium/chromeos/crosapi/mojom/desk_template.mojom index d09436556e2..a3621ab3ad3 100644 --- a/chromium/chromeos/crosapi/mojom/desk_template.mojom +++ b/chromium/chromeos/crosapi/mojom/desk_template.mojom @@ -7,6 +7,7 @@ module crosapi.mojom; import "ui/base/mojom/ui_base_types.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; import "url/mojom/url.mojom"; +import "ui/gfx/image/mojom/image.mojom"; // Additional state of the browser in the single Lacros window for saving in the // desk template. @@ -22,8 +23,8 @@ struct DeskTemplateState { }; // Interface for desk template clients. Implemented by lacros-chrome. -// Next version: 3 -// Next method id: 2 +// Next version: 4 +// Next method id: 3 [Stable] interface DeskTemplateClient { // Creates a browser from the desk template data. @@ -36,6 +37,11 @@ interface DeskTemplateClient { // |window_unique_id|. GetTabStripModelUrls@0(uint32 serial, string window_unique_id) => ( uint32 serial, string window_unique_id, DeskTemplateState? state); + + // Gets the image of the favicon associated with `url`. Returns an empty + // image if the favicon cannot be found. + [MinVersion=3] + GetFaviconImage@2(url.mojom.Url url) => (gfx.mojom.ImageSkia? image); }; // Interface for desk template. Implemented by ash-chrome. diff --git a/chromium/chromeos/crosapi/mojom/device_settings_service.mojom b/chromium/chromeos/crosapi/mojom/device_settings_service.mojom index 406ee4e6710..21fbacd5c9e 100644 --- a/chromium/chromeos/crosapi/mojom/device_settings_service.mojom +++ b/chromium/chromeos/crosapi/mojom/device_settings_service.mojom @@ -7,13 +7,13 @@ module crosapi.mojom; import "mojo/public/mojom/base/values.mojom"; // Copy of UsbDetachableAllowlistProto from chrome_device_policy.proto. -[Stable, Extensible] +[Stable] struct UsbDetachableAllowlist { array<UsbDeviceId> usb_device_ids@0; }; // Copy of UsbDeviceIdInclusiveProto from chrome_device_policy.proto. -[Stable, Extensible] +[Stable] struct UsbDeviceId { // USB Vendor Identifier (aka idVendor). bool has_vendor_id@0; @@ -24,7 +24,7 @@ struct UsbDeviceId { }; // All the device settings data that are needed in Lacros should be here. -[Stable, Extensible] +[Stable] struct DeviceSettings { // The value of AttestationForContentProtectionEnabled device setting. OptionalBool attestation_for_content_protection_enabled@0; @@ -35,6 +35,9 @@ struct DeviceSettings { // The value of UsbDetachableAllowlist device policy. UsbDetachableAllowlist? usb_detachable_allow_list@2; + // The value of DeviceEphemeralUsersEnabled device policy. + [MinVersion=1] OptionalBool device_ephemeral_users_enabled@3; + [Stable] enum OptionalBool { kUnset, diff --git a/chromium/chromeos/crosapi/mojom/digital_goods.mojom b/chromium/chromeos/crosapi/mojom/digital_goods.mojom new file mode 100644 index 00000000000..c066e1dc5eb --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/digital_goods.mojom @@ -0,0 +1,47 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +import "components/digital_goods/mojom/digital_goods.mojom"; +import "url/mojom/url.mojom"; + +// Implemented in ash-chrome. Allows lacros-chrome to perform Digital Goods +// operations (forwarded to ARC). +[Stable, Uuid="6f2fbc9e-2ff1-47bd-a15d-08e12c226f61"] +interface DigitalGoods { + // Queries the associated backend for information about one or more items. + GetDetails@0(string web_app_id, url.mojom.Url scope, array<string> item_ids) + => (payments.mojom.BillingResponseCode code, + array<payments.mojom.ItemDetails> item_details_list); + + // Queries the associated backend for information on all items that are + // currently owned by the user. May include unconfirmed purchases. + ListPurchases@1(string web_app_id, url.mojom.Url scope) + => (payments.mojom.BillingResponseCode code, + array<payments.mojom.PurchaseReference> purchase_reference_list); + + // Queries the associated backend for information on the latest purchase for + // each item type ever purchased by the user. May include expired or consumed + // purchases. + ListPurchaseHistory@2(string web_app_id, url.mojom.Url scope) + => (payments.mojom.BillingResponseCode code, + array<payments.mojom.PurchaseReference> purchase_reference_list); + + // Informs the associated backend that the purchase identified by + // |purchase_token| was used up. + Consume@3(string web_app_id, url.mojom.Url scope, string purchase_token) + => (payments.mojom.BillingResponseCode code); +}; + +// Implemented in ash-chrome. Allows lacros-chrome to create a |DigitalGoods| +// instance. +[Stable, Uuid="1197d2ad-0f33-49e4-b6d6-370e255a9896"] +interface DigitalGoodsFactory { + // Creates a DigitalGoods instance. The |digital_goods| is non-null iff + // |code| == kOk. + CreateDigitalGoods@0(string payment_method, string web_app_id) + => (payments.mojom.CreateDigitalGoodsResponseCode code, + pending_remote<DigitalGoods>? digital_goods); +};
\ No newline at end of file diff --git a/chromium/chromeos/crosapi/mojom/dlp.mojom b/chromium/chromeos/crosapi/mojom/dlp.mojom index d7246e6a20d..51f2c263a8e 100644 --- a/chromium/chromeos/crosapi/mojom/dlp.mojom +++ b/chromium/chromeos/crosapi/mojom/dlp.mojom @@ -18,14 +18,14 @@ enum DlpRestrictionLevel { }; // Corresponds to RestrictionLevelAndUrl struct. -[Stable, Extensible] +[Stable] struct DlpRestrictionLevelAndUrl { DlpRestrictionLevel level@0; url.mojom.Url url@1; }; // Corresponds to DlpContentRestrictionSet class. -[Stable, Extensible] +[Stable] struct DlpRestrictionSet { DlpRestrictionLevelAndUrl screenshot@0; DlpRestrictionLevelAndUrl privacy_screen@1; @@ -34,7 +34,7 @@ struct DlpRestrictionSet { }; // Captured area. -[Stable, Extensible] +[Stable] struct ScreenShareArea { // All root windows if |window_id| is null. string? window_id@0; diff --git a/chromium/chromeos/crosapi/mojom/document_scan.mojom b/chromium/chromeos/crosapi/mojom/document_scan.mojom new file mode 100644 index 00000000000..d920379d2d6 --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/document_scan.mojom @@ -0,0 +1,56 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +import "ui/gfx/geometry/mojom/geometry.mojom"; + +// The enum below is exactly the same as its counterpart in +// third_party/cros_system_api/dbus/lorgnette/lorgnette_service.proto + +// The failure mode of a scan job. +[Stable, Extensible] +enum ScanFailureMode { + // No failure occurred. + [Default] kNoFailure = 0, + + // An unknown or generic failure occurred. + kUnknown = 1, + + // The device is busy. + kDeviceBusy = 2, + + // The document feeder is jammed. + kAdfJammed = 3, + + // The document feeder is empty. + kAdfEmpty = 4, + + // The flatbed cover is open. + kFlatbedOpen = 5, + + // An error occurred while communicating with the device. + kIoError = 6, +}; + +// This interface is used to access scanners. +[Stable, Uuid="f0c77c02-b5c1-4919-8218-3076ecad58db"] +interface DocumentScan { + // Returns the names of all available, de-duplicated scanners. + GetScannerNames@0() => (array<string> scanner_names); + + // Performs a simple scan of the first page with a given scanner name. There + // are no settings and the actual scanner settings will be hard coded to use + // color mode. + // + // Returns the failure mode (which may be `kNoFailure` on success) and the + // data for the first page. The callback that receives `scan_data` must check + // it is non-null, in addition to checking `failure_mode`, in order to + // determine if the call succeeded. + // + // This API is intentionally designed this way for backwards compatibility + // with the documentScan.scan API that exists as of this writing. + ScanFirstPage@1(string scanner_name) + => (ScanFailureMode failure_mode, string? scan_data); +}; diff --git a/chromium/chromeos/crosapi/mojom/echo_private.mojom b/chromium/chromeos/crosapi/mojom/echo_private.mojom new file mode 100644 index 00000000000..e40a87d5fa1 --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/echo_private.mojom @@ -0,0 +1,33 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +[Stable, Extensible] +enum RegistrationCodeType { + kCoupon, + kGroup, +}; + +// EchoPrivate is a service used to provide trusted websites a mechanism to +// confirm the device is a ChromeOS device. Allowed users may then receive +// offers. Implemented in Ash. +[Stable, Uuid="021dafa4-ff41-42ad-9158-98d8e7f1ad6a"] +interface EchoPrivate { + // Checks TPM state to ensure the device is allowed to redeem offers. If it + // is, the user is then prompted to confirm. Returns true only if all checks + // pass. + CheckRedeemOffersAllowed@0( + string window_id, string service_name, string origin) => (bool allowed); + + // Returns the contents of the oobe timestamp file in string format. The + // result should be considered an opaque value that is directly passed to the + // extension. Failure is reported as empty string. + [MinVersion=1] + GetOobeTimestamp@1() => (string timestamp); + + // Returns an opaque string associated with the coupon or group type. + [MinVersion=2] + GetRegistrationCode@2(RegistrationCodeType type) => (string result); +}; diff --git a/chromium/chromeos/crosapi/mojom/extension_info_private.mojom b/chromium/chromeos/crosapi/mojom/extension_info_private.mojom new file mode 100644 index 00000000000..9ee85c093e2 --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/extension_info_private.mojom @@ -0,0 +1,28 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +import "mojo/public/mojom/base/values.mojom"; + +// ExtensionInfoPrivate is a service that allows trusted extensions in Lacros to +// get and set system properties. Implemented in Ash. +[Stable, Uuid="97236d3f-848a-4365-8c7e-f4133e0c79ff"] +interface ExtensionInfoPrivate { + // Returns a Dictionary-type base::Value that contains all results. This is + // considered an opaque value that is directly passed to the extension. + GetSystemProperties@0(array<string> property_names) => + (mojo_base.mojom.Value properties); + + // Sets the system timezone. There is no validation that the value is valid. + // This matches pre-existing behavior. + SetTimezone@1(string value); + + // Sets a system property. Validation happens in ash. If the property is not + // found, returns |false| and has no effect. + SetBool@2(string property_name, bool value) => (bool found); + + // Returns whether tablet mode is enabled. + IsTabletModeEnabled@3() => (bool enabled); +}; diff --git a/chromium/chromeos/crosapi/mojom/field_trial.mojom b/chromium/chromeos/crosapi/mojom/field_trial.mojom index 608eb750872..f8ddca59ddb 100644 --- a/chromium/chromeos/crosapi/mojom/field_trial.mojom +++ b/chromium/chromeos/crosapi/mojom/field_trial.mojom @@ -5,7 +5,7 @@ module crosapi.mojom; // Information about Ash's field trial group to be propagated to lacros. -[Stable, Extensible] +[Stable] struct FieldTrialGroupInfo { string trial_name; string group_name; diff --git a/chromium/chromeos/crosapi/mojom/file_system_provider.mojom b/chromium/chromeos/crosapi/mojom/file_system_provider.mojom new file mode 100644 index 00000000000..ff195b5d759 --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/file_system_provider.mojom @@ -0,0 +1,214 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +import "mojo/public/mojom/base/big_buffer.mojom"; +import "mojo/public/mojom/base/file_path.mojom"; +import "mojo/public/mojom/base/values.mojom"; + +// A file system is uniquely identified by an opaque string (consisting of at +// least the extension id + profile unique identifier) and a file_system_id. +[Stable] +struct FileSystemId { + // At a minimum, identifies the extension. May also need to identify profiles + // in the future. + string provider@0; + + // A unique id (for a particular |provider|) provided by the extension. + string id@1; +}; + +// The primary data source for the file system. +[Stable, Extensible] +enum FileSystemSource { + [Default] kFile, + kNetwork, + kDevice +}; + +// Provides immutable metadata about a file system. +[Stable] +struct FileSystemMetadata { + // The identifier of the file system. + FileSystemId file_system_id@0; + + // A human-readable name for the file system. + string display_name@1; + + // Whether the file system supports operations which may change contents of + // the file system (such as creating, deleting or writing to files). + bool writable@2; + + // The maximum number of files that can be opened at once. If 0, then not + // limited. + uint32 opened_files_limit@3; + + // Whether the file system supports the tag field for observing directories. + bool supports_notify@4; +}; + +// Files can be opened either for reading or writing. +[Stable, Extensible] +enum OpenFileMode { + [Default] kRead, + kWrite, +}; + +[Stable] +struct OpenedFile { + // A request ID to be be used by consecutive read/write and close requests. + int64 open_request_id@0; + + // The path of the opened file. While it seems like it would make sense to use + // a base::Path, both the extension API and the ash FileSystemProvider API + // pass strings. + string file_path@1; + + // Whether the file was opened for reading or writing. + OpenFileMode mode@2; +}; + +// Represents a watcher. +[Stable] +struct FSPWatcher { + // The path of the entry being observed. + mojo_base.mojom.FilePath entry_path@0; + + // Whether watching should include all child entries recursively. It can be + // true for directories only. + bool recursive@1; + + // Tag used by the last notification for the watcher. + string last_tag@2; +}; + +[Stable] +struct FileSystemInfo { + // Fixed metadata about the file system. + FileSystemMetadata metadata@0; + + // List of currently opened files. + array<OpenedFile> opened_files@1; + + // List of watchers. + array<FSPWatcher> watchers@2; +}; + +[Stable, Extensible] +enum FSPChangeType { + [Default] kChanged, + kDeleted +}; + +[Stable] +struct FSPChange { + FSPChangeType type@0; + mojo_base.mojom.FilePath path@1; +}; + +[Stable, Extensible] +enum FSPOperationResponse { + [Default] kUnknown, + kUnmountSuccess, + kGetEntryMetadataSuccess, + kGetActionsSuccess, + kReadDirectorySuccess, + kReadFileSuccess, + kGenericSuccess, + kGenericFailure, +}; + +// Implemented by Lacros. +[Stable, Uuid="8cbcf151-c189-4fe9-90ff-892c7f5637a9"] +interface FileSystemProvider { + // Allows Ash file system to forward an operation to Lacros extension + // providers. + // We use mojo_base.mojom.Value as the type because: + // * The extension API is stable. + // * Both the supplier and consumer of this information uses a type + // interchangeable with mojo_base.mojom.Value. While we could add a + // translation layer to a strongly typed mojom struct, this adds a + // overhead and the potential for errors with no benefit. + // Similarly, histogram_value is an int32 instead of the native enum + // HistogramValue because the enum is stable, has hundreds of entries, and + // cannot be type-mapped due to build-time dependency inversions. + // Provider will typically be an extension_id but is intentionally left + // abstract to support multi-profile in the future. + // |delivery_failure| is set to true if the operation could not be forwarded + // to the extension for any reason. + [MinVersion=1] + DeprecatedForwardOperation@0( + string provider, int32 histogram_value, string event_name, + array<mojo_base.mojom.Value> args); + [MinVersion=2] + ForwardOperation@1( + string provider, int32 histogram_value, string event_name, + array<mojo_base.mojom.Value> args) => (bool delivery_failure); +}; + +// Implemented by Ash. Extensions in Lacros can register themselves as file +// system providers. As the underlying system in Ash already supports +// multiplexing, we refrain from introducing a second layer of multiplexing at +// the crosapi layer. Lacros registers itself as a FileSystemProvider at +// startup. Extensions will call the "mount" method to make themselves known to +// Ash. At that point, Ash will send operations via FileSystemProvider, which +// Lacros will fulfill by calling methods in FileSystemProviderService. This +// creates a state machine with state spread between Ash and Lacros. This is +// dispreferred but unfortunately impossible to avoid given the design of the +// fileSystemProvider extension API. +[Stable, Uuid="82db93f7-e0a5-4a9c-a09f-db92f9e45348"] +interface FileSystemProviderService { + // File system providers use this interface to receive operation requests. + RegisterFileSystemProvider@0(pending_remote<FileSystemProvider> provider); + + // Makes a filesystem provided by an extension visible to the operating system + // and other consumers. + Mount@1(FileSystemMetadata metadata, bool persistent) => (string error); + + // Makes a filesystem provided by an extension unavailable. + Unmount@2(FileSystemId file_system_id) => (string error); + + // Returns all file systems mounted by the extension. + GetAll@3(string provider) => (array<FileSystemInfo> infos); + + // Returns information about a file system with the passed file_system_id. + Get@4(FileSystemId file_system_id) => (FileSystemInfo? info); + + // Called by the extension to notify watchers of changes. + // |file_system_id| is the identifier of the file system related to this + // change. + // |watcher| gives information about the path being observed, including the + // tag. + // |type| provides information about the observed entry. + // |changes| provides information about the observed directory. + // Note: for backwards compatibility with the existing extension API, both + // |type| and |changes| are necessary even though they appear mutually + // exclusive. + Notify@5(FileSystemId file_system_id, FSPWatcher watcher, + FSPChangeType type, array<FSPChange> changes) => (string error); + + // The following function represents responses from the Extension after + // handling an operation. We use mojo_base.mojom.Value as the type because: + // * The extension API is stable. + // * Both the supplier and consumer of this information uses a type + // interchangeable with mojo_base.mojom.Value. While we could add a + // translation layer to a strongly typed mojom struct, this adds a + // overhead and the potential for errors with no benefit. + // |request_id| corresponds to ids passed in via methods on interface + // FileSystemProvider. + [MinVersion=1] + OperationFinished@6(FSPOperationResponse response, + FileSystemId file_system_id, int64 request_id, + array<mojo_base.mojom.Value> args) => (string error); + + // Called by Lacros when a filesystem providing extension is loaded. + [MinVersion=2] + ExtensionLoaded@7(bool configurable, bool watchable, bool multiple_mounts, + FileSystemSource source, string extension_name, string extension_id); + + // Called by Lacros when a filesystem providing extension is unloaded. + [MinVersion=2] + ExtensionUnloaded@8(string id, bool due_to_shutdown); +}; diff --git a/chromium/chromeos/crosapi/mojom/keystore_error.mojom b/chromium/chromeos/crosapi/mojom/keystore_error.mojom index b89bbbe439e..79aebbb8c68 100644 --- a/chromium/chromeos/crosapi/mojom/keystore_error.mojom +++ b/chromium/chromeos/crosapi/mojom/keystore_error.mojom @@ -6,10 +6,10 @@ module crosapi.mojom; // Status codes for KeystoreService methods. // Mostly mirrors platform_keys::Status enum. -[Stable, Extensible, Default=kUnknown] +[Stable, Extensible] enum KeystoreError { // platform_keys errors. - kUnknown, + [Default] kUnknown, kAlgorithmNotSupported, kAlgorithmNotPermittedByCertificate, kCertificateNotFound, diff --git a/chromium/chromeos/crosapi/mojom/keystore_service.mojom b/chromium/chromeos/crosapi/mojom/keystore_service.mojom index 22a1678f3f2..a97c59c2152 100644 --- a/chromium/chromeos/crosapi/mojom/keystore_service.mojom +++ b/chromium/chromeos/crosapi/mojom/keystore_service.mojom @@ -34,7 +34,7 @@ enum KeystoreType { // Input parameters for RSASSA-PKCS1-v1_5. Parameters other than modulus_length // and sw_backed are currently not supported when used as inputs to // GenerateKey(). -[Stable, Extensible] +[Stable] struct KeystorePKCS115Params { [MinVersion=0] uint32 modulus_length@0; @@ -47,13 +47,13 @@ struct KeystorePKCS115Params { // Input parameters for ECDSA. |named_curve| uses WebCrypto nomenclature. // Currently "P-256" is the only supported curve. -[Stable, Extensible] +[Stable] struct KeystoreECDSAParams { string named_curve; }; // A signing algorithm is fully described by choice of algorithm and parameters. -[Stable, Extensible] +[Stable] union KeystoreSigningAlgorithm { KeystorePKCS115Params pkcs115; KeystoreECDSAParams ecdsa; @@ -68,9 +68,9 @@ enum KeystoreSigningAlgorithmName { }; // Recognized WebCrypto signing schemes. -[Stable, Extensible, Default=kUnknown] +[Stable, Extensible] enum KeystoreSigningScheme { - kUnknown = 0, + [Default] kUnknown = 0, kRsassaPkcs1V15None = 1, // The data is PKCS#1 v1.5 padded but not hashed. kRsassaPkcs1V15Sha1 = 2, kRsassaPkcs1V15Sha256 = 3, @@ -371,7 +371,7 @@ interface KeystoreService { // DEPRECATED, use `GetCertificates` instead. // Returns the certificates in the indicated keystore. The result is an array // of DER encoded X.509 certificates. - [MinVersion=2, RenamedFrom="crosapi.mojom.GetCertificates"] + [MinVersion=2] DEPRECATED_GetCertificates@2(KeystoreType keystore) => (DEPRECATED_GetCertificatesResult result); diff --git a/chromium/chromeos/crosapi/mojom/launcher_search.mojom b/chromium/chromeos/crosapi/mojom/launcher_search.mojom index 42d65ea0949..0835af40c9c 100644 --- a/chromium/chromeos/crosapi/mojom/launcher_search.mojom +++ b/chromium/chromeos/crosapi/mojom/launcher_search.mojom @@ -157,13 +157,17 @@ interface SearchResultsPublisher { OnSearchResultsReceived@0(SearchStatus status, array<SearchResult>? result); }; -// Interface to send query from ash to lacros. Implemented in lacros. +// Interface to send search queries from ash to lacros. Implemented in lacros. // Next min method ID: 2 [Stable, Uuid="c2d77467-b04d-4b10-8f54-de52c3cbe30d"] interface SearchController { // Sends search queries from ash to lacros. If a search query is called while // there is an in-flight search query, the in-flight search query will be - // cancelled before the new search query being executed. + // cancelled before the new search query is executed. + // + // Returns the pipe to bind to the implementation of `SearchResultsPublisher` + // that should receive the results of this search. Returns a new pipe each + // invocation so that each pipe conceptually represents a single search. Search@0(mojo_base.mojom.String16 query) => (pending_associated_receiver<SearchResultsPublisher> publisher); }; diff --git a/chromium/chromeos/crosapi/mojom/login.mojom b/chromium/chromeos/crosapi/mojom/login.mojom index 473cf439a4d..7bb1d7d6aed 100644 --- a/chromium/chromeos/crosapi/mojom/login.mojom +++ b/chromium/chromeos/crosapi/mojom/login.mojom @@ -38,14 +38,6 @@ interface ExternalLogoutRequestObserver { // Next MinVersion: 4 [Stable, Uuid="639e9f04-981f-46d1-91da-583c2958265b"] interface Login { - // Launches a managed guest session if one is set up via the admin console. - // If there are several managed guest sessions set up, it will launch the - // first available one. - // If a password is provided, the Managed Guest Session will be lockable and - // can be unlocked by providing the same password to - // |UnlockManagedGuestSession()|. - LaunchManagedGuestSession@0(string? password) => (string? error); - // Exits the current session. If |data_for_next_login_attempt| is provided, // stores data which can be read by |FetchDataForNextLoginAttempt()|. ExitCurrentSession@1(string? data_for_next_login_attempt) => (string? error); @@ -58,29 +50,6 @@ interface Login { // Deprecated. Use |LockCurrentSession()| below. LockManagedGuestSession@3() => (string? error); - // Deprecated. Use |UnlockCurrentSession()| below. - UnlockManagedGuestSession@4(string password) => (string? error); - - // Starts a ChromeOS Managed Guest Session which will host the shared user - // sessions. An initial shared session is entered with |password| as the - // password. When this shared session is locked, it can only be unlocked by - // calling |UnlockSharedSession()| with the same password. - LaunchSharedManagedGuestSession@5(string password) => (string? error); - - // Enters the shared session with the given password. If the session is - // locked, it can only be unlocked by calling |UnlockSharedSession()| with - // the same password. - // Fails if there is already a shared session running. Can only be called - // from the lock screen. - EnterSharedSession@6(string password) => (string? error); - - // Unlocks the shared session with the provided password. Fails if the - // password does not match the one provided to - // |LaunchSharedManagedGuestSession()| or |EnterSharedSession()|. - // Fails if there is no existing shared session. Can only be called from the - // lock screen. - UnlockSharedSession@7(string password) => (string? error); - // Ends the shared session. Security- and privacy-sensitive data in the // session will be cleaned up on a best effort basis. // Can be called from both the lock screen or in session. @@ -91,25 +60,12 @@ interface Login { // calling |FetchDataForNextLoginAttempt()|. SetDataForNextLoginAttempt@9(string data_for_next_login_attempt) => (); - // Launches a SAML user session with the provided email, gaiaId, password - // and oauth_code cookie. - [MinVersion=1] - LaunchSamlUserSession@10(SamlUserSessionProperties properties) => - (string? error); - // Locks the current session. The session has to be either a user session or a // Managed Guest Session launched by |LaunchManagedGuestSession()| with a // password. [MinVersion=1] LockCurrentSession@11() => (string? error); - // Unlocks the current session. The session has to be either a user session or - // a Managed Guest Session launched by |LaunchManagedGuestSession()| with a - // password. The session will unlock if |password| matches the one provided - // to at launch. - [MinVersion=1] - UnlockCurrentSession@12(string password) => (string? error); - // Adds an observer for the cleanup triggered event. [MinVersion=2] AddLacrosCleanupTriggeredObserver@13( @@ -126,4 +82,16 @@ interface Login { // lock screen (ash-chrome) listens for the dispatched event. [MinVersion=3] NotifyOnExternalLogoutDone@16(); + + // Removed methods. + REMOVED_0@0(string? password) => (string? error); + REMOVED_4@4(string password) => (string? error); + REMOVED_5@5(string password) => (string? error); + REMOVED_6@6(string password) => (string? error); + REMOVED_7@7(string password) => (string? error); + [MinVersion=1] + REMOVED_10@10(SamlUserSessionProperties properties) => + (string? error); + [MinVersion=1] + REMOVED_12@12(string password) => (string? error); }; diff --git a/chromium/chromeos/crosapi/mojom/login_screen_storage.mojom b/chromium/chromeos/crosapi/mojom/login_screen_storage.mojom index dc65f314efc..1f7b5730537 100644 --- a/chromium/chromeos/crosapi/mojom/login_screen_storage.mojom +++ b/chromium/chromeos/crosapi/mojom/login_screen_storage.mojom @@ -14,7 +14,7 @@ union LoginScreenStorageRetrieveResult { }; // Copy of LoginScreenStorageMetadata from login_screen_storage.proto. -[Stable, Extensible] +[Stable] struct LoginScreenStorageMetadata { // Whether the saved key/value pair should be deleted on session exit. bool clear_on_session_exit@0; diff --git a/chromium/chromeos/crosapi/mojom/metrics_reporting.mojom b/chromium/chromeos/crosapi/mojom/metrics_reporting.mojom index 3667a617545..5b444df789f 100644 --- a/chromium/chromeos/crosapi/mojom/metrics_reporting.mojom +++ b/chromium/chromeos/crosapi/mojom/metrics_reporting.mojom @@ -6,10 +6,12 @@ module crosapi.mojom; // Interface for observers of metrics reporting consent. Implemented by // lacros-chrome. Used by ash-chrome to send update notifications. +// Next version: 2 [Stable, Uuid="3bfcacbc-ab16-4731-9e11-3523983915d0"] interface MetricsReportingObserver { // Called when the metrics reporting state changes. - OnMetricsReportingChanged@0(bool enabled); + // If enabled is set to true, the client_id must be provided. + OnMetricsReportingChanged@0(bool enabled, [MinVersion=1] string? client_id); }; // Interface for metrics reporting consent. Implemented by ash-chrome. diff --git a/chromium/chromeos/crosapi/mojom/networking_private.mojom b/chromium/chromeos/crosapi/mojom/networking_private.mojom new file mode 100644 index 00000000000..6867f534ed4 --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/networking_private.mojom @@ -0,0 +1,162 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +import "mojo/public/mojom/base/values.mojom"; + +[Stable] +union StringSuccessOrErrorReturn { + // If provided, an error has occurred. + string error; + + // If provided, the call was a success and the result is this string. + string success_result; +}; + +[Stable] +union DictionarySuccessOrErrorReturn { + // If provided, an error has occurred. + string error; + + // If provided, the call was a success and the result is this string. + mojo_base.mojom.DeprecatedDictionaryValue success_result; +}; + +[Stable] +union ListValueSuccessOrErrorReturn { + // If provided, an error has occurred. + string error; + + // If provided, the call was a success and the result is this string. + mojo_base.mojom.ListValue success_result; +}; + +[Stable] +union PropertiesSuccessOrErrorReturn { + // If provided, an error has occurred. + string error; + + // If provided, the call was a success and the result is this string. + mojo_base.mojom.Value success_result; +}; + +// This interface mirrors the NetworkingPrivateDelegate from Lacros to Ash to +// allow the networking.private / networking.onc extensions to be used. Note +// that this API is stable since years and will rather be deprecated than +// changed. As such the API does reflect the state as is. +// Furthermore this API will only be called for the primary profile user. +[Stable, Uuid="30ea6c34-8a25-4fd5-86d5-887e166d2b01"] +interface NetworkingPrivate { + // Called to retrieve a list of properties for the network identified by + // |guid| whereas |guid| gets returned by GetNetworks or CreateNetwork. + GetProperties@0(string guid) => (PropertiesSuccessOrErrorReturn result); + + // Called to retrieve a list of managed properties for the network identified + // by |guid| whereas |guid| gets returned by GetNetworks or CreateNetwork. + GetManagedProperties@1(string guid) + => (PropertiesSuccessOrErrorReturn result); + + // Called to retrieve the current state for the network identified by |guid|. + GetState@2(string guid) => (DictionarySuccessOrErrorReturn result); + + // Called to set the |properties| for the network identified by |guid| + // accordingly. Whereas |guid| gets returned by GetNetworks or CreateNetwork. + SetProperties@3(string guid, + mojo_base.mojom.DeprecatedDictionaryValue properties, + bool allow_set_shared_config) + => (string error_or_empty); + + // Called to create a network with the given |properties|. If |shared| is + // true, it can be shared with all other users. + CreateNetwork@4(bool shared, + mojo_base.mojom.Value properties) + => (StringSuccessOrErrorReturn result); + + // Called to forget the given network identified by |guid| + // whereas |guid| gets returned by GetNetworks or CreateNetwork. + ForgetNetwork@5(string guid, + bool allow_forget_shared_config) + => (string error_or_empty); + + // Call to get an enumeration of all the networks. + GetNetworks@6(string network_type, + bool configured_only, + bool visible_only, + int32 limit) + => (ListValueSuccessOrErrorReturn result); + + // Start a network connection for the network identified by |guid| + // whereas |guid| gets returned by GetNetworks or CreateNetwork. + StartConnect@7(string guid) => (string error_or_empty); + + // Start to disconnect a network connection identified by |guid| + // whereas |guid| gets returned by GetNetworks or CreateNetwork. + StartDisconnect@8(string guid) => (string error_or_empty); + + // Start the activation process for the network identified by |guid| whereas + // |guid| gets returned by GetNetworks or CreateNetwork. + StartActivate@9(string guid, + string carrier) + => (string error_or_empty); + + // Get the status of a captive portal for a network identified by |guid| + // whereas |guid| gets returned by GetNetworks or CreateNetwork. + GetCaptivePortalStatus@10(string guid) => (StringSuccessOrErrorReturn result); + + // Unlocks a cellular sim card. |Guid| is the cellular network to unlock. If + // null is passed, the default cellular device will be used. + // |pin| is the current SIM PIN, or the new PIN if |puk| is provided. + // |puk| is provided by the operator for unblocking a blocked SIM. + UnlockCellularSim@11(string guid, + string pin, + string puk) + => (string error_or_empty); + + // Sets the state of the cellular SIM card. |Guid| is the cellular network to + // to set the SIM state of. If empty, the default cellular device will be + // used. + SetCellularSimState@12(string guid, + bool require_pin, + string current_pin, + string new_pin) + => (string error_or_empty); + + // Selects the cellular network. |Guid| is the cellular network to select + // whereas |guid| gets returned by GetNetworks or CreateNetwork. + SelectCellularMobileNetwork@13(string guid, + string network_id) + => (string error_or_empty); + + // Returns a list of ONC type strings. + GetEnabledNetworkTypes@14() + => (mojo_base.mojom.ListValue? network_types); + + // Returns a list of DeviceStateProperties. + GetDeviceStateList@15() + => (array<mojo_base.mojom.DeprecatedDictionaryValue?>? device_list); + + // Returns a dictionary of global policy values (may be empty). Note: the + // dictionary is expected to be a superset of the networkingPrivate + // GlobalPolicy dictionary. Any properties not in GlobalPolicy will be + // ignored. + GetGlobalPolicy@16() => (mojo_base.mojom.DeprecatedDictionaryValue? policies); + + // Returns a dictionary of certificate lists. + GetCertificateLists@17() + => (mojo_base.mojom.DeprecatedDictionaryValue? certificates); + + // Returns true if the ONC network type |type| is enabled. + EnableNetworkType@18(string type) => (bool enabled); + + // Returns true if the ONC network type |type| is disabled. + DisableNetworkType@19(string type) => (bool disabled); + + // Returns true if a scan was requested. It may take many seconds for a scan + // to complete. The scan may or may not trigger API events when complete. + // |type| is the type of network to request a scan for; if empty, scans for + // all supported network types except Cellular, which must be requested + // explicitly. + RequestScan@20(string type) => (bool scan_requested); +}; diff --git a/chromium/chromeos/crosapi/mojom/prefs.mojom b/chromium/chromeos/crosapi/mojom/prefs.mojom index 257c911bcc8..cf26430270c 100644 --- a/chromium/chromeos/crosapi/mojom/prefs.mojom +++ b/chromium/chromeos/crosapi/mojom/prefs.mojom @@ -85,6 +85,10 @@ enum PrefPath { [MinVersion=4] kPreferredLanguages = 28, // M100: language::prefs::kApplicationLocale (profile) [MinVersion=4] kApplicationLocale = 29, + // M104: prefs::kSharedStorage (profile) + [MinVersion=5] kSharedStorage = 30, + // M104: prefs::kProtectedContentDefault (extension) + [MinVersion=6] kProtectedContentDefault = 31, }; // Information about who or what is controlling a particular pref. This is used @@ -93,9 +97,9 @@ enum PrefPath { // Note that with respect to LevelOfControl, we do not consider extensions in // ash as extensions. They are treated as a prefstore of higher precedence. // However, no extensions in ash are expected to set these prefs. -[Stable, Extensible, Default=kDefaultUnknown] +[Stable, Extensible] enum PrefControlState { - kDefaultUnknown = 0, + [Default] kDefaultUnknown = 0, // Controlled by an extension in lacros. Ash does not have enough information // to know which extension in Lacros is controlling this pref. kLacrosExtensionControlled = 1, @@ -120,7 +124,7 @@ interface PrefObserver { }; // Interface for prefs. Implemented by ash-chrome. -// Next version: 3 +// Next version: 4 // Next method id: 5 [Stable, Uuid="815df607-0596-46f7-9ed9-14683b4826a3"] interface Prefs { @@ -130,7 +134,7 @@ interface Prefs { // Gets the specified ash pref. Additionally returns the control state of the // pref. - [MinVersion=2] + [MinVersion=3] GetExtensionPrefWithControl@3(PrefPath path) => ( mojo_base.mojom.Value? value, PrefControlState control); diff --git a/chromium/chromeos/crosapi/mojom/speech_recognition.mojom b/chromium/chromeos/crosapi/mojom/speech_recognition.mojom new file mode 100644 index 00000000000..20916411fd8 --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/speech_recognition.mojom @@ -0,0 +1,22 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +import "media/mojo/mojom/speech_recognition.mojom"; + +// Allows LaCrOS to access speech recognition provided by Ash, to power features +// such as Live Caption. +[Stable, Uuid="c881b018-a0a5-4d2e-9bfe-1f0cc9bd78bd"] +interface SpeechRecognition { + // Binds a speech recognition engine. + BindSpeechRecognitionContext@0( + pending_receiver<media.mojom.SpeechRecognitionContext> receiver); + + // Binds a browser interface for renderers to use to react to changing + // availability of speech recognition. + BindSpeechRecognitionClientBrowserInterface@1( + pending_receiver<media.mojom.SpeechRecognitionClientBrowserInterface> + receiver); +}; diff --git a/chromium/chromeos/crosapi/mojom/sync.mojom b/chromium/chromeos/crosapi/mojom/sync.mojom index cb28175fc2e..b96080fbc14 100644 --- a/chromium/chromeos/crosapi/mojom/sync.mojom +++ b/chromium/chromeos/crosapi/mojom/sync.mojom @@ -59,13 +59,35 @@ interface SyncExplicitPassphraseClient { NigoriKey decryption_key); }; +// Allows lacros-chrome to observe ash-chrome user settings changes. +[Stable, Uuid="925b02ff-cc06-44a1-a244-69e84259c1cf"] +interface SyncUserSettingsClientObserver { + // Called when apps sync is enabled/disabled by the user. + OnAppsSyncEnabledChanged@0(bool enabled); +}; + +// Defines a Sync API related to sync user settings that lives in ash-chrome +// and is accessed from lacros-chrome. +[Stable, Uuid="a3466eae-955f-492f-9bc7-b4bfb57b6dca"] +interface SyncUserSettingsClient { + // Adds a new observer. + AddObserver@0(pending_remote<SyncUserSettingsClientObserver> observer); + + // Returns whether apps sync is currently enabled by the user. + IsAppsSyncEnabled@1() => (bool enabled); +}; + // Defines a Sync API that lives in ash-chrome and is accessed from // lacros-chrome. To be extended in the future. -// Next version: 1 -// Next ordinal value: 1 +// Next version: 2 +// Next ordinal value: 2 [Stable, Uuid="4499c528-4578-466d-a97d-d66217323f48"] interface SyncService { // Binds SyncExplicitPassphraseClient, that lives in ash-chrome. BindExplicitPassphraseClient@0( pending_receiver<SyncExplicitPassphraseClient> receiver); + + // Binds SyncUserSettings, that lives in ash-chrome. + [MinVersion = 1] + BindUserSettingsClient@1(pending_receiver<SyncUserSettingsClient> receiver); }; diff --git a/chromium/chromeos/crosapi/mojom/test_controller.mojom b/chromium/chromeos/crosapi/mojom/test_controller.mojom index 98293f99a94..2853d21f767 100644 --- a/chromium/chromeos/crosapi/mojom/test_controller.mojom +++ b/chromium/chromeos/crosapi/mojom/test_controller.mojom @@ -31,19 +31,44 @@ enum OptionalBoolean { // Implemented in lacros-chrome. // Lets the Ash browser tests that require Lacros to send commands to this // lacros-chrome instance. +// Next version: 2 +// Next method id: 2 [Stable, Uuid="20e7f031-f4e1-4ad9-bd91-ad59eb8b1504"] interface StandaloneBrowserTestController { // Installs a test web app in lacros-chrome given a start URL and mode (open // in a tab or window) and returns the ID of the installed app (see // |web_app::GenerateAppId|). InstallWebApp@0(string start_url, WindowMode mode) => (string app_id); + + // Loads a fake extension in lacros-chrome, assigns it the given name and + // returns the ID of the loaded extension. + [MinVersion=1] + LoadVpnExtension@1(string extension_name) => (string extension_id); +}; + +// Allows callers running in lacros to trigger test events that are passed to +// the active Vpn configuration. +// See chrome/browser/lacros/vpn_provider_lacros_apitest.cc for details. +// Next version: 1 +// Next method id: 2 +[Stable, Uuid="e2bca22e-32e9-40b3-a0bc-035b41534496"] +interface TestShillController { + // Simulate |data| being received by the configuration determined by + // |extension_id| and |configuration_name|. + OnPacketReceived@0(string extension_id, string configuration_name, + array<uint8> data); + + // Simulate |message| being received by the configuration determined by + // |extension_id| and |configuration_name|. + OnPlatformMessage@1(string extension_id, string configuration_name, + uint32 message); }; // This interface is implemented by Ash-Chrome. // This interface provides tests a mechanism to mutate or query ash. // In the future, this interface may merge with an automation or a11y interface. -// Next version: 13 -// Next method id: 22 +// Next version: 14 +// Next method id: 23 [Stable, Uuid="1f93f9d7-e466-466c-a675-c21b48cf30d3"] interface TestController { // Clicks the middle of the views element identified by |element_name|. @@ -165,4 +190,19 @@ interface TestController { // Sharesheets. [MinVersion=12] SetSelectedSharesheetApp@21(string app_id) => (); + + // Returns the version of ash-chrome, e.g. "103.0.5029.0". The returned string + // is intended to be compatible with the base::Version(StringPiece) + // constructor. + // Consider using the convenience wrapper + // lacros_test_helper.h:IsAshVersionAtLeastForTesting instead. + // Introduced in M-103. + [MinVersion=13] + GetAshVersion@22() => (string ash_version); + + // Binds |test_shill_controller| that can be used to simulate packet/message + // events. + [MinVersion=14] + BindTestShillController@23( + pending_receiver<TestShillController> test_shill_controller) => (); }; diff --git a/chromium/chromeos/crosapi/mojom/vpn_extension_observer.mojom b/chromium/chromeos/crosapi/mojom/vpn_extension_observer.mojom new file mode 100644 index 00000000000..cfaabf0894d --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/vpn_extension_observer.mojom @@ -0,0 +1,19 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +// Receives updates from Lacros when Vpn extensions get loaded or unloaded. +// Next version: 1 +// Next method id: 2 +[Stable, Uuid="e35782e4-76b4-4de1-b808-bb0fec852faa"] +interface VpnExtensionObserver { + // Invoked when extension with |extension_id| and |extension_name| is loaded. + // See ExtensionRegistryObserver::OnExtensionLoaded(...) for details. + OnLacrosVpnExtensionLoaded@0(string extension_id, string extension_name); + + // Invoked when extension with |extension_id| is unloaded. + // See ExtensionRegistryObserver::OnExtensionUnloaded(...) for details. + OnLacrosVpnExtensionUnloaded@1(string extension_id); +};
\ No newline at end of file diff --git a/chromium/chromeos/crosapi/mojom/vpn_service.mojom b/chromium/chromeos/crosapi/mojom/vpn_service.mojom new file mode 100644 index 00000000000..e82d05d9c30 --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/vpn_service.mojom @@ -0,0 +1,135 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +import "mojo/public/mojom/base/values.mojom"; + +[Stable] +struct VpnErrorResponse { + string? name@0; + string? message@1; +}; + +// Adapter that allows packets received by ash to be routed through +// PepperVpnProviderResourceHostProxy running in lacros. +// See content/public/browser/pepper_vpn_provider_resource_host_proxy.h for +// details. +// Next version: 1 +// Next method id: 2 +[Stable, Uuid="abf3cd5e-a471-40a1-947b-3be9f8519da4"] +interface PepperVpnProxyObserver { + // Invoked when the active Vpn configuration disconnects. + // Corresponds to + // PepperVpnProviderResourceHostProxy::SendOnUnbind(). + OnUnbind@0(); + + // Invoked when the active Vpn configuration receives |data| packet. + // Corresponds to + // PepperVpnProviderResourceHostProxy::SendOnPacketReceived(...). + OnPacketReceived@1(array<uint8> data); +}; + +// Listens to events dispatched by VpnServiceForExtension. +// See +// * chrome.vpnProvider.onPlatformMessage +// * chrome.vpnProvider.onPacketReceived +// * chrome.vpnProvider.onConfigRemoved +// * chrome.vpnProvider.onUIEvent +// Next version: 1 +// Next method id: 1 +[Stable, Uuid="76ed414e-1710-4b5c-895d-181714376511"] +interface EventObserverForExtension { + // Dispatches UI_EVENT_SHOWADDDIALOG. + OnAddDialog@0(); + + // Dispatches UI_EVENT_SHOWCONFIGUREDIALOG. + OnConfigureDialog@1(string configuration_name); + + // Dispatches OnConfigRemoved event. + OnConfigRemoved@2(string configuration_name); + + // Dispatches OnPlatformMessage event. + OnPlatformMessage@3(string configuration_name, + int32 platform_message, string? error); + + // Dispatches OnPacketReceived event. + OnPacketReceived@4(array<uint8> data); +}; + +// VpnServiceForExtension manages VPN configurations for a specific extension. +// Next version: 1 +// Next method id: 8 +[Stable, Uuid="6743d9c7-e6c1-4f12-8f6c-571264044dea"] +interface VpnServiceForExtension { + // Creates a new VPN configuration with |configuration_name| as the name and + // attaches it to the extension. + // See chrome.vpnProvider.createConfiguration(...) + CreateConfiguration@0(string configuration_name) + => (VpnErrorResponse? error); + + // Destroys the VPN configuration with |configuration_name| after verifying + // that it belongs to the extension. + // See chrome.vpnProvider.destroyConfiguration(...) + DestroyConfiguration@1(string configuration_name) + => (VpnErrorResponse? error); + + // Set |parameters| for the active VPN configuration after verifying that it + // belongs to the extension. + // See chrome.vpnProvider.setParameters(...) + // We use mojo_base.mojom.DictionaryValue as the type because: + // * The shill counterpart is stable and expects base::Value with type=dict. + // * Both the supplier and consumer of this information uses a type + // interchangeable with mojo_base.mojom.DictionaryValue. While we could add + // a translation layer to a strongly typed mojom struct, this adds an + // overhead and the potential for errors with no benefit. + SetParameters@2(mojo_base.mojom.DictionaryValue parameters) + => (VpnErrorResponse? error); + + // Sends an IP packet contained in |data| to the active VPN configuration + // after verifying that it belongs to the extension. + // See chrome.vpnProvider.sendPacket(...) + SendPacket@3(array<uint8> data) + => (VpnErrorResponse? error); + + // Notifies new connection state to the active VPN configuration after + // verifying that it belongs to the extension. + // See chrome.vpnProvider.notifyConnectionStateChanged(...) + NotifyConnectionStateChanged@4(bool connection_success) + => (VpnErrorResponse? error); + + // Binds |pepper_vpn_proxy_observer| to the active configuration if it belongs + // to the extension and has name equal to + // |configuration_name|. On success all packets will be routed through + // Pepper API. + BindPepperVpnProxyObserver@5(string configuration_name, + pending_remote<PepperVpnProxyObserver> pepper_vpn_proxy_observer) + => (VpnErrorResponse? error); + + // Informs all connected clients that an ADD_DIALOG event should be dispatched + // to the extension. + DispatchAddDialogEvent@6(); + + // Informs all connected clients that a CONFIGURE_DIALOG event should be + // dispatched to the extension. + DispatchConfigureDialogEvent@7(string configuration_name); +}; + +// VpnService manages VPN connections on the ash side. +// Next version: 1 +// Next method id: 2 +[Stable, Uuid="52659296-1b2a-4b8d-a219-0ca57710fe03"] +interface VpnService { + // Registers a service for the given extension and allows ash to send events + // via |observer|. + RegisterVpnServiceForExtension@0(string extension_id, + pending_receiver<VpnServiceForExtension> receiver, + pending_remote<EventObserverForExtension> observer); + + // Updates current Vpn connection state to FAILURE if the active configuration + // belongs to extension with id |extension_id|. If |destroy_configurations| is + // true, also destroys all configurations owned by this extension. + MaybeFailActiveConnectionAndDestroyConfigurations@1(string extension_id, + bool destroy_configurations); +};
\ No newline at end of file diff --git a/chromium/chromeos/crosapi/mojom/wallpaper.mojom b/chromium/chromeos/crosapi/mojom/wallpaper.mojom new file mode 100644 index 00000000000..f6c066be707 --- /dev/null +++ b/chromium/chromeos/crosapi/mojom/wallpaper.mojom @@ -0,0 +1,35 @@ +// Copyright 2022 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. + +module crosapi.mojom; + +import "mojo/public/mojom/base/values.mojom"; + +[Extensible, Stable] +enum WallpaperLayout { + kNone = 0, + kStretch = 1, + kCenter = 2, + kCenterCropped = 3, +}; + +[Stable, Uuid="a2940756-55ef-4fc7-af10-f74a5bba6716"] +struct WallpaperSettings { + array<uint8> data@0; // The jpeg or png encoded wallpaper image. + WallpaperLayout layout@1; // Layout of the wallpaper on the desktop. + string filename@2; // The file name of the saved wallpaper. +}; + +// Interface for wallpaper. Implemented by ash-chrome. +// |extension_id| and |extension_name| are from the extension that is setting +// the wallpaper (ie, using the wallpaper API). This information is used +// internally to notify the Wallpaper Manager about the change. +// Next version: 1 +// Next method id: 1 +[Stable, Uuid="e2529a0d-9b3d-4ca3-9cca-23bc94a709e9"] +interface Wallpaper { + // Sets the wallpaper. + SetWallpaper@0(WallpaperSettings wallpaper, string extension_id, + string extension_name) => (array<uint8> thumbnail_data); +}; diff --git a/chromium/chromeos/crosapi/mojom/web_app_service.mojom b/chromium/chromeos/crosapi/mojom/web_app_service.mojom index cfd13c74e5f..535fe0f94f5 100644 --- a/chromium/chromeos/crosapi/mojom/web_app_service.mojom +++ b/chromium/chromeos/crosapi/mojom/web_app_service.mojom @@ -6,6 +6,16 @@ module crosapi.mojom; import "chromeos/crosapi/mojom/web_app_types.mojom"; +// Describes an Android package associated with a web app. +[Stable] +struct WebAppAndroidPackage { + // Android package name. + string package_name@0; + + // SHA256 fingerprint of the certificate of this Android app. + string sha256_fingerprint@1; +}; + // Implemented in lacros-chrome. Allows ash-chrome to modify web app state in // lacros-chrome. // Next version: 1 @@ -32,7 +42,7 @@ interface WebAppProviderBridge { // 2) to register its own |crosapi::mojom::WebAppProviderBridge| to let // ash-chrome to modify or query WebAppProvider in lacros-chrome. // -// Next version: 1 +// Next version: 2 // Next method id: 2 [Stable, Uuid="dfa7b3f8-236f-4706-861b-98068aa5fc8f"] interface WebAppService { @@ -40,4 +50,11 @@ interface WebAppService { // WebAppProvider in lacros-chrome. RegisterWebAppProviderBridge@0( pending_remote<WebAppProviderBridge> web_app_provider_bridge); + + // Gets the information about an Android package matching this web app, if + // this app was installed from the Play Store. Returns null if the app was not + // installed from the Play Store. + [MinVersion=1] + GetAssociatedAndroidPackage@1(string web_app_id) + => (WebAppAndroidPackage? package); }; diff --git a/chromium/chromeos/crosapi/mojom/web_app_types.mojom b/chromium/chromeos/crosapi/mojom/web_app_types.mojom index 30e2fd30b93..6f71513ea8b 100644 --- a/chromium/chromeos/crosapi/mojom/web_app_types.mojom +++ b/chromium/chromeos/crosapi/mojom/web_app_types.mojom @@ -36,6 +36,7 @@ enum WebAppInstallResultCode { kInstallTaskDestroyed, kUpdateTaskFailed, [MinVersion=1] kAppNotInRegistrarAfterCommit, + [MinVersion=2] kHaltedBySyncUninstall, }; // See |webapps::UninstallResultCode|. diff --git a/chromium/chromeos/dbus/BUILD.gn b/chromium/chromeos/dbus/BUILD.gn index 2dc1b11acad..74fb14b81ed 100644 --- a/chromium/chromeos/dbus/BUILD.gn +++ b/chromium/chromeos/dbus/BUILD.gn @@ -2,7 +2,6 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//chromeos/components/chromebox_for_meetings/buildflags/buildflags.gni") import("//testing/test.gni") import("//third_party/protobuf/proto_library.gni") @@ -13,14 +12,11 @@ component("dbus") { defines = [ "IS_CHROMEOS_DBUS_IMPL" ] public_deps = [ "//chromeos/dbus/arc", - "//chromeos/dbus/cicerone", "//chromeos/dbus/common", - "//chromeos/dbus/concierge", "//chromeos/dbus/constants", "//chromeos/dbus/debug_daemon", "//chromeos/dbus/init", "//chromeos/dbus/lorgnette_manager", - "//chromeos/dbus/seneschal", "//chromeos/dbus/shill", "//dbus", ] @@ -67,11 +63,6 @@ component("dbus") { "dbus_clients_browser.h", "dbus_thread_manager.cc", "dbus_thread_manager.h", - "usb/fake_usbguard_client.cc", - "usb/fake_usbguard_client.h", - "usb/usbguard_client.cc", - "usb/usbguard_client.h", - "usb/usbguard_observer.h", ] } @@ -109,16 +100,11 @@ source_set("unit_tests") { "//chromeos/dbus/fwupd:test_support", "//chromeos/dbus/gnubby:unit_tests", "//chromeos/dbus/hermes:test_support", - "//chromeos/dbus/hiberman", - "//chromeos/dbus/ip_peripheral:test_support", "//chromeos/dbus/lorgnette_manager:test_support", "//chromeos/dbus/oobe_config:unit_tests", "//chromeos/dbus/power:power_manager_proto", "//chromeos/dbus/power:test_support", - "//chromeos/dbus/rmad:rmad_proto", - "//chromeos/dbus/rmad:test_support", "//chromeos/dbus/shill:test_support", - "//chromeos/dbus/system_clock:unit_tests", "//chromeos/dbus/tpm_manager", "//chromeos/dbus/tpm_manager:tpm_manager_proto", "//chromeos/dbus/u2f", @@ -133,14 +119,10 @@ source_set("unit_tests") { "//testing/gtest", "//third_party/icu", ] - if (is_cfm) { - deps += [ "//chromeos/dbus/chromebox_for_meetings:unit_tests" ] - } sources = [ "audio/cras_audio_client_unittest.cc", "blocking_method_caller_unittest.cc", "dbus_thread_manager_unittest.cc", - "hiberman/hiberman_client_unittest.cc", "native_timer_unittest.cc", "pipe_reader_unittest.cc", "tpm_manager/tpm_manager_client_unittest.cc", @@ -152,22 +134,6 @@ source_set("unit_tests") { ] } -proto_library("cicerone_proto") { - sources = [ - "//third_party/cros_system_api/dbus/vm_cicerone/cicerone_service.proto", - ] - - proto_out_dir = "chromeos/dbus/cicerone" -} - -proto_library("concierge_proto") { - sources = [ - "//third_party/cros_system_api/dbus/vm_concierge/concierge_service.proto", - ] - - proto_out_dir = "chromeos/dbus/concierge" -} - proto_library("metrics_event_proto") { sources = [ "//third_party/cros_system_api/dbus/metrics_event/metrics_event.proto" ] @@ -181,13 +147,6 @@ proto_library("plugin_vm_service_proto") { proto_out_dir = "chromeos/dbus/plugin_vm_service" } -proto_library("seneschal_proto") { - sources = - [ "//third_party/cros_system_api/dbus/seneschal/seneschal_service.proto" ] - - proto_out_dir = "chromeos/dbus/seneschal" -} - proto_library("vm_applications_apps_proto") { sources = [ "//third_party/cros_system_api/dbus/vm_applications/apps.proto" ] diff --git a/chromium/chromeos/dbus/cicerone/BUILD.gn b/chromium/chromeos/dbus/cicerone/BUILD.gn deleted file mode 100644 index 2c4821ad14e..00000000000 --- a/chromium/chromeos/dbus/cicerone/BUILD.gn +++ /dev/null @@ -1,22 +0,0 @@ -# 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. - -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") - -component("cicerone") { - defines = [ "IS_CHROMEOS_DBUS_IMPL" ] - deps = [ - "//base", - "//chromeos/dbus:cicerone_proto", - "//chromeos/dbus/common", - "//dbus", - ] - - sources = [ - "cicerone_client.cc", - "cicerone_client.h", - "fake_cicerone_client.cc", - "fake_cicerone_client.h", - ] -} diff --git a/chromium/chromeos/dbus/concierge/BUILD.gn b/chromium/chromeos/dbus/concierge/BUILD.gn deleted file mode 100644 index 9a454a6dd10..00000000000 --- a/chromium/chromeos/dbus/concierge/BUILD.gn +++ /dev/null @@ -1,24 +0,0 @@ -# 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. - -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") - -component("concierge") { - defines = [ "IS_CHROMEOS_DBUS_IMPL" ] - deps = [ - "//base", - "//chromeos/dbus:cicerone_proto", - "//chromeos/dbus:concierge_proto", - "//chromeos/dbus/cicerone", - "//chromeos/dbus/common", - "//dbus", - ] - - sources = [ - "concierge_client.cc", - "concierge_client.h", - "fake_concierge_client.cc", - "fake_concierge_client.h", - ] -} diff --git a/chromium/chromeos/dbus/hermes/BUILD.gn b/chromium/chromeos/dbus/hermes/BUILD.gn index 6d61c9c38d9..603e7da58cf 100644 --- a/chromium/chromeos/dbus/hermes/BUILD.gn +++ b/chromium/chromeos/dbus/hermes/BUILD.gn @@ -5,11 +5,14 @@ assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") component("hermes") { - public_deps = [ ":hermes_clients" ] - deps = [ ":hermes_fakes" ] + public_deps = [ + ":hermes_clients", + ":hermes_fakes", + ] } source_set("hermes_clients") { + visibility = [ ":*" ] defines = [ "IS_HERMES_CLIENT_IMPL" ] deps = [ "//base", @@ -35,6 +38,7 @@ source_set("hermes_clients") { } source_set("hermes_fakes") { + visibility = [ ":*" ] deps = [ ":hermes_clients", "//base", diff --git a/chromium/chromeos/dbus/hps/BUILD.gn b/chromium/chromeos/dbus/human_presence/BUILD.gn index 62943541690..80d26132897 100644 --- a/chromium/chromeos/dbus/hps/BUILD.gn +++ b/chromium/chromeos/dbus/human_presence/BUILD.gn @@ -6,7 +6,7 @@ import("//third_party/protobuf/proto_library.gni") assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") -component("hps") { +component("human_presence") { defines = [ "IS_HPS_IMPL" ] public_deps = [ ":hps_proto" ] deps = [ @@ -15,10 +15,10 @@ component("hps") { ] sources = [ - "fake_hps_dbus_client.cc", - "fake_hps_dbus_client.h", - "hps_dbus_client.cc", - "hps_dbus_client.h", + "fake_human_presence_dbus_client.cc", + "fake_human_presence_dbus_client.h", + "human_presence_dbus_client.cc", + "human_presence_dbus_client.h", ] } diff --git a/chromium/chromeos/dbus/seneschal/BUILD.gn b/chromium/chromeos/dbus/seneschal/BUILD.gn deleted file mode 100644 index 89d6c33b628..00000000000 --- a/chromium/chromeos/dbus/seneschal/BUILD.gn +++ /dev/null @@ -1,23 +0,0 @@ -# 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. - -assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") - -component("seneschal") { - defines = [ "IS_CHROMEOS_DBUS_IMPL" ] - deps = [ - "//base", - "//chromeos/dbus:seneschal_proto", - "//chromeos/dbus/cicerone", - "//chromeos/dbus/common", - "//dbus", - ] - - sources = [ - "fake_seneschal_client.cc", - "fake_seneschal_client.h", - "seneschal_client.cc", - "seneschal_client.h", - ] -} diff --git a/chromium/chromeos/dbus/userdataauth/BUILD.gn b/chromium/chromeos/dbus/userdataauth/BUILD.gn index 3bf660ad1e7..7c6421c2f59 100644 --- a/chromium/chromeos/dbus/userdataauth/BUILD.gn +++ b/chromium/chromeos/dbus/userdataauth/BUILD.gn @@ -47,6 +47,21 @@ component("userdataauth") { ] } +static_library("test_support") { + testonly = true + + sources = [ + "mock_userdataauth_client.cc", + "mock_userdataauth_client.h", + ] + deps = [ + ":userdataauth", + ":userdataauth_proto", + "//base", + "//testing/gmock", + ] +} + proto_library("userdataauth_proto") { deps = [ "//chromeos/dbus/cryptohome:cryptohome_proto" ] diff --git a/chromium/chromeos/dbus/util/BUILD.gn b/chromium/chromeos/dbus/util/BUILD.gn index bfef015ea7b..4380f7367ce 100644 --- a/chromium/chromeos/dbus/util/BUILD.gn +++ b/chromium/chromeos/dbus/util/BUILD.gn @@ -9,7 +9,11 @@ assert(is_chromeos_ash, "Non-Chrome-OS builds must not depend on //chromeos") component("util") { output_name = "chromeos_dbus_util" defines = [ "IS_CHROMEOS_DBUS_UTIL_IMPL" ] - deps = [ "//base" ] + deps = [ + "//base", + "//chromeos/strings", + "//ui/base", + ] sources = [ "version_loader.cc", "version_loader.h", diff --git a/chromium/chromeos/features.gni b/chromium/chromeos/features.gni new file mode 100644 index 00000000000..02d342d734c --- /dev/null +++ b/chromium/chromeos/features.gni @@ -0,0 +1,10 @@ +# Copyright 2022 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. + +import("//chromeos/dbus/config/use_real_dbus_clients.gni") + +declare_args() { + # TODO(crbug/1321052): Replace use_real_dbus_clients with this. + use_real_chromeos_services = use_real_dbus_clients +} diff --git a/chromium/chromeos/lacros/BUILD.gn b/chromium/chromeos/lacros/BUILD.gn index 0c7688bdb42..bd02ab44bdb 100644 --- a/chromium/chromeos/lacros/BUILD.gn +++ b/chromium/chromeos/lacros/BUILD.gn @@ -18,9 +18,11 @@ assert(!use_gtk) component("lacros") { defines = [ "IS_CHROMEOS_LACROS_IMPL" ] deps = [ + ":lacros_paths", "//base", "//build:chromeos_buildflags", "//chromeos/crosapi/cpp", + "//chromeos/crosapi/cpp:crosapi_constants", "//chromeos/crosapi/mojom", "//chromeos/process_proxy", "//chromeos/startup", @@ -42,12 +44,24 @@ component("lacros") { ] } +static_library("lacros_paths") { + deps = [ + "//base", + "//chromeos/crosapi/cpp:crosapi_constants", + ] + sources = [ + "lacros_paths.cc", + "lacros_paths.h", + ] +} + source_set("test_support") { testonly = true deps = [ "//base", "//chromeos/crosapi/mojom", "//chromeos/lacros", + "//chromeos/startup", ] sources = [ "lacros_test_helper.cc", @@ -96,4 +110,8 @@ if (is_chromeos_device) { "lacros.ShelfLaunch.unstable", ] } + + lacros_tast_tests("lacros_variations_tast_tests") { + tast_tests = [ "lacros.VariationSmoke" ] + } } diff --git a/chromium/chromeos/network/BUILD.gn b/chromium/chromeos/network/BUILD.gn index ab85cdc2e26..bd4637204ce 100644 --- a/chromium/chromeos/network/BUILD.gn +++ b/chromium/chromeos/network/BUILD.gn @@ -2,14 +2,22 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") import("//third_party/protobuf/proto_library.gni") assert(is_chromeos, "Non-Chrome-OS builds must not depend on //chromeos") -component("network") { +config("network_config") { defines = [ "IS_CHROMEOS_NETWORK_IMPL" ] +} + +component("network") { + configs += [ ":network_config" ] + public_deps = [ + "//chromeos/ash/components/network/metrics", + "//chromeos/ash/components/network/onc", + "//chromeos/ash/components/network/proxy", + ] deps = [ "//ash/constants", "//base", @@ -23,13 +31,11 @@ component("network") { "//chromeos/login/login_state", "//chromeos/services/network_config/public/mojom", "//components/account_id", - "//components/certificate_matching", "//components/crx_file", "//components/device_event_log", "//components/onc", "//components/pref_registry", "//components/prefs", - "//components/proxy_config", "//components/url_formatter", "//components/user_manager", "//crypto", @@ -39,6 +45,14 @@ component("network") { "//skia", "//url", ] + + # Allow circular dependency from sub-directories of + # chromeos/ash/components/network. + allow_circular_includes_from = [ + "//chromeos/ash/components/network/metrics", + "//chromeos/ash/components/network/onc", + "//chromeos/ash/components/network/proxy", + ] sources = [ "auto_connect_handler.cc", "auto_connect_handler.h", @@ -86,16 +100,6 @@ component("network") { "managed_network_configuration_handler_impl.h", "managed_state.cc", "managed_state.h", - "metrics/connection_info_metrics_logger.cc", - "metrics/connection_info_metrics_logger.h", - "metrics/connection_results.cc", - "metrics/connection_results.h", - "metrics/esim_policy_login_metrics_logger.cc", - "metrics/esim_policy_login_metrics_logger.h", - "metrics/network_metrics_helper.cc", - "metrics/network_metrics_helper.h", - "metrics/vpn_network_metrics_helper.cc", - "metrics/vpn_network_metrics_helper.h", "network_activation_handler.h", "network_activation_handler_impl.cc", "network_activation_handler_impl.h", @@ -154,41 +158,15 @@ component("network") { "network_ui_data.h", "network_util.cc", "network_util.h", - "onc/network_onc_utils.cc", - "onc/network_onc_utils.h", - "onc/onc_certificate_importer.h", - "onc/onc_certificate_importer_impl.cc", - "onc/onc_certificate_importer_impl.h", - "onc/onc_certificate_pattern.cc", - "onc/onc_certificate_pattern.h", - "onc/onc_merger.cc", - "onc/onc_merger.h", - "onc/onc_normalizer.cc", - "onc/onc_normalizer.h", - "onc/onc_translation_tables.cc", - "onc/onc_translation_tables.h", - "onc/onc_translator.h", - "onc/onc_translator_onc_to_shill.cc", - "onc/onc_translator_shill_to_onc.cc", "policy_applicator.cc", "policy_applicator.h", "policy_certificate_provider.h", "policy_util.cc", "policy_util.h", - "portal_detector/network_portal_detector.cc", - "portal_detector/network_portal_detector.h", - "portal_detector/network_portal_detector_strategy.cc", - "portal_detector/network_portal_detector_strategy.h", - "portal_detector/network_portal_detector_stub.cc", - "portal_detector/network_portal_detector_stub.h", + "profile_policies.cc", + "profile_policies.h", "prohibited_technologies_handler.cc", "prohibited_technologies_handler.h", - "proxy/proxy_config_handler.cc", - "proxy/proxy_config_handler.h", - "proxy/proxy_config_service_impl.cc", - "proxy/proxy_config_service_impl.h", - "proxy/ui_proxy_config_service.cc", - "proxy/ui_proxy_config_service.h", "shill_property_handler.cc", "shill_property_handler.h", "shill_property_util.cc", @@ -207,7 +185,7 @@ source_set("test_support") { public_deps = [ ":network", "//chromeos/components/onc", - "//chromeos/dbus/hermes:hermes_fakes", + "//chromeos/dbus/hermes", "//dbus", ] deps = [ @@ -215,7 +193,6 @@ source_set("test_support") { "//chromeos:test_utils", "//chromeos/components/onc:test_support", "//chromeos/dbus:test_support", - "//chromeos/dbus/hermes:hermes_clients", "//chromeos/services/network_config/public/cpp", "//chromeos/services/network_config/public/mojom", "//components/onc", @@ -246,8 +223,6 @@ source_set("test_support") { "network_state_test_helper.h", "network_test_helper_base.cc", "network_test_helper_base.h", - "portal_detector/mock_network_portal_detector.cc", - "portal_detector/mock_network_portal_detector.h", "system_token_cert_db_storage_test_util.cc", "system_token_cert_db_storage_test_util.h", "test_cellular_esim_profile_handler.cc", @@ -265,12 +240,14 @@ source_set("unit_tests") { "//base:i18n", "//base/test:test_support", "//chromeos:test_utils", + "//chromeos/ash/components/network/metrics:unit_tests", + "//chromeos/ash/components/network/onc:unit_tests", + "//chromeos/ash/components/network/proxy:unit_tests", "//chromeos/components/feature_usage", "//chromeos/components/onc", "//chromeos/components/onc:test_support", "//chromeos/dbus:test_support", - "//chromeos/dbus/hermes:hermes_clients", - "//chromeos/dbus/hermes:hermes_fakes", + "//chromeos/dbus/hermes", "//chromeos/dbus/permission_broker", "//chromeos/login/login_state", "//components/onc", @@ -301,16 +278,13 @@ source_set("unit_tests") { "cellular_utils_unittest.cc", "certificate_helper_unittest.cc", "client_cert_resolver_unittest.cc", + "client_cert_util_unittest.cc", "device_state_unittest.cc", "fast_transition_observer_unittest.cc", "firewall_hole_unittest.cc", "geolocation_handler_unittest.cc", "managed_cellular_pref_handler_unittest.cc", "managed_network_configuration_handler_unittest.cc", - "metrics/connection_info_metrics_logger_unittest.cc", - "metrics/esim_policy_login_metrics_logger_unittest.cc", - "metrics/network_metrics_helper_unittest.cc", - "metrics/vpn_network_metrics_helper_unittest.cc", "network_cert_loader_unittest.cc", "network_cert_migrator_unittest.cc", "network_configuration_handler_unittest.cc", @@ -326,27 +300,11 @@ source_set("unit_tests") { "network_type_pattern_unittest.cc", "network_ui_data_unittest.cc", "network_util_unittest.cc", - "onc/network_onc_utils_unittest.cc", - "onc/onc_certificate_importer_impl_unittest.cc", - "onc/onc_certificate_pattern_unittest.cc", - "onc/onc_merger_unittest.cc", - "onc/onc_normalizer_unittest.cc", - "onc/onc_translator_unittest.cc", + "profile_policies_unittest.cc", "prohibited_technologies_handler_unittest.cc", - "proxy/proxy_config_service_impl_unittest.cc", - "proxy/ui_proxy_config_service_unittest.cc", "shill_property_handler_unittest.cc", "shill_property_util_unittest.cc", "stub_cellular_networks_provider_unittest.cc", "system_token_cert_db_storage_unittest.cc", ] } - -fuzzer_test("onc_normalizer_fuzzer") { - sources = [ "onc/onc_normalizer_fuzzer.cc" ] - deps = [ - ":network", - "//base", - "//chromeos/components/onc:onc", - ] -} diff --git a/chromium/chromeos/resources/BUILD.gn b/chromium/chromeos/resources/BUILD.gn index 7c2a4d40c15..f7f5687878f 100644 --- a/chromium/chromeos/resources/BUILD.gn +++ b/chromium/chromeos/resources/BUILD.gn @@ -2,7 +2,6 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//chromeos/assistant/assistant.gni") import("//tools/grit/grit_rule.gni") assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") @@ -18,15 +17,12 @@ grit("resources") { ] output_dir = "$root_gen_dir/chromeos" - defines = [ "enable_cros_libassistant=$enable_cros_libassistant" ] - grit_flags = [ "-E", "mojom_root=" + rebase_path(root_gen_dir, root_build_dir), ] deps = [ - "//chromeos/components/hps:hps_internals_ts", "//chromeos/language/public/mojom:mojom_js", "//chromeos/services/bluetooth_config/public/mojom:mojom_js", diff --git a/chromium/chromeos/services/BUILD.gn b/chromium/chromeos/services/BUILD.gn index ca872f205bb..c177a0bd993 100644 --- a/chromium/chromeos/services/BUILD.gn +++ b/chromium/chromeos/services/BUILD.gn @@ -3,7 +3,7 @@ # found in the LICENSE file. import("//build/config/ui.gni") -import("//chromeos/assistant/assistant.gni") +import("//chromeos/ash/components/assistant/assistant.gni") import("//chromeos/components/chromebox_for_meetings/buildflags/buildflags.gni") import("//testing/test.gni") @@ -19,7 +19,7 @@ assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") source_set("unit_tests") { testonly = true deps = [ - "//chromeos/services/assistant:tests", + "//chromeos/ash/services/assistant:tests", "//chromeos/services/bluetooth_config:unit_tests", "//chromeos/services/cros_healthd/private/cpp:unit_tests", "//chromeos/services/cros_healthd/public/cpp:unit_tests", diff --git a/chromium/chromeos/services/assistant/public/cpp/BUILD.gn b/chromium/chromeos/services/assistant/public/cpp/BUILD.gn index cb5a4207c22..8480fb26d8c 100644 --- a/chromium/chromeos/services/assistant/public/cpp/BUILD.gn +++ b/chromium/chromeos/services/assistant/public/cpp/BUILD.gn @@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//chromeos/assistant/assistant.gni") +import("//chromeos/ash/components/assistant/assistant.gni") # C++ headers and sources that can be used outside assistant. component("cpp") { @@ -45,11 +45,7 @@ component("cpp") { ] deps = [ - "//chromeos/assistant:buildflags", + "//chromeos/ash/components/assistant:buildflags", "//components/prefs", ] - - if (enable_cros_libassistant) { - deps += [ "//chromeos/assistant/internal:buildflags" ] - } } diff --git a/chromium/chromeos/services/assistant/public/shared/BUILD.gn b/chromium/chromeos/services/assistant/public/shared/BUILD.gn index b4b767c47c4..a64f19b15b5 100644 --- a/chromium/chromeos/services/assistant/public/shared/BUILD.gn +++ b/chromium/chromeos/services/assistant/public/shared/BUILD.gn @@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//chromeos/assistant/assistant.gni") +import("//build/config/chrome_build.gni") # C++ headers and sources that can be shared by assistant internal and # external directories. diff --git a/chromium/chromeos/services/bluetooth_config/public/mojom/BUILD.gn b/chromium/chromeos/services/bluetooth_config/public/mojom/BUILD.gn index 82c0be8e812..a7fe24f5392 100644 --- a/chromium/chromeos/services/bluetooth_config/public/mojom/BUILD.gn +++ b/chromium/chromeos/services/bluetooth_config/public/mojom/BUILD.gn @@ -10,4 +10,6 @@ mojom("mojom") { "//mojo/public/mojom/base", "//url/mojom:url_mojom_gurl", ] + webui_module_path = + "chrome://resources/mojo/chromeos/services/bluetooth_config/public/mojom" } diff --git a/chromium/chromeos/services/cros_healthd/private/cpp/BUILD.gn b/chromium/chromeos/services/cros_healthd/private/cpp/BUILD.gn index 9bf28ee5847..3714d2e3178 100644 --- a/chromium/chromeos/services/cros_healthd/private/cpp/BUILD.gn +++ b/chromium/chromeos/services/cros_healthd/private/cpp/BUILD.gn @@ -2,34 +2,42 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/chromeos/args.gni") import("//build/config/chromeos/ui_mode.gni") assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") source_set("cpp") { sources = [ - "internal_service_factory.cc", - "internal_service_factory.h", - "internal_service_factory_impl.cc", - "internal_service_factory_impl.h", + "data_collector.cc", + "data_collector.h", ] deps = [ "//base", - "//chromeos/services/cros_healthd/private/mojom", - "//chromeos/services/network_health/public/mojom", + "//content/public/browser:browser", + "//ui/events/devices", + "//ui/events/ozone/evdev:event_device_info", ] + public_deps = [ "//chromeos/services/cros_healthd/private/mojom" ] + defines = [] + if (is_chromeos_device) { + defines += [ "USE_EVDEV_GESTURES" ] + } + if (use_libinput) { + defines += [ "USE_LIBINPUT" ] + } } source_set("unit_tests") { testonly = true - sources = [ "internal_service_factory_impl_unittest.cc" ] + sources = [ "data_collector_unittest.cc" ] deps = [ ":cpp", "//base/test:test_support", - "//chromeos/services/cros_healthd/private/mojom", - "//mojo/core/embedder", + "//content/test:test_support", "//mojo/public/cpp/bindings", - "//testing/gmock", "//testing/gtest", + "//ui/events/devices", + "//ui/events/devices:test_support", ] } diff --git a/chromium/chromeos/services/cros_healthd/private/mojom/BUILD.gn b/chromium/chromeos/services/cros_healthd/private/mojom/BUILD.gn index 675fca466ed..ce983ef270d 100644 --- a/chromium/chromeos/services/cros_healthd/private/mojom/BUILD.gn +++ b/chromium/chromeos/services/cros_healthd/private/mojom/BUILD.gn @@ -6,9 +6,5 @@ import("//mojo/public/tools/bindings/mojom.gni") mojom("mojom") { sources = [ "cros_healthd_internal.mojom" ] - public_deps = [ - "//chromeos/services/cros_healthd/public/mojom", - "//chromeos/services/network_health/public/mojom", - "//mojo/public/mojom/base", - ] + public_deps = [ "//mojo/public/mojom/base" ] } diff --git a/chromium/chromeos/services/cros_healthd/private/mojom/cros_healthd_internal.mojom b/chromium/chromeos/services/cros_healthd/private/mojom/cros_healthd_internal.mojom index 4b828f7710f..0959aabe831 100644 --- a/chromium/chromeos/services/cros_healthd/private/mojom/cros_healthd_internal.mojom +++ b/chromium/chromeos/services/cros_healthd/private/mojom/cros_healthd_internal.mojom @@ -11,40 +11,61 @@ module chromeos.cros_healthd.internal.mojom; -import "chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom"; -import "chromeos/services/network_health/public/mojom/network_diagnostics.mojom"; -import "chromeos/services/network_health/public/mojom/network_health.mojom"; - -// Interface for Chrome to bootstrap the connection between cros_healthd and -// Chrome. Chrome uses this interface to obtain cros_healthd services and -// to provide Chrome services. +// Collects data from chromium to Healthd. // // NextMinVersion: 1, NextIndex: 2 -interface ServiceBootstrap { - // Pass a receiver of service factory to cros_healthd to bind the services. - GetCrosHealthdServiceFactory@0(pending_receiver< - chromeos.cros_healthd.mojom.CrosHealthdServiceFactory> receiver); - // Pass a remote of internal service factory to cros_healthd for it to - // obtain the services in Chrome. This should be the only interface which - // the connection is passed from the provider side. All the services in - // Chrome should use internal service factory interface to provide services - // to cros_healthd. - // Should be called only once per connection. - SetCrosHealthdInternalServiceFactory@1(pending_remote< - CrosHealthdInternalServiceFactory> remote); +interface ChromiumDataCollector { + // Get touchscreen devices info. + GetTouchscreenDevices@0() => (array<TouchscreenDevice> devices); + // Get the touchpad library name. + GetTouchpadLibraryName@1() => (string library_name); }; -// Factory interface which allows remote ends (cros_healthd) to request -// implementations of several services in Chrome. +// Data of a touch screen device in chromium. // -// NextMinVersion: 1, NextIndex: 2 -interface CrosHealthdInternalServiceFactory { - // NetworkHealthService provides network health information from chrome - // network stack. - GetNetworkHealthService@0(pending_receiver< - chromeos.network_health.mojom.NetworkHealthService> receiver); - // NetworkDiagnosticsRoutines provides network diagnostics routines to test - // network. - GetNetworkDiagnosticsRoutines@1(pending_receiver< - chromeos.network_diagnostics.mojom.NetworkDiagnosticsRoutines> receiver); +// NextMinVersion: 1, NextIndex: 4 +struct TouchscreenDevice { + // The input device of this touchscreen. + InputDevice input_device@0; + // Number of touch points this device supports (0 if unknown). + int32 touch_points@1; + // True if the specified touchscreen device is stylus capable. + bool has_stylus@2; + // True if there is a garage/dock switch associated with the stylus. + bool has_stylus_garage_switch@3; +}; + +// Data of a input device in chromium. +// +// NextMinVersion: 1, NextIndex: 5 +struct InputDevice { + // Name of the device. + string name@0; + + // The connection type of the input device. + [Extensible] + enum ConnectionType { + // For mojo backward compatibility. + [Default] kUnmappedEnumField, + // Internally connected input device. + kInternal, + // Known externally connected usb input device. + kUSB, + // Known externally connected bluetooth input device. + kBluetooth, + // Device that may or may not be an external device. + kUnknown, + }; + + ConnectionType connection_type@1; + // The physical location(port) associated with the input device. This is + // (supposed to be) stable between reboots and hotplugs. However this may not + // always be set and will change when the device is connected via a different + // port. + string physical_location@2; + // If the device is enabled, and whether events should be dispatched to UI. + bool is_enabled@3; + // The path to the input device in the sysfs filesystem, this should be a path + // under /sys directory. + string sysfs_path@4; }; diff --git a/chromium/chromeos/services/cros_healthd/public/cpp/BUILD.gn b/chromium/chromeos/services/cros_healthd/public/cpp/BUILD.gn index 9c3445c617f..fac3481bb50 100644 --- a/chromium/chromeos/services/cros_healthd/public/cpp/BUILD.gn +++ b/chromium/chromeos/services/cros_healthd/public/cpp/BUILD.gn @@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/config/chromeos/args.gni") +import("//chromeos/dbus/config/use_real_dbus_clients.gni") assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos") @@ -20,10 +21,18 @@ source_set("cpp") { ] deps = [ "//base", - "//chromeos/dbus/cros_healthd", + "//chromeos/ash/components/dbus/cros_healthd", "//chromeos/services/cros_healthd/public/mojom", "//ui/events/ozone/evdev:event_device_info", ] + if (use_real_dbus_clients) { + defines += [ "USE_REAL_DBUS_CLIENTS" ] + } else { + sources += [ + "fake_cros_healthd.cc", + "fake_cros_healthd.h", + ] + } } source_set("unit_tests") { @@ -32,7 +41,6 @@ source_set("unit_tests") { deps = [ ":cpp", "//base/test:test_support", - "//chromeos/dbus/cros_healthd", "//chromeos/services/cros_healthd/public/mojom", "//mojo/core/embedder", "//mojo/public/cpp/bindings", diff --git a/chromium/chromeos/services/cros_healthd/public/mojom/BUILD.gn b/chromium/chromeos/services/cros_healthd/public/mojom/BUILD.gn index a56c1d51fe0..1a86ab839b9 100644 --- a/chromium/chromeos/services/cros_healthd/public/mojom/BUILD.gn +++ b/chromium/chromeos/services/cros_healthd/public/mojom/BUILD.gn @@ -16,6 +16,7 @@ mojom("mojom") { ] public_deps = [ + "//chromeos/services/cros_healthd/private/mojom", "//chromeos/services/network_health/public/mojom", "//mojo/public/mojom/base", ] diff --git a/chromium/chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom b/chromium/chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom index 33167b5c462..73bdcaaf2c1 100644 --- a/chromium/chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom +++ b/chromium/chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom @@ -10,6 +10,7 @@ module chromeos.cros_healthd.mojom; +import "chromeos/services/cros_healthd/private/mojom//cros_healthd_internal.mojom"; import "chromeos/services/cros_healthd/public/mojom/cros_healthd_diagnostics.mojom"; import "chromeos/services/cros_healthd/public/mojom/cros_healthd_events.mojom"; import "chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom"; @@ -22,7 +23,7 @@ import "chromeos/services/network_health/public/mojom/network_health.mojom"; // probe, diagnostics, or event services. Additionally, the browser can send // network-related implementations to the cros_healthd daemon. // -// NextMinVersion: 1, NextIndex: 6 +// NextMinVersion: 2, NextIndex: 7 interface CrosHealthdServiceFactory { // Returns a bound interface to the diagnostics service. GetDiagnosticsService@0(pending_receiver<CrosHealthdDiagnosticsService> service); @@ -43,6 +44,11 @@ interface CrosHealthdServiceFactory { // TODO(http://b/181133872): Move this service out of this interface // Returns a bound interface to the system service. GetSystemService@5(pending_receiver<CrosHealthdSystemService> service); + // Sends a NetworkDiagnosticsRoutines pending remote to the cros_healthd + // daemon. + [MinVersion=1] SendChromiumDataCollector@6( + pending_remote< + chromeos.cros_healthd.internal.mojom.ChromiumDataCollector> remote); }; // Diagnostics interface exposed by the cros_healthd daemon. diff --git a/chromium/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom b/chromium/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom index b838f1f057a..149bdba6877 100644 --- a/chromium/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom +++ b/chromium/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom @@ -26,8 +26,8 @@ enum CpuArchitectureEnum { // An enumeration of each category of information that cros_healthd can report. // -// NextMinVersion: 1, NextIndex: 19 -[Extensible] +// NextMinVersion: 1, NextIndex: 20 +[Stable, Extensible] enum ProbeCategoryEnum { [Default] kUnknown = 16, kBattery = 0, @@ -48,6 +48,7 @@ enum ProbeCategoryEnum { kGraphics = 15, kDisplay = 17, kNetworkInterface = 18, + kInput = 19, // TODO(b/190459636): Rename it to kSystem after migration. kSystem2 = 0x10000, @@ -57,7 +58,7 @@ enum ProbeCategoryEnum { // probing telemetry information. // // NextMinVersion: 1, NextIndex: 5 -[Extensible] +[Stable, Extensible] enum ErrorType { [Default] kUnknown = 4, // An error reading a system file. @@ -73,6 +74,7 @@ enum ErrorType { // Structure that contains error information for a telemetry probe. // // NextMinVersion: 1, NextIndex: 2 +[Stable] struct ProbeError { // The type of error that occurred. ErrorType type@0; @@ -84,7 +86,7 @@ struct ProbeError { // An enumeration of states a process can be in. // // NextMinVersion: 1, NextIndex: 8 -[Extensible] +[Stable, Extensible] enum ProcessState { [Default] kUnknown = 7, // The process is running. @@ -105,16 +107,23 @@ enum ProcessState { // Process probe result. Can either be populated with the ProcessInfo or an // error retrieving the information. +// +// NextMinVersion: 2, NextIndex: 3 +[Stable, Extensible] union ProcessResult { + // The required field for backwards compatibility. The unrecognized Mojo + // field will deserialize to this field. It should not be used. + [MinVersion=1, Default] bool unmapped_field@2; // Valid ProcessInfo. - ProcessInfo process_info; + ProcessInfo process_info@0; // The error that occurred attempting to retrieve the ProcessInfo. - ProbeError error; + ProbeError error@1; }; // Information related to a particular process. // // NextMinVersion: 1, NextIndex: 16 +[Stable] struct ProcessInfo { // Command which started the process. string command@0; @@ -548,7 +557,7 @@ union BluetoothResult { // Information related to one of a device's Bluetooth adapters. // -// NextMinVersion: 1, NextIndex: 4 +// NextMinVersion: 3, NextIndex: 11 struct BluetoothAdapterInfo { // The name of the adapter. string name@0; @@ -558,6 +567,76 @@ struct BluetoothAdapterInfo { bool powered@2; // The number of devices connected to this adapter. uint32 num_connected_devices@3; + // The info of connected devices to this adapter. + [MinVersion=1] array<BluetoothDeviceInfo>? connected_devices@4; + // The adapter is visible or not. + [MinVersion=1] bool discoverable@5; + // The device discovery procedure is active or not. + [MinVersion=1] bool discovering@6; + // The list of the available local services. + [MinVersion=1] array<string>? uuids@7; + // Local Device ID information. + [MinVersion=1] string? modalias@8; + // List of allowed system devices. + [MinVersion=2] array<string>? service_allow_list@9; + // A dictionary of supported capabilities. + [MinVersion=2] SupportedCapabilities? supported_capabilities@10; +}; + + +// Information related to one of a adapter's Bluetooth connected devices. +// +// NextMinVersion: 2, NextIndex: 9 +struct BluetoothDeviceInfo { + // The MAC address of the device. + string address@0; + // The name of the device. + string? name@1; + // The carriers supported by this remote device ("BR/EDR", "LE", or "DUAL"). + BluetoothDeviceType type@2; + // The external appearance of the device. + NullableUint16 appearance@3; + // Remote Device ID information. + string? modalias@4; + // Received Signal Strength Indicator. + NullableInt16 rssi@5; + // The Maximum Transmission Unit used in ATT communication. + NullableUint16 mtu@6; + // The list of the available remote services. + array<string>? uuids@7; + // The battery percentage of the device. + [MinVersion=1] NullableUint8? battery_percentage@8; +}; + +// An enumeration of type in Bluetooth device info. +// +// NextMinVersion: 1, NextIndex: 4 +[Extensible] +enum BluetoothDeviceType { + // An enum value not defined in this version of the enum definition. + [Default] kUnmappedEnumField = 0, + // Unfound type. + kUnfound = 1, + // BR/EDR. + kBrEdr = 2, + // LE. + kLe = 3, + // DUAL. + kDual = 4, +}; + +// Supported Capabilities related information. +// +// NextMinVersion: 1, NextIndex: 4 +struct SupportedCapabilities { + // Max advertising data length. + uint8 max_adv_len@0; + // Max advertising scan response length. + uint8 max_scn_rsp_len@1; + // Min advertising tx power (dBm). + int16 min_tx_power@2; + // Max advertising tx power (dBm). + int16 max_tx_power@3; }; // System probe result. Can either be populated with the SystemInfo or an error @@ -669,7 +748,7 @@ struct OsVersion { [Extensible] enum BootMode { [Default] kUnknown = 0, - // Boot with Chrome OS firmware. + // Boot with ChromeOS firmware. kCrosSecure = 1, // Boot with EFI kCrosEfi = 2, @@ -911,7 +990,7 @@ struct PciBusInfo { // The info related to usb. // -// NextMinVersion: 1, NextIndex: 6 +// NextMinVersion: 2, NextIndex: 7 struct UsbBusInfo { // These fields can be used to classify / identify the usb devices. See the // usb.ids database for the values. (https://github.com/gentoo/hwids) @@ -925,6 +1004,54 @@ struct UsbBusInfo { // device. This allows a usb device to provide multiple features. // The interfaces are sorted by the |interface_number| field. array<UsbBusInterfaceInfo> interfaces@5; + // The firmware version obtained from fwupd. + [MinVersion=1] FwupdFirmwareVersionInfo? fwupd_firmware_version_info@6; +}; + +// The info related to firmware version obtained from fwupd. +// +// NextMinVersion: 1, NextIndex: 2 +struct FwupdFirmwareVersionInfo { + // The string form of the firmware version. + string version@0; + // The format for parsing the version string. + FwupdVersionFormat version_format@1; +}; + +// An enumeration of the formats of firmware version in fwpud. See the fwupd +// repo for the values. (https://github.com/fwupd/fwupd) +// +// NextMinVersion: 1, NextIndex: 14 +[Extensible] +enum FwupdVersionFormat { + // An enum value not defined in this version of the enum definition. + [Default] kUnmappedEnumField = 0, + // Unknown version format. + kUnknown = 1, + // An unidentified format text string. + kPlain = 2, + // A single integer version number. + kNumber = 3, + // Two AABB.CCDD version numbers. + kPair = 4, + // Microsoft-style AA.BB.CCDD version numbers. + kTriplet = 5, + // UEFI-style AA.BB.CC.DD version numbers. + kQuad = 6, + // Binary coded decimal notation. + kBcd = 7, + // Intel ME-style bitshifted notation. + kIntelMe = 8, + // Intel ME-style A.B.CC.DDDD notation. + kIntelMe2 = 9, + // Legacy Microsoft Surface 10b.12b.10b. + kSurfaceLegacy = 10, + // Microsoft Surface 8b.16b.8b. + kSurface = 11, + // Dell BIOS BB.CC.DD style. + kDellBios = 12, + // Hexadecimal 0xAABCCDD style. + kHex = 13, }; // The info related to usb interfaces. @@ -1121,7 +1248,7 @@ struct DisplayInfo { [MinVersion=1] array<ExternalDisplayInfo>? dp_infos@1; }; -// NextMinVersion: 2, NextIndex: 7 +// NextMinVersion: 3, NextIndex: 15 struct EmbeddedDisplayInfo { // Privacy screen is supported or not. bool privacy_screen_supported@0; @@ -1137,9 +1264,25 @@ struct EmbeddedDisplayInfo { [MinVersion=1] NullableUint32? resolution_vertical@5; // Refresh rate. [MinVersion=1] NullableDouble? refresh_rate@6; -}; - -// NextMinVersion: 1, NextIndex: 5 + // Three letter manufacturer ID. + [MinVersion=2] string? manufacturer@7; + // Manufacturer product code. + [MinVersion=2] NullableUint16? model_id@8; + // 32 bits serial number. + [MinVersion=2] NullableUint32? serial_number@9; + // Week of manufacture. + [MinVersion=2] NullableUint8? manufacture_week@10; + // Year of manufacture. + [MinVersion=2] NullableUint16? manufacture_year@11; + // EDID version. + [MinVersion=2] string? edid_version@12; + // Digital or analog input. + [MinVersion=2] DisplayInputType input_type@13; + // Name of display product. + [MinVersion=2] string? display_name@14; +}; + +// NextMinVersion: 2, NextIndex: 13 struct ExternalDisplayInfo { // Display width in millimeters. NullableUint32? display_width@0; @@ -1151,6 +1294,35 @@ struct ExternalDisplayInfo { NullableUint32? resolution_vertical@3; // Refresh rate. NullableDouble? refresh_rate@4; + // Three letter manufacturer ID. + [MinVersion=1] string? manufacturer@5; + // Manufacturer product code. + [MinVersion=1] NullableUint16? model_id@6; + // 32 bits serial number. + [MinVersion=1] NullableUint32? serial_number@7; + // Week of manufacture. + [MinVersion=1] NullableUint8? manufacture_week@8; + // Year of manufacture. + [MinVersion=1] NullableUint16? manufacture_year@9; + // EDID version. + [MinVersion=1] string? edid_version@10; + // Digital or analog input. + [MinVersion=1] DisplayInputType input_type@11; + // Name of display product. + [MinVersion=1] string? display_name@12; +}; + +// An enumeration of display input type. +// +// NextMinVersion: 1, NextIndex: 3 +[Extensible] +enum DisplayInputType { + // An enum value not defined in this version of the enum definition. + [Default] kUnmappedEnumField = 0, + // Digital input. + kDigital = 1, + // Analog input. + kAnalog = 2, }; // Information related to a Thunderbolt device. @@ -1194,6 +1366,70 @@ struct ThunderboltBusInfo { array<ThunderboltBusInterfaceInfo> thunderbolt_interfaces@1; }; +// Input result. +union InputResult { + // Valid InputInfo. + InputInfo input_info; + // The error that occurred attempting to retrieve the InputInfo. + ProbeError error; +}; + +// Input software and hardware information. +// +// NextMinVersion: 1, NextIndex: 2 +struct InputInfo { + // The touchpad library name used by the input stack. + string touchpad_library_name@0; + // The touchscreen devices. + array<TouchscreenDevice> touchscreen_devices@1; +}; + +// Data of a touch screen device. +// +// NextMinVersion: 1, NextIndex: 4 +struct TouchscreenDevice { + // The input device of this touchscreen. + InputDevice input_device@0; + // Number of touch points this device supports (0 if unknown). + int32 touch_points@1; + // True if the specified touchscreen device is stylus capable. + bool has_stylus@2; + // True if there is a garage/dock switch associated with the stylus. + bool has_stylus_garage_switch@3; +}; + +// Data of a input device. +// +// NextMinVersion: 1, NextIndex: 4 +struct InputDevice { + // Name of the device. + string name@0; + + // The connection type of the input device. + [Extensible] + enum ConnectionType { + // For mojo backward compatibility. + [Default] kUnmappedEnumField, + // Internally connected input device. + kInternal, + // Known externally connected usb input device. + kUSB, + // Known externally connected bluetooth input device. + kBluetooth, + // Device that may or may not be an external device. + kUnknown, + }; + + ConnectionType connection_type@1; + // The physical location(port) associated with the input device. This is + // (supposed to be) stable between reboots and hotplugs. However this may not + // always be set and will change when the device is connected via a different + // port. + string physical_location@2; + // If the device is enabled, and whether events should be dispatched to UI. + bool is_enabled@3; +}; + // A collection of all the device's telemetry information that cros_healthd is // capable of reporting. Note that every field in TelemetryInfo is nullable, and // the response for a particular ProbeTelemetryInfo request will only contain @@ -1202,7 +1438,7 @@ struct ThunderboltBusInfo { // attempt to fetch that information, and size zero if cros_healthd did attempt // to fetch that information, but was unable to. // -// NextMinVersion: 3, NextIndex: 19 +// NextMinVersion: 4, NextIndex: 20 struct TelemetryInfo { // Information about the device's main battery. Only present when kBattery was // included in the categories input to ProbeTelemetryInfo. @@ -1266,4 +1502,7 @@ struct TelemetryInfo { // kNetworkInterface was included in the categories input to // ProbeTelemetryInfo. [MinVersion=2] NetworkInterfaceResult? network_interface_result@18; + // Information about the input software and hardware. Only present when + // kInput was included in the categories input to ProbeTelemetryInfo. + [MinVersion=3] InputResult? input_result@19; }; diff --git a/chromium/chromeos/services/cros_healthd/public/mojom/nullable_primitives.mojom b/chromium/chromeos/services/cros_healthd/public/mojom/nullable_primitives.mojom index 5976230da55..9e7d46de59b 100644 --- a/chromium/chromeos/services/cros_healthd/public/mojom/nullable_primitives.mojom +++ b/chromium/chromeos/services/cros_healthd/public/mojom/nullable_primitives.mojom @@ -13,6 +13,24 @@ module chromeos.cros_healthd.mojom; +// Optional uint8 field. +struct NullableUint8 { + // The value of the uint8. + uint8 value; +}; + +// Optional int16 field. +struct NullableInt16 { + // The value of the int16. + int16 value; +}; + +// Optional uint16 field. +struct NullableUint16 { + // The value of the uint16. + uint16 value; +}; + // Optional uint32 field. struct NullableUint32 { // The value of the uint32. diff --git a/chromium/chromeos/services/libassistant/BUILD.gn b/chromium/chromeos/services/libassistant/BUILD.gn index deee603532e..562468af21d 100644 --- a/chromium/chromeos/services/libassistant/BUILD.gn +++ b/chromium/chromeos/services/libassistant/BUILD.gn @@ -3,7 +3,7 @@ # found in the LICENSE file. import("//build/buildflag_header.gni") -import("//chromeos/assistant/assistant.gni") +import("//chromeos/ash/components/assistant/assistant.gni") assert(enable_cros_libassistant) @@ -40,7 +40,7 @@ component("libassistant") { defines = [ "IS_LIBASSISTANT_SERVICE_IMPL" ] # The default output name of this service, `libassistant_service.so`, already - # exists (as build target of //chromeos/services/assistant), so we have to + # exists (as build target of //chromeos/ash/services/assistant), so we have to # use `lib_libassistant_service.so`. output_name = "lib_libassistant_service" } @@ -125,9 +125,9 @@ source_set("internal") { "./grpc/external_services:grpc_services_initializer", "./grpc/external_services:grpc_services_observer", "//build/util:chromium_git_revision", - "//chromeos/assistant:buildflags", + "//chromeos/ash/components/assistant:buildflags", + "//chromeos/ash/resources", "//chromeos/assistant/internal", - "//chromeos/assistant/internal:buildflags", "//chromeos/assistant/internal:libassistant", "//chromeos/assistant/internal:libassistant_shared_headers", "//chromeos/assistant/internal:support", @@ -135,7 +135,6 @@ source_set("internal") { "//chromeos/dbus", "//chromeos/dbus/power", "//chromeos/dbus/util:util", - "//chromeos/resources:resources_grit", "//chromeos/services/assistant/public/cpp", "//chromeos/services/assistant/public/proto", "//chromeos/services/libassistant/public/mojom", @@ -256,11 +255,11 @@ source_set("unit_tests") { ":test_support", "//base", "//base/test:test_support", + "//chromeos/ash/components/assistant/test_support:test_support", "//chromeos/assistant/internal", "//chromeos/assistant/internal:libassistant_shared_headers", "//chromeos/assistant/internal:support", "//chromeos/assistant/internal:test_support", - "//chromeos/assistant/test_support:test_support", "//chromeos/dbus/power", "//chromeos/services/assistant/public/cpp", "//chromeos/services/libassistant/grpc:assistant_client", diff --git a/chromium/chromeos/services/libassistant/grpc/BUILD.gn b/chromium/chromeos/services/libassistant/grpc/BUILD.gn index 5692fe2aca0..15aed86fa21 100644 --- a/chromium/chromeos/services/libassistant/grpc/BUILD.gn +++ b/chromium/chromeos/services/libassistant/grpc/BUILD.gn @@ -34,7 +34,6 @@ source_set("assistant_client") { source_set("grpc_client") { sources = [ - "grpc_client_cq_tag.h", "grpc_client_thread.cc", "grpc_client_thread.h", "grpc_state.h", @@ -47,6 +46,7 @@ source_set("grpc_client") { deps = [ "//base", + "//chromeos/assistant/internal", "//third_party/protobuf:protobuf_lite", ] @@ -112,16 +112,44 @@ source_set("libassistant_client") { all_dependent_configs = [ "//third_party/grpc:grpc_config" ] } +source_set("http_connection_client") { + sources = [ + "grpc_http_connection_client.cc", + "grpc_http_connection_client.h", + "grpc_http_connection_delegate.cc", + "grpc_http_connection_delegate.h", + ] + + public_deps = [ + "//chromeos/assistant/internal/proto:assistant", + "//chromeos/assistant/internal/proto:assistant_grpc", + ] + + deps = [ + ":grpc_client", + "//base", + "//chromeos/assistant/internal", + "//chromeos/assistant/internal:libassistant_shared_headers", + ] +} + source_set("unit_tests") { testonly = true - sources = [ "assistant_client_v1_unittests.cc" ] + sources = [ + "assistant_client_v1_unittests.cc", + "grpc_http_connection_client_unittests.cc", + ] deps = [ ":assistant_client", ":grpc_service", + ":http_connection_client", "//base/test:test_support", + "//chromeos/assistant/internal", + "//chromeos/assistant/internal:libassistant_shared_headers", "//chromeos/assistant/internal:test_support", "//chromeos/assistant/internal/proto:assistant", + "//chromeos/assistant/internal/proto:assistant_grpc", "//testing/gmock", "//testing/gtest", ] diff --git a/chromium/chromeos/services/libassistant/grpc/external_services/BUILD.gn b/chromium/chromeos/services/libassistant/grpc/external_services/BUILD.gn index c787d26955e..1402847823d 100644 --- a/chromium/chromeos/services/libassistant/grpc/external_services/BUILD.gn +++ b/chromium/chromeos/services/libassistant/grpc/external_services/BUILD.gn @@ -25,6 +25,7 @@ source_set("grpc_services_initializer") { "//chromeos/services/libassistant/grpc:grpc_client", "//chromeos/services/libassistant/grpc:grpc_service", "//chromeos/services/libassistant/grpc:grpc_util", + "//chromeos/services/libassistant/grpc:http_connection_client", "//chromeos/services/libassistant/grpc:libassistant_client", "//third_party/grpc:grpc++", ] diff --git a/chromium/chromeos/services/libassistant/public/mojom/BUILD.gn b/chromium/chromeos/services/libassistant/public/mojom/BUILD.gn index f44799967eb..b5005f4fd5e 100644 --- a/chromium/chromeos/services/libassistant/public/mojom/BUILD.gn +++ b/chromium/chromeos/services/libassistant/public/mojom/BUILD.gn @@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//chromeos/assistant/assistant.gni") +import("//chromeos/ash/components/assistant/assistant.gni") import("//mojo/public/tools/bindings/mojom.gni") mojom("mojom") { diff --git a/chromium/chromeos/services/libassistant/public/mojom/service_controller.mojom b/chromium/chromeos/services/libassistant/public/mojom/service_controller.mojom index 50cf2b39e7e..0128d0b58b0 100644 --- a/chromium/chromeos/services/libassistant/public/mojom/service_controller.mojom +++ b/chromium/chromeos/services/libassistant/public/mojom/service_controller.mojom @@ -65,4 +65,7 @@ struct BootupConfig { bool spoken_feedback_enabled; bool dark_mode_enabled; bool hotword_enabled; + + // Optional root path where the DLC library mounted. + string? dlc_path; }; diff --git a/chromium/chromeos/services/machine_learning/public/mojom/handwriting_recognizer.mojom b/chromium/chromeos/services/machine_learning/public/mojom/handwriting_recognizer.mojom index 3e0a3d1abd2..990581ed75d 100644 --- a/chromium/chromeos/services/machine_learning/public/mojom/handwriting_recognizer.mojom +++ b/chromium/chromeos/services/machine_learning/public/mojom/handwriting_recognizer.mojom @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Next MinVersion: 2 +// Next MinVersion: 3 // Datatypes and interfaces of handwriting recognition API. @@ -139,7 +139,13 @@ struct HandwritingRecognizerSpec { string language; // Path to the language pack to use (downloaded by Chrome via DLC). + // If unset, ml-service will try to find the model from rootfs. [MinVersion=1] string? language_pack_path; + + // Path to already-installed handwriting recognition library (downloaded by + // chrome via DLC). + // If unset, ml-service will try to find the library from rootfs. + [MinVersion=2] string? library_dlc_path; }; // The mojom interface for performing the recognition of handwritten text. diff --git a/chromium/chromeos/services/machine_learning/public/mojom/text_suggester.mojom b/chromium/chromeos/services/machine_learning/public/mojom/text_suggester.mojom index d8c7842935d..6b7702005f9 100644 --- a/chromium/chromeos/services/machine_learning/public/mojom/text_suggester.mojom +++ b/chromium/chromeos/services/machine_learning/public/mojom/text_suggester.mojom @@ -72,11 +72,12 @@ struct MultiWordSuggestionCandidate { // Represents all types of suggestion candidates generated by the service. // -// TODO(crbug/1201949): Note that the Extensible keyword is not supported for -// union types. We may need to revisit this type in the future. +// TODO(crbug.com/1261313): Note that this type must be marked [Extensible] in all +// deployed versions before new ordinals can be introduced, and [Extensible] +// requires establishing a [Default] field. // // Next ordinal: 1 -[Stable, Extensible] +[Stable] union TextSuggestionCandidate { MultiWordSuggestionCandidate multi_word@0; }; @@ -86,13 +87,13 @@ union TextSuggestionCandidate { [Stable] struct TextSuggesterResult { // Status of the response - [Stable, Extensible, Default=ERROR] + [Stable, Extensible] enum Status { // Text suggestions generated successfully OK = 0, // There was an error while generating candidates, no candidates will be // returned with this result. - ERROR = 1, + [Default] ERROR = 1, }; Status status@0; diff --git a/chromium/chromeos/services/network_config/public/mojom/cros_network_config.mojom b/chromium/chromeos/services/network_config/public/mojom/cros_network_config.mojom index f71f4d3d822..d3b1f2dfe64 100644 --- a/chromium/chromeos/services/network_config/public/mojom/cros_network_config.mojom +++ b/chromium/chromeos/services/network_config/public/mojom/cros_network_config.mojom @@ -191,6 +191,8 @@ struct CellularStateProperties { bool roaming = false; // The signal strength of the cellular connection. int32 signal_strength; + // True when a SIM is present and has locking enabled. + bool sim_lock_enabled = false; // True when a SIM is present and locked. bool sim_locked = false; }; @@ -738,9 +740,9 @@ struct ManagedProperties { // Properties for SetProperties and ConfigureNetwork. All of the top level // properties and many nested properties are optional so that sparse // configurations can be provided, e.g. just the |auto_connect| property can -// be changed. The ONC validation code (chromeos/network/onc/onc_validator.cc) -// ensures that configurations are valid before translating and passing them to -// Shill. +// be changed. The ONC validation code +// (chromeos/ash/components/network/onc/onc_validator.cc) ensures that +// configurations are valid before translating and passing them to Shill. // Wrapper to allow optional auto_connect configuration. struct AutoConnectConfig { @@ -934,6 +936,10 @@ struct CellularSimState { // Properties provided by GetGlobalPolicy. These properties affect network // configuration as a whole instead of individual network configurations. struct GlobalPolicy { + // If true, allow PIN locking of SIMs attached to the device. + // If false, PIN locking is prohibited. + bool allow_cellular_sim_lock = true; + // If true, only cellular networks present in policy may be connected to and // no new networks may be added or configured. bool allow_only_policy_cellular_networks = false; diff --git a/chromium/chromeos/services/network_health/public/mojom/BUILD.gn b/chromium/chromeos/services/network_health/public/mojom/BUILD.gn index 0b8abc04bdc..94cd08a781a 100644 --- a/chromium/chromeos/services/network_health/public/mojom/BUILD.gn +++ b/chromium/chromeos/services/network_health/public/mojom/BUILD.gn @@ -14,4 +14,7 @@ mojom("mojom") { "//chromeos/services/network_config/public/mojom:network_types", "//mojo/public/mojom/base", ] + + webui_module_path = + "chrome://resources/mojo/chromeos/services/network_health/public/mojom" } diff --git a/chromium/chromeos/services/network_health/public/mojom/network_health.mojom b/chromium/chromeos/services/network_health/public/mojom/network_health.mojom index ee00894897e..afca3b22b93 100644 --- a/chromium/chromeos/services/network_health/public/mojom/network_health.mojom +++ b/chromium/chromeos/services/network_health/public/mojom/network_health.mojom @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Next MinVersion: 2 +// Next MinVersion: 3 // API intended for retrieving a snapshot of the network health state. Returns // properties of any available network technologies and any connected or @@ -11,6 +11,7 @@ module chromeos.network_health.mojom; import "chromeos/services/network_config/public/mojom/network_types.mojom"; +import "mojo/public/mojom/base/time.mojom"; [Stable, Extensible] enum NetworkState { @@ -117,7 +118,7 @@ interface NetworkEventsObserver { // Interface for retrieving aggregated information about the current network // state and health from the browser process. -// Next Method ID: 3 +// Next Method ID: 4 [Stable] interface NetworkHealthService { // Adds an observer to be notified on network events. The caller can remove @@ -133,4 +134,10 @@ interface NetworkHealthService { // This is currently the same information provided by GetNetworkList. More // information will be added over time. GetHealthSnapshot@2() => (NetworkHealthState state); + + // Returns the list of network guids we want traffic counters for. This + // includes currently active networks as well as networks that were active + // within the last hour. + [MinVersion=2] + GetRecentlyActiveNetworks@3() => (array<string> guids); }; diff --git a/chromium/chromeos/startup/BUILD.gn b/chromium/chromeos/startup/BUILD.gn index 103570c92c2..abd7291ad52 100644 --- a/chromium/chromeos/startup/BUILD.gn +++ b/chromium/chromeos/startup/BUILD.gn @@ -2,9 +2,12 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/chromeos/ui_mode.gni") + component("startup") { output_name = "chromeos_startup" defines = [ "IS_CHROMEOS_STARTUP_IMPL" ] + public_deps = [ "//chromeos/crosapi/mojom" ] deps = [ ":constants", "//base", @@ -13,6 +16,13 @@ component("startup") { "startup.cc", "startup.h", ] + + if (is_chromeos_lacros) { + sources += [ + "browser_init_params.cc", + "browser_init_params.h", + ] + } } component("constants") { diff --git a/chromium/chromeos/tast_control.gni b/chromium/chromeos/tast_control.gni index 491f46034d5..ee0cc312aec 100644 --- a/chromium/chromeos/tast_control.gni +++ b/chromium/chromeos/tast_control.gni @@ -29,14 +29,6 @@ tast_disabled_tests_from_chrome_all = [ "apps.SystemWebAppsReinstall.default_enabled_apps_stable", "camera.EncodeAccelJPEG", - # crbug.com/1247485 - "inputs.PhysicalKeyboardInputFields.us_en", - "inputs.VirtualKeyboardAccent", - - # crbug.com/1247177 - "inputs.PhysicalKeyboardEnglishTyping", - "inputs.PhysicalKeyboardEmoji", - # https://crbug.com/1252352 "quicksettings.SignInScreen.battery", "quicksettings.SignInScreen.noaudio_nobattery", @@ -45,21 +37,9 @@ tast_disabled_tests_from_chrome_all = [ # crbug.com/1263234 "quicksettings.ManagedDeviceInfo", - # crbug.com/1273743 - "crostini.Launcher.local_wayland_bullseye_stable", - "crostini.Launcher.local_wayland_buster_stable", - "crostini.Launcher.local_x11_bullseye_stable", - "crostini.Launcher.system_wayland_bullseye_stable", - "crostini.Launcher.system_wayland_buster_stable", - "crostini.Launcher.system_x11_bullseye_stable", - "crostini.Launcher.system_x11_buster_stable", - # crbug.com/1259127 "ui.TabletOperations", - # crbug.com/1257474 - "shelf.OpenCloseSwitchApps", - # crbug.com/1239838 "graphics.FPS", @@ -75,9 +55,6 @@ tast_disabled_tests_from_chrome_all = [ "ui.ChromeCrashReporterMetrics.success_breakpad", "ui.ChromeCrashReporterMetrics.miss_breakpad", - # https://crbug.com/1269075: Flaky. - "shelf.AutoHideSmoke.clamshell_mode", - # https://crbug.com/1269124: Flaky. "quicksettings.LockScreen.no_battery", @@ -105,17 +82,6 @@ tast_disabled_tests_from_chrome_all = [ # https://crbug.com/1282369 "apps.LaunchHelpAppOffline", - # https://crbug.com/1282366 and https://crbug.com/1311184 - "inputs.VirtualKeyboardChangeInput.a11y", - "inputs.VirtualKeyboardDeadKeys.french", - "inputs.VirtualKeyboardFloat.clamshell", - "inputs.VirtualKeyboardGlideTyping.clamshell_a11y_floating", - "inputs.VirtualKeyboardHandwriting.docked", - "inputs.VirtualKeyboardHandwriting.floating", - "inputs.VirtualKeyboardMultipaste", - "inputs.VirtualKeyboardOOBE", - "inputs.VirtualKeyboardSystemLanguages.es", - # https://crbug.com/1282370 "arc.Boot.vm_with_per_vcpu_core_scheduling", @@ -125,12 +91,6 @@ tast_disabled_tests_from_chrome_all = [ # http://b/212644512 "security.SELinuxFilesDataDir", - # https://crbug.com/1283300 (http://b/212637568) - "inputs.PhysicalKeyboardCapsLock", - "inputs.PhysicalKeyboardChangeInput", - "inputs.PhysicalKeyboardAutocorrect.en_us_1", - "inputs.PhysicalKeyboardDeadKeys.us_intl_acute", - # https://crbug.com/1260046 "wmp.WindowCycle", @@ -222,26 +182,130 @@ tast_disabled_tests_from_chrome_all = [ # https://crbug.com/1314935 "dlp.DataLeakPreventionRulesListClipboardShelf", + # https://crbug.com/1322973 + "dlp.DataLeakPreventionRulesListClipboardShelf.ash", + # https://crbug.com/1314923 "dlp.DataLeakPreventionRulesListScreenshot.ash_allowed", - "dlp.DataLeakPreventionRulesListClipboardOmni", # https://crbug.com/1315123 "dlp.DataLeakPreventionRulesListScreenshot.ash_blocked", - # https://crbug.com/1312069 - "apps.LaunchHelpAppFromSettings.stable", - "apps.LaunchReleaseNotesFromSettings.stable", - "arc.Clipboard", - "arc.Gamepad", - "arc.IMESwitchShortcut", - "arc.StandardizedKeyboardCopyPaste", - "arc.StandardizedKeyboardCopyPaste.tablet_mode", - "arc.StandardizedKeyboardTyping", - "arc.StandardizedKeyboardTyping.tablet_mode", - - # https://crbug.com/1315880 - "u2fd.WebauthnUsingPassword.tpm1", + # https://crbug.com/1318989 + "assistant.StartupInSignedOutMode", + "login.ChangePassword", + + # https://crbug.com/1322572 + "policy.NotificationsAllowedForUrls", + "policy.NotificationsBlockedForUrls", + "policy.PolicyRefreshRate", + "policy.PopupsForURLCheck.allowlist", + + # https://crbug.com/1323628 + "crostini.AppVscode", + "crostini.AppGeditFilesharing", + + # https://crbug.com/1326279 + "policy.AccessibilityPolicies.focus_highlight", + + # https://crbug.com/1326331 + "policy.AccessibilityPolicies.high_contrast", + + # https://crbug.com/1326403 + "policy.AccessibilityPolicies.large_cursor", + + # https://crbug.com/1327171 + "policy.PopupsForURLCheck.default", + + # https://crbug.com/1327345 + "policy.ChromePolicyPageStatusTimestamps.ash", + + # https://crbug.com/1327361 + "policy.FullscreenAllowed", + + # https://crbug.com/1328128 + "policy.PopupsForURLCheck.blocklist", + + # https://crbug.com/1329734 + "health.DiagnosticsList", + "health.DiagnosticsCancel.urandom", + + # https://crbug.com/1329761 + "policy.DefaultSerialGuardSetting", + + # https://crbug.com/1335176 + "policy.ScreenBrightnessPercent", + + # https://crbug.com/1334354 + "arc.Boot.vm", + "arc.ChromeCrash.vm_logged_in", + "arc.Drivefs.vm", + "arc.OptinManaged.vm", + "arc.OptinNetworkError.vm", + "arc.RemovableMedia.vm", + "security.NetworkListenersARC.vm", + "security.SELinuxFilesDataDir.vm", + + # b/233264555 + "inputs.PhysicalKeyboardEmojiSuggestion", + "inputs.PhysicalKeyboardEmojiSuggestion.guest", + "inputs.PhysicalKeyboardEmojiSuggestion.incognito", + + # http://b/229032436 + "health.DiagnosticsRun.captive_portal", + "health.DiagnosticsRun.cpu_cache", + "health.DiagnosticsRun.cpu_stress", + "health.DiagnosticsRun.dns_latency", + "health.DiagnosticsRun.dns_resolution", + "health.DiagnosticsRun.dns_resolver_present", + + # This is effectively the mirror of the crrev.com/c/3691078 in CrOS. + # Although the change is made, because CrOS SDK is not yet ready + # we're still blocked by the test failures. This is the short term + # mitigation. We can remove this when CrOS SDK 14903 gets ready + # and started to be used. + "crostini.LaunchTerminal.buster_stable", + "crostini.Notify.buster_stable", + "crostini.PackageInfo.buster_stable", + "crostini.NoSharedFolder.buster_stable", + "crostini.LaunchBrowser.buster_stable", + "crostini.SecureCopyPaste.copy_wayland_buster_stable", + "crostini.SecureCopyPaste.copy_x11_buster_stable", + "crostini.PackageInstallUninstall.buster_stable", + "crostini.Xattrs.buster_stable", + "crostini.SSHFSMount.buster_stable", + "crostini.SecureCopyPaste.paste_wayland_buster_stable", + "crostini.UninstallInvalidApp.buster_stable", + "crostini.SecureCopyPaste.paste_x11_buster_stable", + "crostini.SharedFontFiles.buster_stable", + "crostini.CrashReporter.buster_stable", + "crostini.HomeDirectoryCreateFile.buster_stable", + "crostini.Basic.buster_stable", + "crostini.GPUEnabled.gpu_buster_stable", + "crostini.GPUEnabled.gpu_bullseye_stable", + "crostini.CrashReporter.bullseye_stable", + "crostini.Basic.bullseye_stable", + "crostini.HomeDirectoryCreateFile.bullseye_stable", + "crostini.LaunchBrowser.bullseye_stable", + "crostini.SecureCopyPaste.copy_wayland_bullseye_stable", + "crostini.SharedFontFiles.bullseye_stable", + "crostini.SecureCopyPaste.paste_x11_bullseye_stable", + "crostini.PackageInfo.bullseye_stable", + "crostini.Notify.bullseye_stable", + "crostini.UninstallInvalidApp.bullseye_stable", + "crostini.LaunchTerminal.bullseye_stable", + "crostini.NoSharedFolder.bullseye_stable", + "crostini.Xattrs.bullseye_stable", + "crostini.PackageInstallUninstall.bullseye_stable", + "crostini.SecureCopyPaste.paste_wayland_bullseye_stable", + "crostini.SSHFSMount.bullseye_stable", + "crostini.SecureCopyPaste.copy_x11_bullseye_stable", + + # http://b234699971 + "crostini.AppGeditUnshareFolder", + + # b/235279574 + "wmp.DragAndDropWindow", ] # To create filters to be used on specific builders add them like this: @@ -250,4 +314,7 @@ tast_disabled_tests_from_chrome_all = [ # test config as 'tast_expr_key' # To disable a specific test in lacros_all_tast_tests, add it the following # list and cite a bug. -tast_disabled_tests_from_lacros_all = [] +tast_disabled_tests_from_lacros_all = [ + # https://crbug.com/1329764 + "policy.HistoryClustersVisible", +] diff --git a/chromium/chromeos/ui/frame/BUILD.gn b/chromium/chromeos/ui/frame/BUILD.gn index 5c6a80847ff..16a88baa8e2 100644 --- a/chromium/chromeos/ui/frame/BUILD.gn +++ b/chromium/chromeos/ui/frame/BUILD.gn @@ -45,6 +45,8 @@ source_set("frame") { "immersive/immersive_revealed_lock.h", "interior_resize_handler_targeter.cc", "interior_resize_handler_targeter.h", + "multitask_menu/multitask_menu.cc", + "multitask_menu/multitask_menu.h", ] deps = [ |