diff --git a/.gitmodules b/.gitmodules index 1862419..2f894c4 100644 --- a/.gitmodules +++ b/.gitmodules
@@ -199,10 +199,6 @@ [submodule "third_party/crossbench"] path = third_party/crossbench url = https://chromium.googlesource.com/crossbench -[submodule "third_party/crubit/src"] - path = third_party/crubit/src - url = https://chromium.googlesource.com/external/github.com/google/crubit - gclient-condition = checkout_crubit [submodule "third_party/depot_tools"] path = third_party/depot_tools url = https://chromium.googlesource.com/chromium/tools/depot_tools
diff --git a/DEPS b/DEPS index c31cf6f..c3284ca 100644 --- a/DEPS +++ b/DEPS
@@ -152,19 +152,6 @@ # Fetch clangd into the same bin/ directory as our clang binary. 'checkout_clangd': False, - # Fetch prebuilt and prepackaged Bazel binary/executable. Bazel is currently - # only needed by `chromium/src/tools/rust/build_crubit.py` and therefore - # shouldn't be used outside of Chromium Rust Experiments project. - # Furthermore note that Bazel is only needed when building Crubit during Rust - # toolchain build (and is *not* needed during regular Chromium builds). - 'checkout_bazel': False, - - # Fetch Crubit support libraries in order to build ..._rs_api.rs and - # ..._rs_api_impl.cc that are generated by prebuilt (see - # tools/rust/build_crubit.py) Crubit tools during Chromium build (see - # also //build/rust/rs_bindings_from_cc.gni). - 'checkout_crubit': False, - # By default checkout the OpenXR loader library only on Windows and Android. # The OpenXR backend for VR in Chromium is currently only supported for these # platforms, but support for other platforms may be added in the future. @@ -204,12 +191,6 @@ # qemu on linux-arm64 machines. 'checkout_fuchsia_for_arm64_host': False, - # Revision of Crubit (trunk on 2022-10-15). This should typically be the - # same as the revision specified in CRUBIT_REVISION in - # tools/rust/update_rust.py. More details and roll instructions can be - # found in tools/rust/README.md. - 'crubit_revision': 'f5cbdf4b54b0e6b9f63a4464a2c901c82e0f0209', - # By default, download the fuchsia sdk from the public sdk directory. 'fuchsia_sdk_cipd_prefix': 'fuchsia/sdk/core/', @@ -300,11 +281,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'src_internal_revision': 'ee6b0d656f2c6feb3d3e4b3a7371439443e87957', + 'src_internal_revision': '882104e8ef00c37b322eb765dca65f7220a7a854', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '5218f67ec716edb39f5d005ddaf6e9d70eca7cc9', + 'skia_revision': '5fb36dd08a257623ee0738747286de09662e4591', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. @@ -312,7 +293,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '0040cda1170f9d481135a95d2fbff616120f404b', + 'angle_revision': 'cc44090d3483efdbae0dacf9c3fdb6c5d5a950fa', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -320,7 +301,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': 'fba5ab2f1c9c9b66b61e94d00662f9c12fcb692b', + 'pdfium_revision': 'cd4887caa580fe6b54be2fd5abe87dc3fb4de27e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. @@ -396,7 +377,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '5fea877e0b17578765cd4520857b5b3b172b5199', + 'devtools_frontend_revision': 'b40634d52b0f5dcde839e73c8bdac4909458217a', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -420,7 +401,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': '690b037a7532f18b68e4907ddb0ddff6b1a8f1e7', + 'dawn_revision': '9d1b7b42eb282d2ce24e329a8bf41c89fdd67973', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -488,7 +469,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'libunwind_revision': 'b7cdacaadbc4d121081ad6b146c7e94acec4c7ff', + 'libunwind_revision': '37c7d984b0b8520a0f99c6e6bbb0514e9996edc8', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -952,31 +933,31 @@ 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/rust-toolchain-009e73825af0e59ad4fc603562e038b3dbd6593a-22-llvmorg-20-init-3847-g69c43468.tar.xz', - 'sha256sum': '28f91ad46cce2750da95a6de305909a7f3904878cb1294de530ea962d19ccf19', - 'size_bytes': 115038168, - 'generation': 1727459972380358, + 'object_name': 'Linux_x64/rust-toolchain-009e73825af0e59ad4fc603562e038b3dbd6593a-23-llvmorg-20-init-3847-g69c43468.tar.xz', + 'sha256sum': 'a6c4e006002fd396331d77a1ccc8d2ab41fcfd0df5d3df7a6660b6aa7dc6f961', + 'size_bytes': 123945520, + 'generation': 1727798075788514, 'condition': 'host_os == "linux" and non_git_source', }, { - 'object_name': 'Mac/rust-toolchain-009e73825af0e59ad4fc603562e038b3dbd6593a-22-llvmorg-20-init-3847-g69c43468.tar.xz', - 'sha256sum': '7aa67826a75a39344a0eb1a7ca0ce439c811eb0318a7e1229cff1b4771d51a84', - 'size_bytes': 108381448, - 'generation': 1727459977622304, + 'object_name': 'Mac/rust-toolchain-009e73825af0e59ad4fc603562e038b3dbd6593a-23-llvmorg-20-init-3847-g69c43468.tar.xz', + 'sha256sum': '15927f50613ea0740e3fd7ff1fa40c255dcd4d7e7cd2a48fc85e6723ff9362fa', + 'size_bytes': 117066196, + 'generation': 1727798077728157, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac_arm64/rust-toolchain-009e73825af0e59ad4fc603562e038b3dbd6593a-22-llvmorg-20-init-3847-g69c43468.tar.xz', - 'sha256sum': '5b7399445e48c0cf87d4c56a577505ab7f03f936fc3d9eb538f3a5545d740497', - 'size_bytes': 97828296, - 'generation': 1727459981528990, + 'object_name': 'Mac_arm64/rust-toolchain-009e73825af0e59ad4fc603562e038b3dbd6593a-23-llvmorg-20-init-3847-g69c43468.tar.xz', + 'sha256sum': 'fb8daa448ed50eea88ac9c25c871332213a5c12a7c9beff0261478a6195b994d', + 'size_bytes': 103504896, + 'generation': 1727798079645218, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Win/rust-toolchain-009e73825af0e59ad4fc603562e038b3dbd6593a-22-llvmorg-20-init-3847-g69c43468.tar.xz', - 'sha256sum': 'b518511a6278bbd7673c4eb42c3650160655ab3a6b8eeaefe0640de879123585', - 'size_bytes': 172446400, - 'generation': 1727459983614492, + 'object_name': 'Win/rust-toolchain-009e73825af0e59ad4fc603562e038b3dbd6593a-23-llvmorg-20-init-3847-g69c43468.tar.xz', + 'sha256sum': '139fbd7092526abcb91d5df67d4fc472a2bdae9a6487fcf3ec122c8ac112b4f8', + 'size_bytes': 178572296, + 'generation': 1727798081586976, 'condition': 'host_os == "win"', }, ], @@ -1295,7 +1276,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - '59c00202c7c9270d760bf9a57ffd242ef6b0f271', + '4120c4d811f4c534ae4be631037163de6f797935', 'condition': 'checkout_android and checkout_src_internal', }, @@ -1733,7 +1714,7 @@ # Tools used when building Chrome for Chrome OS. This affects both the Simple # Chrome workflow, as well as the chromeos-chrome ebuild. 'src/third_party/chromite': { - 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'f834f05d9e79b960930b90da2d6e8f824c85a9b1', + 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'c621276d4f2ec43ef4346a40f5dd328aa8bcbaaf', 'condition': 'checkout_chromeos', }, @@ -1762,19 +1743,14 @@ Var('chromium_git') + '/crossbench.git' + '@' + Var('crossbench_revision'), - 'src/third_party/crubit/src': { - 'url': Var('chromium_git') + '/external/github.com/google/crubit.git' + '@' + Var('crubit_revision'), - 'condition': 'checkout_crubit', - }, - 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '6dec85272d23ae587984cdd78eae428ce3b2ad9b', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'cc39a5681f48f42e8f0d16b9979bd3085c93de0a', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), 'src/third_party/devtools-frontend-internal': { - 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '51db6cf38207673d6bfa25c8e136277c3cfb6e9c', + 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '84c1220a80b203163a2c3d124ca103f63580d8ce', 'condition': 'checkout_src_internal', }, @@ -2240,7 +2216,7 @@ Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + '478e5ab3eca30e600006d5a0a08b176fd34d3bd1', 'src/third_party/openscreen/src': - Var('chromium_git') + '/openscreen' + '@' + '6508900f6f6cbe87a61abdc337fcdfc289c43cea', + Var('chromium_git') + '/openscreen' + '@' + '1335531d0d7847625b52e9365902d7fcba82f3c6', 'src/third_party/openxr/src': { 'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenXR-SDK' + '@' + '288d3a7ebc1ad959f62d51da75baa3d27438c499', @@ -2266,7 +2242,7 @@ Var('pdfium_git') + '/pdfium.git' + '@' + Var('pdfium_revision'), 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '077bb360edecb33551e88c8097035e4b8cef245b', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '226197a61ac2b08b3860b5c73f8411ba0ba43947', 'src/base/tracing/test/data': { 'bucket': 'perfetto', @@ -2554,7 +2530,7 @@ 'dep_type': 'cipd', }, - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@fb8f0127fca4d687f0584b62183572ed39ffc198', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@0828416b3eae17db848880d486e5c7f0038e46b0', 'src/third_party/glslang/src': '{chromium_git}/external/github.com/KhronosGroup/glslang@a729c86d78552ec7e05e3748448e7a99f6f2a696', 'src/third_party/spirv-cross/src': '{chromium_git}/external/github.com/KhronosGroup/SPIRV-Cross@b8fcf307f1f347089e3c46eb4451d27f32ebc8d3', 'src/third_party/spirv-headers/src': '{chromium_git}/external/github.com/KhronosGroup/SPIRV-Headers@ec59c77a3bb5c747a369931ef101ac7c14823f2f', @@ -2603,7 +2579,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '9d029d337ae1832b5a7b9bf049a87076c12f749d', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '8569a0d5346330eb6641512df65b864bbaed11e9', + Var('webrtc_git') + '/src.git' + '@' + '076eb6cdf236cd6125ab126df2340ca3ee265425', # Wuffs' canonical repository is at github.com/google/wuffs, but we use # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file. @@ -2743,7 +2719,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'RlxrAZbJURNWeJnj9fybs_LDcbvjGjPa82Jx5_rz6K8C', + 'version': 'swnHsMK93RsqwT2pV61xuuotI2-ti-_np8j5BSXvmpoC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -2754,7 +2730,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/media_app/app', - 'version': 'uLcuCv4vP-zbrrt6V9EDkeKSlPWvYejOMIU3WfWaDcQC', + 'version': 'xlRQrk5SDu4Nzw6mU6FfUm0VlXN1RlAz6CynFnVnnRgC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -4068,42 +4044,6 @@ 'dep_type': 'cipd', }, - 'src/tools/bazel/linux-amd64': { - 'packages': [{ - 'package': 'infra/3pp/tools/bazel_bootstrap/linux-amd64', - 'version': 'version:2@5.3.2.1', - }], - 'dep_type': 'cipd', - 'condition': 'host_os == "linux" and checkout_bazel and non_git_source', - }, - - 'src/tools/bazel/mac-amd64': { - 'packages': [{ - 'package': 'infra/3pp/tools/bazel_bootstrap/mac-amd64', - 'version': 'version:2@5.3.2.1', - }], - 'dep_type': 'cipd', - 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_bazel', - }, - - 'src/tools/bazel/mac-arm64': { - 'packages': [{ - 'package': 'infra/3pp/tools/bazel_bootstrap/mac-arm64', - 'version': 'version:2@5.3.2.1', - }], - 'dep_type': 'cipd', - 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_bazel', - }, - - 'src/tools/bazel/windows-amd64': { - 'packages': [{ - 'package': 'infra/3pp/tools/bazel_bootstrap/windows-amd64', - 'version': 'version:2@5.3.2', - }], - 'dep_type': 'cipd', - 'condition': 'host_os == "win" and checkout_bazel', - }, - # Dependencies from src_internal 'src/chromeos/ash/resources/internal': { 'url': Var('chrome_git') + '/chrome/chromeos/ash/resources/internal.git' + '@' + @@ -4396,7 +4336,7 @@ 'src/ios_internal': { 'url': Var('chrome_git') + '/chrome/ios_internal.git' + '@' + - 'c7ca556bc732c861810971db63ceffa352c2442e', + '028fcf85bcfd643709d3174307c2e4303e76fcd7', 'condition': 'checkout_ios and checkout_src_internal', },
diff --git a/WATCHLISTS b/WATCHLISTS index 96b45f5..acdd7cc 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -2144,6 +2144,12 @@ 'content/browser/tab_contents/|'\ 'chrome/browser/ui/tab_contents/', }, + 'tab_group_infra': { + 'filepath': 'chrome/browser/data_sharing/'\ + '|chrome/browser/tab_group_sync/'\ + '|components/data_sharing/'\ + '|components/saved_tab_groups/' + }, 'tab_interface': { 'filepath': 'chrome/browser/tab/' }, @@ -3271,6 +3277,7 @@ 'tab_contents': ['ajwong+watch@chromium.org', 'avi@chromium.org', 'creis+watch@chromium.org'], + 'tab_group_infra' : [ 'chrome-tab-group-eng-leads+watch-infra@google.com' ], 'tab_interface': ['jinsukkim+watch@chromium.org'], 'tab_ui_and_start_surface': ['meiliang+watch@chromium.org', 'yuezhanggg+watch@chromium.org',
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwMetricsIntegrationTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwMetricsIntegrationTest.java index bc446b4..efdb190 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwMetricsIntegrationTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwMetricsIntegrationTest.java
@@ -491,11 +491,13 @@ ChromeComponent expected) { return new TypeSafeMatcher<ChromeComponent>() { @Override + @SuppressWarnings("LiteProtoToString") public void describeTo(Description description) { description.appendText(expected.toString()); } @Override + @SuppressWarnings("LiteProtoToString") protected void describeMismatchSafely( ChromeComponent item, Description mismatchDescription) { mismatchDescription.appendText("Doesn't match " + item.toString());
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/ClientHintsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/ClientHintsTest.java index 6e296e8..f8c33ad 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/ClientHintsTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/ClientHintsTest.java
@@ -810,8 +810,7 @@ "fake_platform", customUserAgentMetadata.get(AwUserAgentMetadata.MetadataKeys.PLATFORM)); Assert.assertEquals( - new Boolean(true), - customUserAgentMetadata.get(AwUserAgentMetadata.MetadataKeys.WOW64)); + true, customUserAgentMetadata.get(AwUserAgentMetadata.MetadataKeys.WOW64)); Assert.assertEquals( Arrays.deepToString(overrideBrands), Arrays.deepToString( @@ -835,8 +834,7 @@ Assert.assertEquals( "Android", customUserAgentMetadata.get(AwUserAgentMetadata.MetadataKeys.PLATFORM)); Assert.assertEquals( - new Boolean(false), - customUserAgentMetadata.get(AwUserAgentMetadata.MetadataKeys.WOW64)); + false, customUserAgentMetadata.get(AwUserAgentMetadata.MetadataKeys.WOW64)); String[][] actualOverrideBrands = (String[][])
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java index 4d74af7..b7087c5 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java
@@ -301,7 +301,7 @@ mWebServer.getBaseUrl(), null); } catch (UnsupportedEncodingException e) { - Assert.fail(); + throw new RuntimeException(e); } }); expectTitle(testString);
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/devui/FlagsFragmentTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/devui/FlagsFragmentTest.java index a8355f48..86a4a97 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/devui/FlagsFragmentTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/devui/FlagsFragmentTest.java
@@ -572,10 +572,10 @@ return flagInteraction; } + /** Verify if the baseFeature flag contains only "Default", "Enabled" , "Disabled" states. */ @Test @MediumTest @Feature({"AndroidWebView"}) - /** Verify if the baseFeature flag contains only "Default", "Enabled" , "Disabled" states. */ public void testFlagStates_baseFeature() throws Throwable { ListView flagsList = mRule.getActivity().findViewById(R.id.flags_list); @@ -594,10 +594,10 @@ testFlagStatesHelper(firstBaseFeaturePosition); } + /** Verify if the commandline flag contains only "Default", "Enabled" states. */ @Test @MediumTest @Feature({"AndroidWebView"}) - /** Verify if the commandline flag contains only "Default", "Enabled" states. */ public void testFlagStates_commandLineFlag() throws Throwable { ListView flagsList = mRule.getActivity().findViewById(R.id.flags_list);
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/services/JsSandboxServiceTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/services/JsSandboxServiceTest.java index 4e5f301..68dac32 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/services/JsSandboxServiceTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/services/JsSandboxServiceTest.java
@@ -465,7 +465,7 @@ // Invalid offset extending beyond end of file. // Note that file contains only ascii characters for testing purposes, hence we // can assume the length of the string to be the number of bytes it contains. - long offsetBeyondEof = fileContent.length() + 10; + long offsetBeyondEof = (long) fileContent.length() + 10; try (AssetFileDescriptor afd = new AssetFileDescriptor(pfd, offsetBeyondEof, fileContent.length())) { ListenableFuture<JavaScriptSandbox> jsSandboxFuture = @@ -532,7 +532,7 @@ // Read only up to call to `hello(); // File contains only ascii characters for testing purposes, hence we can predict the // number of bytes to remove from the end. - long length = fileContent.length() - "bye();".length(); + long length = (long) fileContent.length() - "bye();".length(); try (AssetFileDescriptor afd = new AssetFileDescriptor(pfd, 0, length)) { ListenableFuture<JavaScriptSandbox> jsSandboxFuture = JavaScriptSandbox.createConnectedInstanceForTestingAsync(context); @@ -588,7 +588,7 @@ // Declare length beyond EOF. // Note that file contains only ascii characters for testing purposes, hence we // can assume the length of the string to be the number of bytes it contains. - long length = fileContent.length() + 10; + long length = (long) fileContent.length() + 10; try (AssetFileDescriptor afd = new AssetFileDescriptor(pfd, 0, length)) { ListenableFuture<JavaScriptSandbox> jsSandboxFuture = JavaScriptSandbox.createConnectedInstanceForTestingAsync(context);
diff --git a/android_webview/tools/automated_ui_tests/javatests/src/org/chromium/webview_ui_test/test/ActionModeTest.java b/android_webview/tools/automated_ui_tests/javatests/src/org/chromium/webview_ui_test/test/ActionModeTest.java index 4579269..4dab588 100644 --- a/android_webview/tools/automated_ui_tests/javatests/src/org/chromium/webview_ui_test/test/ActionModeTest.java +++ b/android_webview/tools/automated_ui_tests/javatests/src/org/chromium/webview_ui_test/test/ActionModeTest.java
@@ -192,10 +192,8 @@ onData(new MenuItemMatcher(equalTo(name))).inRoot(rootMatcher).perform(click()); } - /** - * After select all action is clicked, the PopUp Menu may disappear - * briefly due to selection change, wait for the menu to reappear - */ + // After select all action is clicked, the PopUp Menu may disappear briefly due to selection + // change, wait for the menu to reappear if (name.equals(SELECT_ALL_ACTION)) { assertTrue(mWebViewActivityRule.waitForActionBarPopup()); }
diff --git a/ash/auth/active_session_auth_controller_impl.cc b/ash/auth/active_session_auth_controller_impl.cc index 2e6d9807..ed524273 100644 --- a/ash/auth/active_session_auth_controller_impl.cc +++ b/ash/auth/active_session_auth_controller_impl.cc
@@ -141,6 +141,52 @@ } // namespace +// This class manages the closing process after successful fingerprint +// authentication. It listens for two signals: +// 1. The completion of the successful authentication animation. +// 2. The authentication callback from cryptohome. +// Once both signals are received, the class triggers the closing process. +class ActiveSessionAuthControllerImpl::FingerprintAuthTracker { + public: + explicit FingerprintAuthTracker(ActiveSessionAuthControllerImpl* owner) + : owner_(owner) { + CHECK(owner_); + } + + void OnAuthenticationFinished( + std::unique_ptr<UserContext> user_context, + std::optional<AuthenticationError> authentication_error) { + CHECK_EQ(authentication_finished_, false); + authentication_finished_ = true; + if (authentication_error.has_value()) { + LOG(ERROR) << "Authentication error during OnFingerprintSuccess code: " + << authentication_error->get_cryptohome_code(); + } + owner_->user_context_ = std::move(user_context); + MaybeNotifyOwner(); + } + + void OnAnimationFinished() { + VLOG(1) << "OnAnimationFinished"; + CHECK_EQ(animation_finished_, false); + animation_finished_ = true; + MaybeNotifyOwner(); + } + + void MaybeNotifyOwner() { + if (authentication_finished_ && animation_finished_) { + owner_->StartClose(); + } + CHECK(owner_); + CHECK(owner_->fp_auth_tracker_); + } + + private: + const raw_ptr<ActiveSessionAuthControllerImpl> owner_; + bool animation_finished_ = false; + bool authentication_finished_ = false; +}; + ActiveSessionAuthControllerImpl::TestApi::TestApi( ActiveSessionAuthControllerImpl* controller) : controller_(controller) {} @@ -207,6 +253,9 @@ auth_performer_ = std::make_unique<AuthPerformer>(UserDataAuthClient::Get()); account_id_ = Shell::Get()->session_controller()->GetActiveAccountId(); + fingerprint_animation_finished_ = false; + fingerprint_authentication_finished_ = false; + user_manager::User* active_user = user_manager::UserManager::Get()->GetActiveUser(); auto user_context = std::make_unique<UserContext>(*active_user); @@ -299,6 +348,7 @@ LOG(ERROR) << "Failed to start fingerprint auth session - only " "non-fingerprint factors will be available."; } else { + fp_auth_tracker_ = std::make_unique<FingerprintAuthTracker>(this); available_factors_.Put(AuthInputType::kFingerprint); } std::move(on_auth_factors_ready).Run(std::move(user_context)); @@ -319,6 +369,9 @@ } switch (scan_result) { case FingerprintAuthScanResult::kSuccess: + contents_view_->NotifyFingerprintAuthSuccess( + base::BindOnce(&FingerprintAuthTracker::OnAnimationFinished, + base::Unretained(fp_auth_tracker_.get()))); if (state_ == ActiveSessionAuthState::kPasswordAuthStarted || state_ == ActiveSessionAuthState::kPinAuthStarted) { SetState(ActiveSessionAuthState::kFingerprintAuthSucceededWaiting); @@ -346,25 +399,14 @@ NOTREACHED(); } -void ActiveSessionAuthControllerImpl::OnFingerprintSuccess( - std::unique_ptr<UserContext> user_context, - std::optional<AuthenticationError> authentication_error) { - if (authentication_error.has_value()) { - LOG(ERROR) << "Authentication error during OnFingerprintSuccess code: " - << authentication_error->get_cryptohome_code(); - } - user_context_ = std::move(user_context); - StartClose(); -} - void ActiveSessionAuthControllerImpl::HandleFingerprintAuthSuccess() { CHECK(user_context_); uma_recorder_.RecordAuthSucceeded(AuthInputType::kFingerprint); SetState(ActiveSessionAuthState::kFingerprintAuthSucceeded); auth_performer_->AuthenticateWithLegacyFingerprint( std::move(user_context_), - base::BindOnce(&ActiveSessionAuthControllerImpl::OnFingerprintSuccess, - weak_ptr_factory_.GetWeakPtr())); + base::BindOnce(&FingerprintAuthTracker::OnAuthenticationFinished, + base::Unretained(fp_auth_tracker_.get()))); } void ActiveSessionAuthControllerImpl::InitUi() { @@ -410,12 +452,14 @@ auth_performer_->InvalidateCurrentAttempts(); if (fp_client_ && available_factors_.Has(AuthInputType::kFingerprint)) { + CHECK(fp_auth_tracker_); fp_client_->TerminateFingerprintAuth( std::move(user_context_), base::BindOnce(&ActiveSessionAuthControllerImpl::CompleteClose, weak_ptr_factory_.GetWeakPtr())); return; } + CHECK(!fp_auth_tracker_); CompleteClose(std::move(user_context_), std::nullopt); } @@ -441,7 +485,7 @@ title_.clear(); description_.clear(); - + fp_auth_tracker_.reset(); widget_.reset(); }
diff --git a/ash/auth/active_session_auth_controller_impl.h b/ash/auth/active_session_auth_controller_impl.h index fcc26595..3a8e3fc 100644 --- a/ash/auth/active_session_auth_controller_impl.h +++ b/ash/auth/active_session_auth_controller_impl.h
@@ -115,6 +115,7 @@ void OnFingerprintTerminated( std::unique_ptr<UserContext> user_context, std::optional<AuthenticationError> authentication_error); + void OnFingerprintAnimationFinished(); // Tracks the authentication flow for the active session. enum class ActiveSessionAuthState { @@ -136,6 +137,9 @@ }; private: + class FingerprintAuthTracker; + friend class FingerprintAuthTracker; + using AuthFactorsReadyCallback = base::OnceCallback<void(std::unique_ptr<UserContext>)>; @@ -197,7 +201,11 @@ std::unique_ptr<AuthRequest> auth_request_; + bool fingerprint_animation_finished_ = false; + bool fingerprint_authentication_finished_ = false; + raw_ptr<ActiveSessionFingerprintClient> fp_client_; + std::unique_ptr<FingerprintAuthTracker> fp_auth_tracker_; ActiveSessionAuthMetricsRecorder uma_recorder_;
diff --git a/ash/auth/views/active_session_auth_view.cc b/ash/auth/views/active_session_auth_view.cc index e1e2b04..62bfc1f1 100644 --- a/ash/auth/views/active_session_auth_view.cc +++ b/ash/auth/views/active_session_auth_view.cc
@@ -290,6 +290,12 @@ auth_container_->SetFingerprintState(state); } +void ActiveSessionAuthView::NotifyFingerprintAuthSuccess( + base::OnceClosure on_success_animation_finished) { + auth_container_->NotifyFingerprintAuthSuccess( + std::move(on_success_animation_finished)); +} + void ActiveSessionAuthView::NotifyFingerprintAuthFailure() { auth_container_->NotifyFingerprintAuthFailure(); }
diff --git a/ash/auth/views/active_session_auth_view.h b/ash/auth/views/active_session_auth_view.h index a6dc9f60..2ab4ed4 100644 --- a/ash/auth/views/active_session_auth_view.h +++ b/ash/auth/views/active_session_auth_view.h
@@ -118,6 +118,8 @@ // FingerprintView actions: void SetFingerprintState(FingerprintState state); + void NotifyFingerprintAuthSuccess( + base::OnceClosure on_success_animation_finished); void NotifyFingerprintAuthFailure(); private:
diff --git a/ash/auth/views/auth_container_view.cc b/ash/auth/views/auth_container_view.cc index 2f23fdb..10ad61e 100644 --- a/ash/auth/views/auth_container_view.cc +++ b/ash/auth/views/auth_container_view.cc
@@ -330,6 +330,13 @@ fingerprint_view_->SetState(state); } +void AuthContainerView::NotifyFingerprintAuthSuccess( + base::OnceCallback<void()> on_success_animation_finished) { + CHECK(fingerprint_view_); + fingerprint_view_->NotifyAuthSuccess( + std::move(on_success_animation_finished)); +} + void AuthContainerView::NotifyFingerprintAuthFailure() { CHECK(fingerprint_view_); fingerprint_view_->NotifyAuthFailure();
diff --git a/ash/auth/views/auth_container_view.h b/ash/auth/views/auth_container_view.h index 967876e..8561cc14 100644 --- a/ash/auth/views/auth_container_view.h +++ b/ash/auth/views/auth_container_view.h
@@ -127,6 +127,8 @@ // FingerprintView actions: void SetFingerprintState(FingerprintState state); + void NotifyFingerprintAuthSuccess( + base::OnceClosure on_success_animation_finished); void NotifyFingerprintAuthFailure(); private:
diff --git a/ash/auth/views/fingerprint_view.cc b/ash/auth/views/fingerprint_view.cc index 86fd725..f0f4271 100644 --- a/ash/auth/views/fingerprint_view.cc +++ b/ash/auth/views/fingerprint_view.cc
@@ -5,8 +5,10 @@ #include "ash/auth/views/fingerprint_view.h" #include <memory> +#include <optional> #include <string> #include <string_view> +#include <vector> #include "ash/auth/views/auth_common.h" #include "ash/login/resources/grit/login_resources.h" @@ -18,6 +20,7 @@ #include "ash/style/ash_color_id.h" #include "base/check.h" #include "base/check_op.h" +#include "base/containers/flat_tree.h" #include "base/functional/bind.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" @@ -28,7 +31,9 @@ #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/base/resource/resource_bundle.h" #include "ui/chromeos/styles/cros_tokens_color_mappings.h" +#include "ui/color/color_provider.h" #include "ui/gfx/geometry/size.h" +#include "ui/lottie/animation.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/controls/label.h" #include "ui/views/layout/box_layout.h" @@ -68,6 +73,34 @@ constexpr ui::ColorId kFingerprintIconDisabledColorId = cros_tokens::kCrosSysDisabled; +constexpr float kCheckmarkAnimationPlaybackSpeed = 2.25; + +std::unique_ptr<lottie::Animation> GetCheckmarkAnimation( + ui::ColorProvider* color_provider) { + std::optional<std::vector<uint8_t>> lottie_data = + ui::ResourceBundle::GetSharedInstance().GetLottieData( + IDR_LOGIN_ARROW_CHECKMARK_ANIMATION); + CHECK(lottie_data.has_value()); + + cc::SkottieColorMap color_map = cc::SkottieColorMap{ + cc::SkottieMapColor( + "cros.sys.illo.color2", + color_provider->GetColor(cros_tokens::kCrosSysPositive)), + cc::SkottieMapColor( + "cros.sys.app_base_shaded", + color_provider->GetColor(cros_tokens::kCrosSysOnSurface)), + }; + + std::unique_ptr<lottie::Animation> animation = + std::make_unique<lottie::Animation>( + cc::SkottieWrapper::UnsafeCreateSerializable(lottie_data.value()), + std::move(color_map)); + + animation->SetPlaybackSpeed(kCheckmarkAnimationPlaybackSpeed); + + return animation; +} + } // namespace //----------------------- FingerprintView Test API ------------------------ @@ -125,6 +158,12 @@ gfx::Size(kFingerprintIconSizeDp, kFingerprintIconSizeDp), 0 /*corner_radius*/)); + lottie_animation_view_ = + AddChildView(std::make_unique<views::AnimatedImageView>()); + lottie_animation_view_->SetImageSize( + gfx::Size(kFingerprintIconSizeDp, kFingerprintIconSizeDp)); + lottie_animation_view_->SetVisible(false); + label_ = AddChildView(std::make_unique<views::Label>()); label_->SetSubpixelRenderingEnabled(false); label_->SetAutoColorReadabilityEnabled(false); @@ -141,6 +180,8 @@ FingerprintView::~FingerprintView() { icon_ = nullptr; + scoped_animation_observer_.Reset(); + lottie_animation_view_ = nullptr; label_ = nullptr; } @@ -148,6 +189,11 @@ if (state_ == state) { return; } + + if (has_success_) { + return; + } + reset_state_.Stop(); state_ = state; DisplayCurrentState(); @@ -158,11 +204,39 @@ return; } + if (has_success_) { + return; + } + has_pin_ = has_pin; DisplayCurrentState(); } +void FingerprintView::NotifyAuthSuccess( + base::OnceClosure on_success_animation_finished) { + has_success_ = true; + CHECK(on_success_animation_finished_.is_null()); + on_success_animation_finished_ = std::move(on_success_animation_finished); + CHECK(GetColorProvider()); + std::unique_ptr<lottie::Animation> animation = + GetCheckmarkAnimation(GetColorProvider()); + CHECK(animation); + auto playback_config = lottie::Animation::PlaybackConfig::CreateWithStyle( + lottie::Animation::Style::kLinear, *animation); + // Observe animation to know when it finishes playing. + scoped_animation_observer_.Observe(animation.get()); + lottie_animation_view_->SetAnimatedImage(std::move(animation)); + lottie_animation_view_->Play(playback_config); + + icon_->SetVisible(false); + lottie_animation_view_->SetVisible(true); +} + void FingerprintView::NotifyAuthFailure() { + if (has_success_) { + return; + } + SetState(FingerprintState::AVAILABLE_WITH_FAILED_ATTEMPT); reset_state_.Start( FROM_HERE, kResetToDefaultIconDelay, @@ -171,9 +245,14 @@ } void FingerprintView::OnGestureEvent(ui::GestureEvent* event) { + if (has_success_) { + return; + } + if (event->type() != ui::EventType::kGestureTap) { return; } + if (state_ == FingerprintState::AVAILABLE_DEFAULT || state_ == FingerprintState::AVAILABLE_WITH_TOUCH_SENSOR_WARNING || state_ == FingerprintState::AVAILABLE_WITH_FAILED_ATTEMPT) { @@ -186,6 +265,7 @@ } void FingerprintView::DisplayCurrentState() { + CHECK(!has_success_); if (state_ == FingerprintState::UNAVAILABLE) { SetVisible(false); return; @@ -198,6 +278,7 @@ } void FingerprintView::SetIcon() { + CHECK(!has_success_); switch (state_) { case FingerprintState::AVAILABLE_DEFAULT: case FingerprintState::AVAILABLE_WITH_TOUCH_SENSOR_WARNING: @@ -222,6 +303,7 @@ } ui::ColorId FingerprintView::GetIconColorIdFromState() const { + CHECK(!has_success_); switch (state_) { case FingerprintState::AVAILABLE_DEFAULT: case FingerprintState::AVAILABLE_WITH_TOUCH_SENSOR_WARNING: @@ -236,6 +318,7 @@ } int FingerprintView::GetTextIdFromState() const { + CHECK(!has_success_); switch (state_) { case FingerprintState::AVAILABLE_DEFAULT: case FingerprintState::AVAILABLE_WITH_FAILED_ATTEMPT: @@ -255,6 +338,7 @@ } int FingerprintView::GetA11yTextIdFromState() const { + CHECK(!has_success_); switch (state_) { case FingerprintState::AVAILABLE_DEFAULT: case FingerprintState::AVAILABLE_WITH_FAILED_ATTEMPT: @@ -284,6 +368,15 @@ return gfx::Size(kTextLineWidthDp, preferred_height); } +void FingerprintView::AnimationCycleEnded(const lottie::Animation* animation) { + CHECK(has_success_); + scoped_animation_observer_.Reset(); + + if (on_success_animation_finished_) { + std::move(on_success_animation_finished_).Run(); + } +} + BEGIN_METADATA(FingerprintView) END_METADATA
diff --git a/ash/auth/views/fingerprint_view.h b/ash/auth/views/fingerprint_view.h index dfff9f9..887aeac 100644 --- a/ash/auth/views/fingerprint_view.h +++ b/ash/auth/views/fingerprint_view.h
@@ -11,10 +11,13 @@ #include "ash/style/ash_color_id.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/scoped_observation.h" #include "base/timer/timer.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/metadata/metadata_header_macros.h" #include "ui/gfx/geometry/size.h" +#include "ui/lottie/animation_observer.h" +#include "ui/views/controls/animated_image_view.h" #include "ui/views/controls/label.h" #include "ui/views/view.h" @@ -23,7 +26,8 @@ // FingerprintView is a view displaying a fingerprint icon and label, // dynamically adapting based on fingerprint availability, // authentication state, and the presence of a PIN. -class ASH_EXPORT FingerprintView : public views::View { +class ASH_EXPORT FingerprintView : public views::View, + public lottie::AnimationObserver { METADATA_HEADER(FingerprintView, views::View) public: class TestApi { @@ -66,6 +70,9 @@ // Indicates if a PIN is set, potentially influencing the label text. void SetHasPin(bool has_pin); + // Triggers a brief animation to signal an authentication success. + void NotifyAuthSuccess(base::OnceClosure on_success_animation_finished); + // Triggers a brief animation to signal an authentication failure. void NotifyAuthFailure(); @@ -74,6 +81,9 @@ gfx::Size CalculatePreferredSize( const views::SizeBounds& available_size) const override; + // lottie::AnimationObserver: + void AnimationCycleEnded(const lottie::Animation* animation) override; + private: // Updates the visual elements to reflect the current state and PIN // availability. @@ -90,6 +100,16 @@ raw_ptr<views::Label> label_ = nullptr; raw_ptr<AnimatedRoundedImageView> icon_ = nullptr; + // A green checkmark animation shown when NotifyAuthSuccess called. + raw_ptr<views::AnimatedImageView> lottie_animation_view_; + + base::ScopedObservation<lottie::Animation, lottie::AnimationObserver> + scoped_animation_observer_{this}; + + base::OnceClosure on_success_animation_finished_; + + bool has_success_ = false; + // State: FingerprintState state_ = FingerprintState::UNAVAILABLE; bool has_pin_ = false;
diff --git a/ash/capture_mode/base_capture_mode_session.h b/ash/capture_mode/base_capture_mode_session.h index ff704734..e7a16ec 100644 --- a/ash/capture_mode/base_capture_mode_session.h +++ b/ash/capture_mode/base_capture_mode_session.h
@@ -10,6 +10,7 @@ #include "ash/capture_mode/capture_mode_controller.h" #include "ash/shell_observer.h" #include "ui/compositor/layer_owner.h" +#include "ui/views/controls/button/button.h" namespace ash { @@ -154,6 +155,11 @@ // the captured region as `image`. virtual void ShowSearchResultsPanel(const gfx::ImageSkia& image) = 0; + // Adds an action button below the selected region during an active session. + virtual void AddActionButton(views::Button::PressedCallback callback, + std::u16string text, + const gfx::VectorIcon* icon) = 0; + // ShellObserver: void OnRootWindowWillShutdown(aura::Window* root_window) override;
diff --git a/ash/capture_mode/capture_mode_session.cc b/ash/capture_mode/capture_mode_session.cc index c9e2c6c..3648816 100644 --- a/ash/capture_mode/capture_mode_session.cc +++ b/ash/capture_mode/capture_mode_session.cc
@@ -32,12 +32,14 @@ #include "ash/keyboard/ui/keyboard_ui_controller.h" #include "ash/public/cpp/resources/grit/ash_public_unscaled_resources.h" #include "ash/public/cpp/shell_window_ids.h" +#include "ash/resources/vector_icons/vector_icons.h" #include "ash/root_window_controller.h" #include "ash/shell.h" #include "ash/strings/grit/ash_strings.h" #include "ash/style/ash_color_id.h" #include "ash/style/color_util.h" #include "ash/style/icon_button.h" +#include "ash/style/pill_button.h" #include "ash/style/tab_slider_button.h" #include "ash/utility/cursor_setter.h" #include "ash/wm/tablet_mode/tablet_mode_controller.h" @@ -188,6 +190,9 @@ // The horizontal distance between action buttons in a row. constexpr int kActionButtonSpacing = 10; +// The corner radius for an action button. +constexpr int kActionButtonRadius = 18; + // Mouse cursor warping is disabled when the capture source is a custom region. // Sets the mouse warp status to |enable| and return the original value. bool SetMouseWarpEnabled(bool enable) { @@ -484,6 +489,59 @@ return widget_bounds; } +class ActionButtonView : public PillButton { + METADATA_HEADER(ActionButtonView, PillButton) + + public: + ActionButtonView(views::Button::PressedCallback callback, + std::u16string text, + const gfx::VectorIcon* icon) + : PillButton(std::move(callback), + text, + Type::kDefaultLargeWithIconLeading, + icon), + // Since this view has fully circular rounded corners, we can't use a + // nine patch layer for the shadow. We have to use the + // `ShadowOnTextureLayer`. For more info, see https://crbug.com/1308800. + shadow_(SystemShadow::CreateShadowOnTextureLayer( + SystemShadow::Type::kElevation12)) { + shadow_->SetRoundedCornerRadius(kActionButtonRadius); + capture_mode_util::SetHighlightBorder( + this, kActionButtonRadius, + views::HighlightBorder::Type::kHighlightBorderNoShadow); + } + ActionButtonView(const ActionButtonView&) = delete; + ActionButtonView& operator=(const ActionButtonView&) = delete; + ~ActionButtonView() override = default; + + // views::View: + void AddedToWidget() override { + PillButton::AddedToWidget(); + + // Attach the shadow at the bottom of the widget layer. + auto* shadow_layer = shadow_->GetLayer(); + auto* widget_layer = GetWidget()->GetLayer(); + widget_layer->Add(shadow_layer); + widget_layer->StackAtBottom(shadow_layer); + + // Make the shadow observe the color provider source change to update the + // colors. + shadow_->ObserveColorProviderSource(GetWidget()); + } + + void OnBoundsChanged(const gfx::Rect& previous_bounds) override { + // The shadow layer is a sibling of this view's layer, and should have the + // same bounds. + shadow_->SetContentBounds(layer()->bounds()); + } + + private: + std::unique_ptr<SystemShadow> shadow_; +}; + +BEGIN_METADATA(ActionButtonView) +END_METADATA + } // namespace // ----------------------------------------------------------------------------- @@ -1306,10 +1364,6 @@ void CaptureModeSession::ShowSearchResultsPanel(const gfx::ImageSkia& image) { DCHECK_EQ(active_behavior()->behavior_type(), BehaviorType::kSunfish); - // When we show the panel, we also want to update the action button container - // and any buttons that might be visible. - UpdateActionContainerWidget(); - if (!search_results_panel_widget_) { search_results_panel_widget_ = SearchResultsPanel::CreateWidget(current_root()); @@ -1320,6 +1374,27 @@ auto* search_results_panel = views::AsViewClass<SearchResultsPanel>( search_results_panel_widget_->GetContentsView()); search_results_panel->SetSearchBoxImage(image); + + UpdateActionContainerWidget(); +} + +void CaptureModeSession::AddActionButton( + views::Button::PressedCallback callback, + std::u16string text, + const gfx::VectorIcon* icon) { + // Another process may try to add an action button before the container is + // created, or while it is invalid. In these cases, we don't want to do + // anything. + if (!action_container_widget_) { + return; + } + + // TODO(http://b/368674223): Add a ranking when the button is added. + CHECK(action_container_view_); + action_container_view_->AddChildView(std::make_unique<ActionButtonView>( + std::move(callback), text, &kCaptureModeImageIcon)); + + UpdateActionContainerWidget(); } void CaptureModeSession::OnPaintLayer(const ui::PaintContext& context) { @@ -2202,6 +2277,10 @@ fine_tune_position_ = GetFineTunePosition(screen_location, is_touch); + // The capture region will be changing, so remove any existing action buttons, + // if any, as they will no longer be applicable. + RemoveAllActionButtons(); + if (fine_tune_position_ == FineTunePosition::kNone) { // If the point is outside the capture region and not on the capture bar or // settings menu, restart to the select phase. @@ -2664,62 +2743,6 @@ return capture_label_view_->ShouldHandleEvent(); } -// TODO(http://b/363069895): Upload strings for translation. -void CaptureModeSession::UpdateActionContainerWidget() { - CHECK(features::IsSunfishFeatureEnabled()); - - if (!action_container_widget_) { - action_container_widget_ = std::make_unique<views::Widget>(); - auto* parent = GetParentContainer(current_root_); - action_container_widget_->Init( - CreateWidgetParams(parent, gfx::Rect(), "ActionButtonsContainer")); - - action_container_widget_->SetContentsView( - views::Builder<views::BoxLayoutView>() - .CopyAddressTo(&action_container_view_) - .SetOrientation(views::BoxLayout::Orientation::kHorizontal) - .SetBetweenChildSpacing(kActionButtonSpacing) - .SetMainAxisAlignment(views::BoxLayout::MainAxisAlignment::kCenter) - .SetCrossAxisAlignment( - views::BoxLayout::CrossAxisAlignment::kStretch) - .Build()); - - action_container_widget_->Show(); - } - - UpdateActionContainerWidgetBounds(); -} - -void CaptureModeSession::UpdateActionContainerWidgetBounds() { - DCHECK(action_container_widget_); - - const gfx::Rect bounds = CalculateActionContainerWidgetBounds(); - const gfx::Rect old_bounds = - action_container_widget_->GetNativeWindow()->GetBoundsInScreen(); - if (old_bounds == bounds) { - return; - } - - action_container_widget_->SetBounds(bounds); -} - -gfx::Rect CaptureModeSession::CalculateActionContainerWidgetBounds() const { - DCHECK(action_container_widget_); - - const gfx::Size preferred_size = action_container_view_->GetPreferredSize(); - const gfx::Rect capture_bar_bounds = - action_container_widget_->GetNativeWindow()->bounds(); - - gfx::Rect bounds(current_root_->bounds()); - const gfx::Rect capture_region = controller_->user_capture_region(); - bounds = CalculateRegionEdgeBounds(preferred_size, capture_bar_bounds, - capture_region, current_root_); - - // User capture bounds are in root window coordinates so convert them here. - wm::ConvertRectToScreen(current_root_, &bounds); - return bounds; -} - void CaptureModeSession::UpdateRootWindowDimmers() { root_window_dimmers_.clear(); @@ -2955,6 +2978,65 @@ selected_window); } +// TODO(http://b/363069895): Upload strings for translation. +void CaptureModeSession::UpdateActionContainerWidget() { + DCHECK_EQ(active_behavior()->behavior_type(), BehaviorType::kSunfish); + + if (!action_container_widget_) { + action_container_widget_ = std::make_unique<views::Widget>(); + auto* parent = GetParentContainer(current_root_); + action_container_widget_->Init( + CreateWidgetParams(parent, gfx::Rect(), "ActionButtonsContainer")); + + action_container_widget_->SetContentsView( + views::Builder<views::BoxLayoutView>() + .CopyAddressTo(&action_container_view_) + .SetOrientation(views::BoxLayout::Orientation::kHorizontal) + .SetBetweenChildSpacing(kActionButtonSpacing) + .SetMainAxisAlignment(views::BoxLayout::MainAxisAlignment::kCenter) + .SetCrossAxisAlignment( + views::BoxLayout::CrossAxisAlignment::kStretch) + .Build()); + + action_container_widget_->Show(); + } + + UpdateActionContainerWidgetBounds(); +} + +void CaptureModeSession::UpdateActionContainerWidgetBounds() { + DCHECK(action_container_widget_); + + const gfx::Rect bounds = CalculateActionContainerWidgetBounds(); + if (bounds != action_container_widget_->GetWindowBoundsInScreen()) { + action_container_widget_->SetBounds(bounds); + } +} + +gfx::Rect CaptureModeSession::CalculateActionContainerWidgetBounds() const { + DCHECK(action_container_widget_); + + const gfx::Size preferred_size = action_container_view_->GetPreferredSize(); + const gfx::Rect capture_bar_bounds = + action_container_widget_->GetNativeWindow()->bounds(); + + const gfx::Rect capture_region = controller_->user_capture_region(); + gfx::Rect bounds = CalculateRegionEdgeBounds( + preferred_size, capture_bar_bounds, capture_region, current_root_); + + // User capture bounds are in root window coordinates so convert them here. + wm::ConvertRectToScreen(current_root_, &bounds); + return bounds; +} + +void CaptureModeSession::RemoveAllActionButtons() { + // Remove all children from the action button container, if the widget exists. + if (action_container_widget_) { + CHECK(action_container_view_); + action_container_view_->RemoveAllChildViews(); + } +} + void CaptureModeSession::InitInternal() { layer()->set_delegate(this); auto* parent = GetParentContainer(current_root_);
diff --git a/ash/capture_mode/capture_mode_session.h b/ash/capture_mode/capture_mode_session.h index 6e42a3b1..253c53f 100644 --- a/ash/capture_mode/capture_mode_session.h +++ b/ash/capture_mode/capture_mode_session.h
@@ -179,6 +179,9 @@ bool root_window_will_shutdown) override; std::set<aura::Window*> GetWindowsToIgnoreFromWidgets() override; void ShowSearchResultsPanel(const gfx::ImageSkia& image) override; + void AddActionButton(views::Button::PressedCallback callback, + std::u16string text, + const gfx::VectorIcon* icon) override; // ui::LayerDelegate: void OnPaintLayer(const ui::PaintContext& context) override; @@ -329,17 +332,6 @@ // child is visible. bool ShouldCaptureLabelHandleEvent(aura::Window* event_target); - // Creates the the action container widget if it wasn't previously created, - // and updates the widget's bounds. - void UpdateActionContainerWidget(); - - // Updates the action container widget's bounds. - void UpdateActionContainerWidgetBounds(); - - // Calculates the targeted action container widget bounds in screen - // coordinates. - gfx::Rect CalculateActionContainerWidgetBounds() const; - // Updates |root_window_dimmers_| to dim the correct root windows. void UpdateRootWindowDimmers(); @@ -401,6 +393,21 @@ // capturable window at `screen_point`. Returns false otherwise. bool IsPointOverSelectedWindow(const gfx::Point& screen_point) const; + // Creates the the action container widget if it wasn't previously created, + // and updates the widget's bounds. + void UpdateActionContainerWidget(); + + // Updates the action container widget's bounds. + void UpdateActionContainerWidgetBounds(); + + // Calculates the targeted action container widget bounds in screen + // coordinates. + gfx::Rect CalculateActionContainerWidgetBounds() const; + + // Removes any existing action buttons from `action_container_view_` if the + // `action_container_widget_` exists, + void RemoveAllActionButtons(); + // BaseCaptureModeSession: void InitInternal() override; void ShutdownInternal() override;
diff --git a/ash/capture_mode/capture_mode_session_test_api.cc b/ash/capture_mode/capture_mode_session_test_api.cc index 50a2363..11231a5 100644 --- a/ash/capture_mode/capture_mode_session_test_api.cc +++ b/ash/capture_mode/capture_mode_session_test_api.cc
@@ -8,6 +8,9 @@ #include "ash/capture_mode/capture_mode_session.h" #include "ash/capture_mode/capture_mode_types.h" #include "ash/capture_mode/recording_type_menu_view.h" +#include "ash/style/pill_button.h" +#include "ui/views/layout/box_layout_view.h" +#include "ui/views/view_utils.h" namespace ash { @@ -118,4 +121,20 @@ return session_->GetSelectedWindowTargetBounds(); } +std::vector<PillButton*> CaptureModeSessionTestApi::GetActionButtons() const { + std::vector<PillButton*> action_buttons; + + // The action container widget, and thus the container view, may not have been + // created yet when this function is called. In this case, return an empty + // vector. + if (session_->action_container_widget_) { + CHECK(session_->action_container_view_); + for (views::View* button : session_->action_container_view_->children()) { + action_buttons.emplace_back(views::AsViewClass<PillButton>(button)); + } + } + + return action_buttons; +} + } // namespace ash
diff --git a/ash/capture_mode/capture_mode_session_test_api.h b/ash/capture_mode/capture_mode_session_test_api.h index cf563cd..e382440 100644 --- a/ash/capture_mode/capture_mode_session_test_api.h +++ b/ash/capture_mode/capture_mode_session_test_api.h
@@ -19,6 +19,7 @@ class CaptureModeBarView; class CaptureModeSettingsView; class MagnifierGlass; +class PillButton; class RecordingTypeMenuView; class UserNudgeController; @@ -77,6 +78,10 @@ gfx::Rect GetSelectedWindowTargetBounds(); + // A vector of the current action buttons for a Sunfish session. Will return + // an empty vector if there are no buttons or there is no selected region. + std::vector<PillButton*> GetActionButtons() const; + private: const raw_ptr<CaptureModeSession, DanglingUntriaged> session_; };
diff --git a/ash/capture_mode/capture_mode_util.cc b/ash/capture_mode/capture_mode_util.cc index 19c20ee..3dd5a40 100644 --- a/ash/capture_mode/capture_mode_util.cc +++ b/ash/capture_mode/capture_mode_util.cc
@@ -585,4 +585,13 @@ return result; } +void AddActionButton(views::Button::PressedCallback callback, + std::u16string text, + const gfx::VectorIcon* icon) { + if (auto* controller = CaptureModeController::Get(); controller->IsActive()) { + controller->capture_mode_session()->AddActionButton(std::move(callback), + text, icon); + } +} + } // namespace ash::capture_mode_util
diff --git a/ash/capture_mode/capture_mode_util.h b/ash/capture_mode/capture_mode_util.h index 12657bc..f8d205b1 100644 --- a/ash/capture_mode/capture_mode_util.h +++ b/ash/capture_mode/capture_mode_util.h
@@ -14,6 +14,7 @@ #include "ui/gfx/animation/tween.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/size.h" +#include "ui/views/controls/button/button.h" #include "ui/views/highlight_border.h" namespace aura { @@ -236,6 +237,13 @@ const gfx::Rect& partial_region_bounds, aura::Window* root_window); +// TODO(http://b/368674223): Add some type of ordering mechanism to the API. +// Adds a new action button to a sunfish capture session if the session is +// active. +ASH_EXPORT void AddActionButton(views::Button::PressedCallback callback, + std::u16string text, + const gfx::VectorIcon* icon); + } // namespace capture_mode_util } // namespace ash
diff --git a/ash/capture_mode/null_capture_mode_session.cc b/ash/capture_mode/null_capture_mode_session.cc index a28b735f..cebc847c 100644 --- a/ash/capture_mode/null_capture_mode_session.cc +++ b/ash/capture_mode/null_capture_mode_session.cc
@@ -116,6 +116,11 @@ void NullCaptureModeSession::ShowSearchResultsPanel( const gfx::ImageSkia& image) {} +void NullCaptureModeSession::AddActionButton( + views::Button::PressedCallback callback, + std::u16string text, + const gfx::VectorIcon* icon) {} + void NullCaptureModeSession::InitInternal() { layer()->SetName("NullCaptureModeSession"); }
diff --git a/ash/capture_mode/null_capture_mode_session.h b/ash/capture_mode/null_capture_mode_session.h index de1e67b..42b4120 100644 --- a/ash/capture_mode/null_capture_mode_session.h +++ b/ash/capture_mode/null_capture_mode_session.h
@@ -49,6 +49,9 @@ bool root_window_will_shutdown) override; std::set<aura::Window*> GetWindowsToIgnoreFromWidgets() override; void ShowSearchResultsPanel(const gfx::ImageSkia& image) override; + void AddActionButton(views::Button::PressedCallback callback, + std::u16string text, + const gfx::VectorIcon* icon) override; private: // CaptureModeSession:
diff --git a/ash/capture_mode/sunfish_unittest.cc b/ash/capture_mode/sunfish_unittest.cc index 105217a9e..66b0c63 100644 --- a/ash/capture_mode/sunfish_unittest.cc +++ b/ash/capture_mode/sunfish_unittest.cc
@@ -10,16 +10,20 @@ #include "ash/capture_mode/capture_mode_session.h" #include "ash/capture_mode/capture_mode_session_test_api.h" #include "ash/capture_mode/capture_mode_test_util.h" +#include "ash/capture_mode/capture_mode_util.h" #include "ash/capture_mode/search_results_panel.h" #include "ash/capture_mode/sunfish_capture_bar_view.h" #include "ash/capture_mode/test_capture_mode_delegate.h" #include "ash/constants/ash_features.h" #include "ash/constants/ash_switches.h" #include "ash/public/cpp/capture_mode/capture_mode_test_api.h" +#include "ash/resources/vector_icons/vector_icons.h" #include "ash/scanner/scanner_controller.h" #include "ash/shell.h" #include "ash/style/icon_button.h" +#include "ash/style/pill_button.h" #include "ash/test/ash_test_base.h" +#include "ash/test/ash_test_util.h" #include "ash/test/test_ash_web_view_factory.h" #include "base/auto_reset.h" #include "base/test/bind.h" @@ -108,7 +112,7 @@ // Immediately upon region selection, `PerformImageSearch()` and // `OnCaptureImageAttempted()` will be called once. SelectCaptureModeRegion(GetEventGenerator(), gfx::Rect(100, 100, 600, 500), - /*release_mouse=*/true, /*proceed=*/true); + /*release_mouse=*/true, /*verify_region=*/true); ASSERT_FALSE(capture_button->GetVisible()); ASSERT_FALSE(capture_label->GetVisible()); auto* test_delegate = @@ -131,7 +135,7 @@ CaptureModeSessionTestApi test_api(session); SelectCaptureModeRegion(GetEventGenerator(), gfx::Rect(100, 100, 600, 500), - /*release_mouse=*/true, /*proceed=*/true); + /*release_mouse=*/true, /*verify_region=*/true); WaitForImageCapturedForSearch(); EXPECT_TRUE(session->search_results_panel_widget()); @@ -192,7 +196,7 @@ // Tests after selecting a region, the session is ended. auto* event_generator = GetEventGenerator(); SelectCaptureModeRegion(event_generator, gfx::Rect(100, 100, 600, 500), - /*release_mouse=*/true, /*proceed=*/false); + /*release_mouse=*/true, /*verify_region=*/false); EXPECT_FALSE(controller->IsActive()); test_delegate->set_is_allowed_by_dlp(true); } @@ -434,7 +438,7 @@ // Test we can select a region and show the search results panel. SelectCaptureModeRegion(GetEventGenerator(), gfx::Rect(100, 100, 600, 500), - /*release_mouse=*/true, /*proceed=*/true); + /*release_mouse=*/true, /*verify_region=*/true); WaitForImageCapturedForSearch(); EXPECT_TRUE(session->search_results_panel_widget()); @@ -467,6 +471,52 @@ VerifyActiveBehavior(BehaviorType::kSunfish); } +// Tests that while a sunfish session has a region selected, calling the API +// will successfully create a new action button. +TEST_F(SunfishTest, AddActionButton) { + auto* controller = CaptureModeController::Get(); + controller->StartSunfishSession(); + ASSERT_TRUE(controller->IsActive()); + auto* session = + static_cast<CaptureModeSession*>(controller->capture_mode_session()); + + CaptureModeSessionTestApi session_test_api( + controller->capture_mode_session()); + EXPECT_EQ(session_test_api.GetActionButtons().size(), 0u); + + // Attempt to add a new action button using the API. + capture_mode_util::AddActionButton(views::Button::PressedCallback(), + u"Do not show", &kCaptureModeImageIcon); + + // The region has not been selected yet, so attempting to add a button should + // do nothing. + EXPECT_EQ(session_test_api.GetActionButtons().size(), 0u); + + // Select a region on the far left of the screen so we have space for the + // button between it and the search results panel. + SelectCaptureModeRegion(GetEventGenerator(), gfx::Rect(0, 0, 50, 200), + /*release_mouse=*/true, /*verify_region=*/true); + WaitForImageCapturedForSearch(); + EXPECT_TRUE(session->search_results_panel_widget()); + + // Create another action button that, when clicked, will change the value of a + // bool that can be verified later. + bool pressed = false; + capture_mode_util::AddActionButton( + base::BindLambdaForTesting([&]() { pressed = true; }), u"Test", + &kCaptureModeImageIcon); + + // There should only be one valid button in the session. + const std::vector<PillButton*> action_buttons = + session_test_api.GetActionButtons(); + EXPECT_EQ(action_buttons.size(), 1u); + + // Clicking the button should successfully run the callback, and change the + // value of the bool. + LeftClickOn(action_buttons[0]); + ASSERT_TRUE(pressed); +} + class SunfishWithScannerTest : public SunfishTest { public: SunfishWithScannerTest() = default;
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc index 0804a09..49763b4 100644 --- a/ash/constants/ash_features.cc +++ b/ash/constants/ash_features.cc
@@ -381,10 +381,8 @@ // shortcut and feature tile. BASE_FEATURE(kCaptureModeEducation, "CaptureModeEducation", - base::FEATURE_ENABLED_BY_DEFAULT); + base::FEATURE_DISABLED_BY_DEFAULT); -// TODO(hewer): Remove the unused paths after at least one milestone after -// Capture Mode Education has been enabled by default. // Determines how we educate the user to the screen capture entry points. constexpr base::FeatureParam<CaptureModeEducationParam>::Option capture_mode_education_type_options[] = {
diff --git a/ash/webui/common/resources/BUILD.gn b/ash/webui/common/resources/BUILD.gn index 45342ff8..1461c2f0 100644 --- a/ash/webui/common/resources/BUILD.gn +++ b/ash/webui/common/resources/BUILD.gn
@@ -47,7 +47,6 @@ "network/network_property_list_mojo.js", "network/network_proxy_exclusions.js", "network/network_proxy_input.js", - "network/network_proxy.js", "network/network_select.js", "network/sim_lock_dialogs.js", "network/apn_detail_dialog.js", @@ -113,6 +112,7 @@ "bluetooth/bluetooth_pairing_ui.ts", "bluetooth/bluetooth_spinner_page.ts", "network/network_nameservers.ts", + "network/network_proxy.ts", "network/network_siminfo.ts", "network_health/network_diagnostics.ts", "network_health/network_health_container.ts", @@ -454,6 +454,7 @@ "network/network_config_element_behavior.js", "network/network_listener_behavior.js", "network/network_nameservers.html.js", + "network/network_proxy.html.js", "network/network_proxy_exclusions.html.js", "network/network_proxy_exclusions.js", "network/network_proxy_input.html.js", @@ -546,7 +547,6 @@ "network/network_list_types.d.ts", "network/network_password_input.d.ts", "network/network_property_list_mojo.d.ts", - "network/network_proxy.d.ts", "network/network_select.d.ts", "network/sim_lock_dialogs.d.ts",
diff --git a/ash/webui/common/resources/network/BUILD.gn b/ash/webui/common/resources/network/BUILD.gn index 7ffe5e5..64cd0322 100644 --- a/ash/webui/common/resources/network/BUILD.gn +++ b/ash/webui/common/resources/network/BUILD.gn
@@ -35,7 +35,6 @@ ":network_listener_behavior", ":network_password_input", ":network_property_list_mojo", - ":network_proxy", ":network_proxy_exclusions", ":network_proxy_input", ":network_select", @@ -312,24 +311,6 @@ ] } -js_library("network_proxy") { - deps = [ - ":cr_policy_network_behavior_mojo", - ":network_proxy_exclusions", - ":network_proxy_input", - ":onc_mojo", - "//ash/webui/common/resources:assert", - "//ash/webui/common/resources:i18n_behavior", - "//third_party/polymer/v3_0/components-chromium/iron-flex-layout:iron-flex-layout-classes", - "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", - ] - externs_list = [ - "//ash/webui/common/resources/cr_elements/cr_button/cr_button_externs.js", - "//ash/webui/common/resources/cr_elements/cr_input/cr_input_externs.js", - "//ash/webui/common/resources/cr_elements/cr_toggle/cr_toggle_externs.js", - ] -} - js_library("network_proxy_exclusions") { deps = [ "//ash/webui/common/resources:i18n_behavior",
diff --git a/ash/webui/common/resources/network/network_proxy.d.ts b/ash/webui/common/resources/network/network_proxy.d.ts deleted file mode 100644 index c567313..0000000 --- a/ash/webui/common/resources/network/network_proxy.d.ts +++ /dev/null
@@ -1,10 +0,0 @@ -// Copyright 2022 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import {LegacyElementMixin} from '//resources/polymer/v3_0/polymer/lib/legacy/legacy-element-mixin.js'; -interface NetworkProxyElement extends LegacyElementMixin, HTMLElement { - editable: boolean; - reset(): void; -} -export {NetworkProxyElement};
diff --git a/ash/webui/common/resources/network/network_proxy.html b/ash/webui/common/resources/network/network_proxy.html index 10f636c0..121a8ed 100644 --- a/ash/webui/common/resources/network/network_proxy.html +++ b/ash/webui/common/resources/network/network_proxy.html
@@ -40,7 +40,7 @@ hidden$="[[!matches_(proxy_.type.activeValue, 'PAC')]]"> <cr-input id="pacInput" class="flex" label="[[i18n('networkProxyAutoConfig')]]" - value="{{proxy_.pac.activeValue}}" on-change="onPACChange_" + value="{{proxy_.pac.activeValue}}" on-change="onPacChange_" disabled="[[!isEditable_('pac', managedProperties, editable, useSharedProxies)]]"> </cr-input> @@ -120,7 +120,7 @@ aria-label="[[i18n('networkProxyExceptionInputA11yLabel')]]" on-keypress="onAddProxyExclusionKeypress_"> <cr-button id="proxyExclusionButton" - on-click="onAddProxyExclusionTap_" + on-click="onAddProxyExclusionClicked_" slot="suffix" disabled="[[shouldProxyExclusionButtonBeDisabled_( proxyExclusionInputValue_)]]"> @@ -131,7 +131,7 @@ </div> <cr-button id="saveManualProxy" - on-click="onSaveProxyTap_" class="action-button" + on-click="onSaveProxyClicked_" class="action-button" disabled="[[!isSaveManualProxyEnabled_(managedProperties, proxyIsUserModified_, proxy_.*)]]"> [[i18n('save')]]
diff --git a/ash/webui/common/resources/network/network_proxy.js b/ash/webui/common/resources/network/network_proxy.ts similarity index 66% rename from ash/webui/common/resources/network/network_proxy.js rename to ash/webui/common/resources/network/network_proxy.ts index b37a9a7f..432f8e70 100644 --- a/ash/webui/common/resources/network/network_proxy.js +++ b/ash/webui/common/resources/network/network_proxy.ts
@@ -17,30 +17,35 @@ import './network_proxy_input.js'; import './network_shared.css.js'; -import {assert} from '//resources/ash/common/assert.js'; -import {I18nBehavior, I18nBehaviorInterface} from '//resources/ash/common/i18n_behavior.js'; -import {ManagedManualProxySettings, ManagedProperties, ManagedProxyLocation, ManagedProxySettings, ManagedStringList, ProxyLocation, ProxySettings} from '//resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; -import {IPConfigType, OncSource, PolicySource} from '//resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js'; -import {mixinBehaviors, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -import {microTask} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {I18nMixin, I18nMixinInterface} from 'chrome://resources/ash/common/cr_elements/i18n_mixin.js'; +import {assert} from 'chrome://resources/js/assert.js'; +import {ManagedManualProxySettings, ManagedProperties, ManagedProxyLocation, ManagedProxySettings, ManagedStringList, ManualProxySettings, ProxyLocation, ProxySettings} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; +import {IPConfigType, OncSource, PolicySource} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js'; +import {microTask, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {CrPolicyNetworkBehaviorMojo, CrPolicyNetworkBehaviorMojoInterface} from './cr_policy_network_behavior_mojo.js'; import {getTemplate} from './network_proxy.html.js'; import {OncMojo} from './onc_mojo.js'; -/** - * @constructor - * @extends {PolymerElement} - * @implements {I18nBehaviorInterface} - * @implements {CrPolicyNetworkBehaviorMojoInterface} - */ -const NetworkProxyElementBase = - mixinBehaviors([CrPolicyNetworkBehaviorMojo, I18nBehavior], PolymerElement); +function createDefaultProxySettings(): ManagedProxySettings { + return { + type: OncMojo.createManagedString('Direct'), + manual: undefined, + excludeDomains: undefined, + pac: undefined, + }; +} -/** @polymer */ -class NetworkProxyElement extends NetworkProxyElementBase { +type Constructor<T> = new (...args: any[]) => T; + +const NetworkProxyElementBase = + mixinBehaviors([CrPolicyNetworkBehaviorMojo], I18nMixin(PolymerElement)) as + Constructor<PolymerElement&I18nMixinInterface& + CrPolicyNetworkBehaviorMojoInterface>; + +export class NetworkProxyElement extends NetworkProxyElementBase { static get is() { - return 'network-proxy'; + return 'network-proxy' as const; } static get template() { @@ -55,7 +60,6 @@ value: false, }, - /** @type {!ManagedProperties|undefined} */ managedProperties: { type: Object, observer: 'managedPropertiesChanged_', @@ -70,18 +74,16 @@ /** * UI visible / edited proxy configuration. - * @private {!ManagedProxySettings} */ proxy_: { type: Object, value() { - return this.createDefaultProxySettings_(); + return createDefaultProxySettings(); }, }, /** * The Web Proxy Auto Discovery URL extracted from managedProperties. - * @private */ wpad_: { type: String, @@ -90,7 +92,6 @@ /** * Whether or not to use the same manual proxy for all protocols. - * @private */ useSameProxy_: { type: Boolean, @@ -100,8 +101,6 @@ /** * Array of proxy configuration types. - * @private {!Array<string>} - * @const */ proxyTypes_: { type: Array, @@ -111,7 +110,6 @@ /** * The current value of the proxy exclusion input. - * @private */ proxyExclusionInputValue_: { type: String, @@ -121,7 +119,6 @@ /** * Set to true while modifying proxy values so that an update does not * override the edited values. - * @private {boolean} */ proxyIsUserModified_: { type: Boolean, @@ -131,23 +128,30 @@ }; } - /** @override */ - connectedCallback() { + editable: boolean; + managedProperties: ManagedProperties|undefined; + useSharedProxies: boolean; + private proxy_: ManagedProxySettings; + private wpad_: string; + private useSameProxy_: boolean; + private proxyTypes_: []; + private proxyExclusionInputValue_: string; + private proxyIsUserModified_: boolean; + + /** + * Saved ExcludeDomains properties so that switching to a non-Manual type + * does not loose any set exclusions while the UI is open. + */ + private savedManual_: ManagedManualProxySettings|undefined = undefined; + + /** + * Saved Manual properties so that switching to another type does not loose + * any set properties while the UI is open. + */ + private savedExcludeDomains_: ManagedStringList|undefined = undefined; + + override connectedCallback() { super.connectedCallback(); - - /** - * Saved ExcludeDomains properties so that switching to a non-Manual type - * does not loose any set exclusions while the UI is open. - * @private {!ManagedManualProxySettings|undefined} - */ - this.savedManual_ = undefined; - - /** - * Saved Manual properties so that switching to another type does not loose - * any set properties while the UI is open. - * @private {!ManagedStringList|undefined} - */ - this.savedExcludeDomains_ = undefined; this.reset(); } @@ -160,12 +164,9 @@ this.updateProxy_(); } - /** - * @param {!ManagedProperties|undefined} newValue - * @param {!ManagedProperties|undefined} oldValue - * @private - */ - managedPropertiesChanged_(newValue, oldValue) { + private managedPropertiesChanged_( + newValue: ManagedProperties|undefined, + oldValue: ManagedProperties|undefined) { if ((newValue && newValue.guid) !== (oldValue && oldValue.guid)) { // Clear saved manual properties and exclude domains if we're updating // to show a different network. @@ -181,15 +182,11 @@ this.updateProxy_(); } - /** - * @return {boolean} True if any input elements are currently being edited. - * @private - */ - isInputEditInProgress_() { + private isInputEditInProgress_(): boolean { if (!this.editable) { return false; } - const activeElement = this.shadowRoot.activeElement; + const activeElement = this.shadowRoot!.activeElement; if (!activeElement) { return false; } @@ -219,23 +216,14 @@ return this.isEditable_(property); } - /** - * @param {?ManagedProxyLocation|undefined} a - * @param {?ManagedProxyLocation|undefined} b - * @return {boolean} - * @private - */ - proxyMatches_(a, b) { + private proxyMatches_( + a: ManagedProxyLocation|undefined|null, + b: ManagedProxyLocation|undefined|null): boolean { return !!a && !!b && a.host.activeValue === b.host.activeValue && a.port.activeValue === b.port.activeValue; } - /** - * @param {number} port - * @return {!ManagedProxyLocation} - * @private - */ - createDefaultProxyLocation_(port) { + private createDefaultProxyLocation_(port: number): ManagedProxyLocation { return { host: OncMojo.createManagedString(''), port: OncMojo.createManagedInt(port), @@ -244,20 +232,19 @@ /** * Returns a copy of |inputProxy| with all required properties set correctly. - * @param {!ManagedProxySettings} inputProxy - * @return {!ManagedProxySettings} - * @private */ - validateProxy_(inputProxy) { - const proxy = - /** @type {!ManagedProxySettings} */ (Object.assign({}, inputProxy)); + private validateProxy_(inputProxy: ManagedProxySettings): + ManagedProxySettings { + const proxy = {...inputProxy}; const type = proxy.type.activeValue; if (type === 'PAC') { if (!proxy.pac) { proxy.pac = OncMojo.createManagedString(''); } } else if (type === 'Manual') { - proxy.manual = proxy.manual || this.savedManual_ || {}; + proxy.manual = + proxy.manual || this.savedManual_ || new ManagedManualProxySettings(); + assert(proxy.manual); if (!proxy.manual.httpProxy) { proxy.manual.httpProxy = this.createDefaultProxyLocation_(80); } @@ -271,13 +258,13 @@ proxy.excludeDomains || this.savedExcludeDomains_ || { activeValue: [], policySource: PolicySource.kNone, + policyValue: undefined, }; } return proxy; } - /** @private */ - updateProxy_() { + private updateProxy_(): void { if (!this.managedProperties) { return; } @@ -288,11 +275,11 @@ // settings and use the default value. if (this.isShared_() && proxySettings && !this.isControlled(proxySettings.type) && !this.useSharedProxies) { - proxySettings = null; // Ignore proxy settings. + proxySettings = undefined; // Ignore proxy settings. } const proxy = proxySettings ? this.validateProxy_(proxySettings) : - this.createDefaultProxySettings_(); + createDefaultProxySettings(); if (proxy.type.activeValue === 'WPAD') { // Set the Web Proxy Auto Discovery URL for display purposes. @@ -308,11 +295,7 @@ microTask.run(() => this.setProxy_(proxy)); } - /** - * @param {!ManagedProxySettings} proxy - * @private - */ - setProxy_(proxy) { + private setProxy_(proxy: ManagedProxySettings): void { this.proxy_ = proxy; if (proxy.manual) { const manual = proxy.manual; @@ -322,8 +305,8 @@ // If all four proxies match, enable the 'use same proxy' toggle. this.useSameProxy_ = true; } else if ( - !manual.secureHttpProxy.host.activeValue && - !manual.socks.host.activeValue) { + !manual.secureHttpProxy?.host?.activeValue && + !manual.socks?.host?.activeValue) { // Otherwise if no proxies other than http have a host value, also // enable the 'use same proxy' toggle. this.useSameProxy_ = true; @@ -332,28 +315,12 @@ this.proxyIsUserModified_ = false; } - /** @private */ - useSameProxyChanged_() { + private useSameProxyChanged_(): void { this.proxyIsUserModified_ = true; } - /** - * @return {!ManagedProxySettings} - * @private - */ - createDefaultProxySettings_() { - return { - type: OncMojo.createManagedString('Direct'), - }; - } - - /** - * @param {?ManagedProxyLocation|undefined} - * location - * @return {!ProxyLocation|undefined} - * @private - */ - getProxyLocation_(location) { + private getProxyLocation_(location: ManagedProxyLocation|undefined| + null): ProxyLocation|undefined { if (!location) { return undefined; } @@ -365,43 +332,38 @@ /** * Called when the proxy changes in the UI. - * @private */ - sendProxyChange_() { + private sendProxyChange_(): void { const proxyType = OncMojo.getActiveString(this.proxy_.type); if (!proxyType || (proxyType === 'PAC' && !this.proxy_.pac)) { return; } - const proxy = /** @type {!ProxySettings} */ ({ - type: proxyType, - excludeDomains: OncMojo.getActiveValue(this.proxy_.excludeDomains), - }); + const proxy = new ProxySettings(); + proxy.type = proxyType; + proxy.excludeDomains = + OncMojo.getActiveValue(this.proxy_.excludeDomains) as string[] | + undefined; if (proxyType === 'Manual') { - let manual = {}; + let manual = new ManualProxySettings(); if (this.proxy_.manual) { - this.savedManual_ = - /** @type{!ManagedManualProxySettings}*/ ( - Object.assign({}, this.proxy_.manual)); + this.savedManual_ = {...this.proxy_.manual}; manual = { httpProxy: this.getProxyLocation_(this.proxy_.manual.httpProxy), secureHttpProxy: this.getProxyLocation_(this.proxy_.manual.secureHttpProxy), + ftpProxy: undefined, socks: this.getProxyLocation_(this.proxy_.manual.socks), }; } if (this.proxy_.excludeDomains) { - this.savedExcludeDomains_ = - /** @type{!ManagedStringList}*/ ( - Object.assign({}, this.proxy_.excludeDomains)); + this.savedExcludeDomains_ = {...this.proxy_.excludeDomains}; } const defaultProxy = manual.httpProxy || {host: '', port: 80}; if (this.useSameProxy_) { - manual.secureHttpProxy = - /** @type {!ProxyLocation} */ (Object.assign({}, defaultProxy)); - manual.socks = - /** @type {!ProxyLocation} */ (Object.assign({}, defaultProxy)); + manual.secureHttpProxy = {...defaultProxy}; + manual.socks = {...defaultProxy}; } else { // Remove properties with empty hosts to unset them. if (manual.httpProxy && !manual.httpProxy.host) { @@ -428,14 +390,12 @@ /** * Event triggered when the selected proxy type changes. - * @param {!Event} event - * @private */ - onTypeChange_(event) { + private onTypeChange_(event: Event): void { if (!this.proxy_ || !this.proxy_.type) { return; } - const target = /** @type {!HTMLSelectElement} */ (event.target); + const target = event.target as HTMLSelectElement; const type = target.value; this.proxy_.type.activeValue = type; this.set('proxy_', this.validateProxy_(this.proxy_)); @@ -448,7 +408,7 @@ proxyTypeChangeIsReady = true; break; case 'PAC': - elementToFocus = this.shadowRoot.querySelector('#pacInput'); + elementToFocus = this.shadowRoot!.querySelector('#pacInput'); // If a PAC is already set, send the type change now, otherwise wait // until the user provides a PAC value. proxyTypeChangeIsReady = !!OncMojo.getActiveString(this.proxy_.pac); @@ -458,7 +418,7 @@ // until the 'send' button is clicked. proxyTypeChangeIsReady = false; elementToFocus = - this.shadowRoot.querySelector('#manualProxy network-proxy-input'); + this.shadowRoot!.querySelector('#manualProxy network-proxy-input'); break; } @@ -476,18 +436,15 @@ } } - /** @private */ - onPACChange_() { + private onPacChange_(): void { this.sendProxyChange_(); } - /** @private */ - onProxyInputChange_() { + private onProxyInputChange_(): void { this.proxyIsUserModified_ = true; } - /** @private */ - onAddProxyExclusionTap_() { + private onAddProxyExclusionClicked_(): void { assert(this.proxyExclusionInputValue_); this.push( 'proxy_.excludeDomains.activeValue', this.proxyExclusionInputValue_); @@ -496,47 +453,31 @@ this.proxyIsUserModified_ = true; } - /** - * @param {!Event} event - * @private - */ - onAddProxyExclusionKeypress_(event) { + private onAddProxyExclusionKeypress_(event: KeyboardEvent): void { if (event.key !== 'Enter') { return; } event.stopPropagation(); - this.onAddProxyExclusionTap_(); + this.onAddProxyExclusionClicked_(); } - /** - * @param {string} proxyExclusionInputValue - * @return {boolean} - * @private - */ - shouldProxyExclusionButtonBeDisabled_(proxyExclusionInputValue) { + private shouldProxyExclusionButtonBeDisabled_(proxyExclusionInputValue: + string): boolean { return !proxyExclusionInputValue; } /** * Event triggered when the proxy exclusion list changes. - * @param {!Event} event The remove proxy exclusions change event. - * @private */ - onProxyExclusionsChange_(event) { + private onProxyExclusionsChange_(): void { this.proxyIsUserModified_ = true; } - /** @private */ - onSaveProxyTap_() { + private onSaveProxyClicked_(): void { this.sendProxyChange_(); } - /** - * @param {string} proxyType The proxy type. - * @return {string} The description for |proxyType|. - * @private - */ - getProxyTypeDesc_(proxyType) { + private getProxyTypeDesc_(proxyType: string): string { if (proxyType === 'Manual') { return this.i18n('networkProxyTypeManual'); } @@ -549,38 +490,25 @@ return this.i18n('networkProxyTypeDirect'); } - /** - * @param {string} propertyName - * @return {boolean} Whether the named property setting is editable. - * @private - */ - isEditable_(propertyName) { + private isEditable_(propertyName: string): boolean { if (!this.editable || (this.isShared_() && !this.useSharedProxies)) { return false; } - const property = /** @type {!OncMojo.ManagedProperty|undefined} */ ( - this.get('proxySettings.' + propertyName, this.managedProperties)); + const property = + this.get('proxySettings.' + propertyName, this.managedProperties); if (!property) { return true; // Default to editable if property is not defined. } return this.isPropertyEditable_(property); } - /** - * @param {!OncMojo.ManagedProperty|undefined} property - * @return {boolean} Whether |property| is editable. - * @private - */ - isPropertyEditable_(property) { + private isPropertyEditable_(property: OncMojo.ManagedProperty| + undefined): boolean { return !!property && !this.isNetworkPolicyEnforced(property) && !this.isExtensionControlled(property); } - /** - * @return {boolean} - * @private - */ - isShared_() { + private isShared_(): boolean { if (!this.managedProperties) { return false; } @@ -588,11 +516,7 @@ return source === OncSource.kDevice || source === OncSource.kDevicePolicy; } - /** - * @return {boolean} - * @private - */ - isSaveManualProxyEnabled_() { + private isSaveManualProxyEnabled_(): boolean { if (!this.proxyIsUserModified_) { return false; } @@ -606,13 +530,7 @@ !!this.get('socks.host.activeValue', manual); } - /** - * @param {string} property The property to test - * @param {string} value The value to test against - * @return {boolean} True if property === value - * @private - */ - matches_(property, value) { + private matches_(property: string, value: string): boolean { return property === value; } }
diff --git a/ash/webui/demo_mode_app_ui/resources/demo_mode_metrics_service.js b/ash/webui/demo_mode_app_ui/resources/demo_mode_metrics_service.js index 914b5d2..5eee8a8 100644 --- a/ash/webui/demo_mode_app_ui/resources/demo_mode_metrics_service.js +++ b/ash/webui/demo_mode_app_ui/resources/demo_mode_metrics_service.js
@@ -81,6 +81,11 @@ // Enum shared between CB & CBX are: BATTERY, GOOGLE_APPS, NEARBY_SHARE, // MESSAGING, BUILT_IN_SECURITY,MS_365_APPS, SWITCHING, COMPARISON + + // New in 2024 Cycle 2 refresh + // CBX: + HELP_ME_READ: 'HelpMeRead', + LIVE_TRANSLATE: 'LiveTranslate', }; /**
diff --git a/base/allocator/partition_allocator/partition_alloc.gni b/base/allocator/partition_allocator/partition_alloc.gni index b78f042..423c081 100644 --- a/base/allocator/partition_allocator/partition_alloc.gni +++ b/base/allocator/partition_allocator/partition_alloc.gni
@@ -286,12 +286,21 @@ # PartitionAlloc at all. If `use_partition_alloc` is false, we jam all # related args to `false`. # +# We also disable PA-Everywhere and PA-based features in two types of +# toolchains: +# - Toolchains that disable PA-Everywhere explicitly. +# - The rust host build tools toochain, which builds DLLs to dlopen into the +# compiler for proc macros. We would want any allocations to use the same +# paths as the compiler. +# # Do not clear the following, as they can function outside of PartitionAlloc # - has_64_bit_pointers # - has_memory_tagging if (!use_partition_alloc || (defined(toolchain_allows_use_partition_alloc_as_malloc) && - !toolchain_allows_use_partition_alloc_as_malloc)) { + !toolchain_allows_use_partition_alloc_as_malloc) || + (defined(toolchain_for_rust_host_build_tools) && + toolchain_for_rust_host_build_tools)) { use_partition_alloc_as_malloc = false glue_core_pools = false enable_backup_ref_ptr_support = false
diff --git a/base/android/javatests/src/org/chromium/base/task/ChainedTasksTest.java b/base/android/javatests/src/org/chromium/base/task/ChainedTasksTest.java index e60442c..9c0b5df 100644 --- a/base/android/javatests/src/org/chromium/base/task/ChainedTasksTest.java +++ b/base/android/javatests/src/org/chromium/base/task/ChainedTasksTest.java
@@ -132,7 +132,7 @@ secondTaskFinished.notifyCalled(); waitForHighPriorityTask.waitForOnly(); } catch (TimeoutException e) { - Assert.fail(); + throw new RuntimeException(e); } }); tasks.add(TaskTraits.UI_DEFAULT, new TestRunnable(messages, "Third"));
diff --git a/base/android/junit/src/org/chromium/base/UnownedUserDataKeyTest.java b/base/android/junit/src/org/chromium/base/UnownedUserDataKeyTest.java index 69431443..66ad3c1 100644 --- a/base/android/junit/src/org/chromium/base/UnownedUserDataKeyTest.java +++ b/base/android/junit/src/org/chromium/base/UnownedUserDataKeyTest.java
@@ -124,6 +124,7 @@ mHost2 = null; } + @SuppressWarnings({"SelfAssertion", "JUnitIncompatibleType"}) @Test public void testKeyEquality() { assertEquals(Foo.KEY, Foo.KEY);
diff --git a/base/hash/sha1_boringssl.cc b/base/hash/sha1_boringssl.cc index 957ee47e..90eeac7 100644 --- a/base/hash/sha1_boringssl.cc +++ b/base/hash/sha1_boringssl.cc
@@ -36,7 +36,7 @@ SHA1_Init(&context); } -void SHA1Update(const std::string_view data, SHA1Context& context) { +void SHA1Update(std::string_view data, SHA1Context& context) { SHA1_Update(&context, data.data(), data.size()); }
diff --git a/base/test/launcher/test_launcher.cc b/base/test/launcher/test_launcher.cc index 633a4875..99cf980 100644 --- a/base/test/launcher/test_launcher.cc +++ b/base/test/launcher/test_launcher.cc
@@ -962,7 +962,7 @@ // Truncates a snippet in the middle to the given byte limit. byte_limit should // be at least 30. -std::string TruncateSnippet(const std::string_view snippet, size_t byte_limit) { +std::string TruncateSnippet(std::string_view snippet, size_t byte_limit) { if (snippet.length() <= byte_limit) { return std::string(snippet); } @@ -2385,7 +2385,7 @@ return snippet; } -std::string TruncateSnippetFocused(const std::string_view snippet, +std::string TruncateSnippetFocused(std::string_view snippet, size_t byte_limit) { // Find the start of anything that looks like a fatal log message. // We want to preferentially preserve these from truncation as we
diff --git a/base/test/launcher/test_launcher.h b/base/test/launcher/test_launcher.h index 3d71a6f..ffae4e7 100644 --- a/base/test/launcher/test_launcher.h +++ b/base/test/launcher/test_launcher.h
@@ -393,8 +393,7 @@ // Truncates a snippet to approximately the allowed length, while trying to // retain fatal messages. Exposed for testing only. -std::string TruncateSnippetFocused(const std::string_view snippet, - size_t byte_limit); +std::string TruncateSnippetFocused(std::string_view snippet, size_t byte_limit); } // namespace base
diff --git a/base/test/scoped_feature_list_unittest.cc b/base/test/scoped_feature_list_unittest.cc index b98223b6..60fe222 100644 --- a/base/test/scoped_feature_list_unittest.cc +++ b/base/test/scoped_feature_list_unittest.cc
@@ -39,7 +39,7 @@ EXPECT_EQ(disabled_features, actual_disabled_features); } -std::string GetActiveFieldTrialGroupName(const std::string trial_name) { +std::string GetActiveFieldTrialGroupName(const std::string& trial_name) { FieldTrial::ActiveGroups groups; FieldTrialList::GetActiveFieldTrialGroups(&groups); for (const auto& group : groups) {
diff --git a/base/test/test_proto_loader.cc b/base/test/test_proto_loader.cc index 8ee91dfd..01acd65a 100644 --- a/base/test/test_proto_loader.cc +++ b/base/test/test_proto_loader.cc
@@ -63,7 +63,7 @@ TestProtoSetLoader::~TestProtoSetLoader() = default; std::string TestProtoSetLoader::ParseFromText( - const std::string_view type_name, + std::string_view type_name, const std::string& proto_text) const { // Create a message of the given type, parse, and return. std::unique_ptr<google::protobuf::Message> message = @@ -74,7 +74,7 @@ } std::string TestProtoSetLoader::PrintToText( - const std::string_view type_name, + std::string_view type_name, const std::string& serialized_message) const { // Create a message of the given type, read the serialized message, and // print to text format.
diff --git a/base/trace_event/memory_dump_manager_unittest.cc b/base/trace_event/memory_dump_manager_unittest.cc index da4cd52a2..6b9f562 100644 --- a/base/trace_event/memory_dump_manager_unittest.cc +++ b/base/trace_event/memory_dump_manager_unittest.cc
@@ -241,7 +241,7 @@ mdm_->SetupForTracing(TraceConfig::MemoryDumpConfig()); } - void EnableForTracingWithTraceConfig(const std::string trace_config_string) { + void EnableForTracingWithTraceConfig(const std::string& trace_config_string) { TraceConfig trace_config(trace_config_string); mdm_->SetupForTracing(trace_config.memory_dump_config()); }
diff --git a/third_party/crubit/BUILD.gn b/build/rust/crubit/BUILD.gn similarity index 90% rename from third_party/crubit/BUILD.gn rename to build/rust/crubit/BUILD.gn index a14822b6..2bc6eb0 100644 --- a/third_party/crubit/BUILD.gn +++ b/build/rust/crubit/BUILD.gn
@@ -2,11 +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/rust.gni") import("//build/rust/rust_macro.gni") import("//build/rust/rust_static_library.gni") # Common constants. -_support_dir = "src/rs_bindings_from_cc/support" +_support_dir = "{rust_sysroot}/lib/crubit" # Dependencies of ..._rs_api.rs files generated by Crubit's # `bin/rs_bindings_from_cc` tool. See also `deps_for_generated_rs_file` in @@ -31,6 +32,8 @@ ] } +# TODO: crbug.com/40226863 - Crubit should publish a Cargo.toml for these +# crates, then we can generate rules for them dynamically with gnrt. rust_static_library("ctor") { crate_root = "${_support_dir}/ctor.rs" sources = [ "${_support_dir}/ctor.rs" ]
diff --git a/build/rust/rustc_wrapper.py b/build/rust/rustc_wrapper.py index b8e490d..8f2096dfe 100755 --- a/build/rust/rustc_wrapper.py +++ b/build/rust/rustc_wrapper.py
@@ -177,6 +177,7 @@ # Work around for "-l<foo>.lib", where ".lib" suffix is undesirable. # Full fix will come from https://gn-review.googlesource.com/c/gn/+/12480 rsp_args = [remove_lib_suffix_from_l_args(arg) for arg in rsp_args] + rustc_args = [remove_lib_suffix_from_l_args(arg) for arg in rustc_args] out_rsp = str(args.rsp) + ".rsp" with open(out_rsp, 'w') as rspfile: # rustc needs the rsp file to be separated by newlines. Note that GN
diff --git a/cc/slim/frame_sink.cc b/cc/slim/frame_sink.cc index d780a9d..1287001 100644 --- a/cc/slim/frame_sink.cc +++ b/cc/slim/frame_sink.cc
@@ -6,9 +6,12 @@ #include <utility> +#include "base/feature_list.h" #include "base/memory/ptr_util.h" #include "cc/slim/delayed_scheduler.h" #include "cc/slim/frame_sink_impl.h" +#include "cc/slim/simple_scheduler.h" +#include "components/viz/common/features.h" namespace cc::slim { @@ -23,6 +26,15 @@ // Parameters below only used when wrapping cc. gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, base::PlatformThreadId io_thread_id) { +#if BUILDFLAG(IS_ANDROID) + if (base::FeatureList::IsEnabled(features::kAndroidBcivWithSimpleScheduler)) { + return base::WrapUnique<FrameSink>(new FrameSinkImpl( + std::move(task_runner), + std::move(compositor_frame_sink_associated_remote), + std::move(client_receiver), std::move(context_provider), io_thread_id, + std::make_unique<SimpleScheduler>())); + } +#endif return base::WrapUnique<FrameSink>( new FrameSinkImpl(std::move(task_runner), std::move(compositor_frame_sink_associated_remote),
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 33c1c45..f0559ab 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -293,7 +293,6 @@ java_group("delegate_public_impl_java") { deps = [ "//chrome/android/modules/readaloud/public:provider_public_java", - "//chrome/browser/lens:delegate_public_impl_java", "//chrome/browser/locale:delegate_public_impl_java", "//chrome/browser/supervised_user:parent_auth_delegate_impl_java", "//chrome/browser/touch_to_fill/password_manager/android/internal:resource_provider_public_impl_java", @@ -1067,7 +1066,6 @@ "//chrome/browser/incognito:java", "//chrome/browser/language/android:java", "//chrome/browser/language/android:junit", - "//chrome/browser/lens:delegate_public_impl_java", "//chrome/browser/lens:java", "//chrome/browser/loading_modal/android:junit", "//chrome/browser/locale:java", @@ -2592,6 +2590,7 @@ "//base:base_java", "//base:base_java_test_support", "//build/android:build_java", + "//chrome/browser/autofill/test:test_support_java", "//chrome/browser/download/android:java", "//chrome/browser/prefetch/android:java", "//chrome/browser/profiles/android:java", @@ -2624,6 +2623,7 @@ ":test_support_jni_headers", "//chrome/browser", "//chrome/browser:browser_process", + "//chrome/browser/autofill/test:test_support", "//chrome/browser/sync", "//chrome/browser/thumbnail:test_support", "//components/offline_pages/core/background:test_support",
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java index 1549000..a2bc9ba 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
@@ -41,7 +41,6 @@ import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab_group_sync.TabGroupSyncFeatures; import org.chromium.chrome.browser.tab_group_sync.TabGroupSyncServiceFactory; -import org.chromium.chrome.browser.tab_group_sync.TabGroupSyncUtils; import org.chromium.chrome.browser.tab_ui.RecyclerViewPosition; import org.chromium.chrome.browser.tab_ui.TabUiThemeUtils; import org.chromium.chrome.browser.tabmodel.TabCreatorManager; @@ -69,7 +68,6 @@ import org.chromium.components.browser_ui.widget.gesture.BackPressHandler; import org.chromium.components.data_sharing.DataSharingService; import org.chromium.components.signin.identitymanager.IdentityManager; -import org.chromium.components.tab_group_sync.LocalTabGroupId; import org.chromium.components.tab_group_sync.TabGroupSyncService; import org.chromium.components.tab_groups.TabGroupColorId; import org.chromium.ui.KeyboardVisibilityDelegate; @@ -989,10 +987,7 @@ mModel.set(TabGridDialogProperties.IS_SHARE_SHEET_VISIBLE, true); String tabGroupDisplayName = mModel.get(TabGridDialogProperties.HEADER_TITLE); - TabGroupModelFilter filter = (TabGroupModelFilter) mCurrentTabModelFilterSupplier.get(); - Tab tab = filter.getTabModel().getTabById(mCurrentTabId); - LocalTabGroupId localTabGroupId = TabGroupSyncUtils.getLocalTabGroupId(tab); TabUiUtils.startShareTabGroupFlow( mActivity, @@ -1082,7 +1077,8 @@ String originalTitle = TabGroupTitleEditor.getDefaultTitle(mActivity, tabsCount); mModel.set( TabGridDialogProperties.COLLAPSE_BUTTON_CONTENT_DESCRIPTION, - mActivity.getResources() + mActivity + .getResources() .getQuantityString( R.plurals.accessibility_dialog_back_button, tabsCount,
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java index d79192e6..bdf5572 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
@@ -481,14 +481,14 @@ mRecyclerView.setRecyclerViewPosition(recyclerViewPosition); } - void initWithNative(@NonNull Profile profile) { + void initWithNative(@NonNull Profile originalProfile) { if (mIsInitialized) return; try (TraceEvent e = TraceEvent.scoped("TabListCoordinator.initWithNative")) { mIsInitialized = true; - assert !profile.isOffTheRecord() : "Expecting a non-incognito profile."; - mMediator.initWithNative(profile); + assert !originalProfile.isOffTheRecord() : "Expecting a non-incognito profile."; + mMediator.initWithNative(originalProfile); } }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java index aa6c4cc..38e61ae 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
@@ -363,7 +363,7 @@ private boolean mActionsOnAllRelatedTabs; private String mComponentName; private @TabActionState int mTabActionState; - private @Nullable Profile mProfile; + private @Nullable Profile mOriginalProfile; private TabListGroupMenuCoordinator mTabListGroupMenuCoordinator; private Size mDefaultGridCardSize; private ComponentCallbacks mComponentCallbacks; @@ -912,7 +912,6 @@ mActionConfirmationManager = actionConfirmationManager; mOnTabGroupCreation = onTabGroupCreation; - mProfile = mCurrentTabModelFilterSupplier.get().getTabModel().getProfile(); mTabModelObserver = new TabModelObserver() { @Override @@ -1282,10 +1281,10 @@ } } - public void initWithNative(Profile profile) { - assert !profile.isOffTheRecord() : "Expecting a non-incognito profile."; - mProfile = profile; - mTabListFaviconProvider.initWithNative(profile); + public void initWithNative(Profile originalProfile) { + assert !originalProfile.isOffTheRecord() : "Expecting a non-incognito profile."; + mOriginalProfile = originalProfile; + mTabListFaviconProvider.initWithNative(originalProfile); mOnTabModelFilterChanged.onResult( mCurrentTabModelFilterSupplier.addObserver(mOnTabModelFilterChanged)); @@ -1335,7 +1334,7 @@ // switcher. if (mMode == TabListMode.GRID && mTabActionState != TabActionState.SELECTABLE - && PriceTrackingFeatures.isPriceTrackingEnabled(profile)) { + && PriceTrackingFeatures.isPriceTrackingEnabled(originalProfile)) { mListObserver = new ListObserver<Void>() { @Override @@ -1552,10 +1551,11 @@ void hardCleanup() { assert !mShowingTabs; - if (mProfile != null - && PriceTrackingUtilities.isTrackPricesOnTabsEnabled(mProfile) - && (PriceTrackingFeatures.isPriceDropIphEnabled(mProfile) - || PriceTrackingFeatures.isPriceDropBadgeEnabled(mProfile))) { + if (!mCurrentTabModelFilterSupplier.get().isIncognitoBranded() + && mOriginalProfile != null + && PriceTrackingUtilities.isTrackPricesOnTabsEnabled(mOriginalProfile) + && (PriceTrackingFeatures.isPriceDropIphEnabled(mOriginalProfile) + || PriceTrackingFeatures.isPriceDropBadgeEnabled(mOriginalProfile))) { saveSeenPriceDrops(); } sViewedTabIds.clear(); @@ -1726,11 +1726,12 @@ void registerOnScrolledListener(RecyclerView recyclerView) { // For InstantStart, this can be called before native is initialized, so ensure the Profile // is available before proceeding. - if (mProfile == null) return; + if (mOriginalProfile == null) return; - if (PriceTrackingUtilities.isTrackPricesOnTabsEnabled(mProfile) - && (PriceTrackingFeatures.isPriceDropIphEnabled(mProfile) - || PriceTrackingFeatures.isPriceDropBadgeEnabled(mProfile))) { + if (!mCurrentTabModelFilterSupplier.get().isIncognitoBranded() + && PriceTrackingUtilities.isTrackPricesOnTabsEnabled(mOriginalProfile) + && (PriceTrackingFeatures.isPriceDropIphEnabled(mOriginalProfile) + || PriceTrackingFeatures.isPriceDropBadgeEnabled(mOriginalProfile))) { mRecyclerView = recyclerView; mOnScrollListener = new OnScrollListener() { @@ -1882,17 +1883,18 @@ private TabListMediator.TabActionListener getTabGroupOverflowMenuClickListener() { if (mTabListGroupMenuCoordinator == null) { - boolean isTabGroupSyncEnabled = TabGroupSyncFeatures.isTabGroupSyncEnabled(mProfile); - TabModel tabModel = mCurrentTabModelFilterSupplier.get().getTabModel(); - Profile profile = tabModel.getProfile().getOriginalProfile(); + boolean isTabGroupSyncEnabled = + !mCurrentTabModelFilterSupplier.get().isIncognitoBranded() + && TabGroupSyncFeatures.isTabGroupSyncEnabled(mOriginalProfile); IdentityManager identityManager = null; TabGroupSyncService tabGroupSyncService = null; DataSharingService dataSharingService = null; if (isTabGroupSyncEnabled && ChromeFeatureList.isEnabled(ChromeFeatureList.DATA_SHARING)) { - identityManager = IdentityServicesProvider.get().getIdentityManager(profile); - tabGroupSyncService = TabGroupSyncServiceFactory.getForProfile(profile); - dataSharingService = DataSharingServiceFactory.getForProfile(profile); + identityManager = + IdentityServicesProvider.get().getIdentityManager(mOriginalProfile); + tabGroupSyncService = TabGroupSyncServiceFactory.getForProfile(mOriginalProfile); + dataSharingService = DataSharingServiceFactory.getForProfile(mOriginalProfile); } mTabListGroupMenuCoordinator = new TabListGroupMenuCoordinator( @@ -2230,8 +2232,8 @@ private void setupPersistedTabDataFetcherForTab(Tab tab, int index) { PropertyModel model = mModel.get(index).model; if (mMode == TabListMode.GRID && !tab.isIncognito()) { - assert mProfile != null; - if (PriceTrackingUtilities.isTrackPricesOnTabsEnabled(mProfile) + assert mOriginalProfile != null; + if (PriceTrackingUtilities.isTrackPricesOnTabsEnabled(mOriginalProfile) && !isTabInTabGroup(tab)) { model.set( TabProperties.SHOPPING_PERSISTED_TAB_DATA_FETCHER, @@ -2386,8 +2388,9 @@ void updateLayout() { // Right now we need to update layout only if there is a price welcome message card in tab // switcher. - if (mProfile == null - || !PriceTrackingUtilities.isPriceWelcomeMessageCardEnabled(mProfile)) { + if (mOriginalProfile == null + || !PriceTrackingUtilities.isPriceWelcomeMessageCardEnabled(mOriginalProfile) + || mCurrentTabModelFilterSupplier.get().isIncognitoBranded()) { return; } assert mGridLayoutManager != null; @@ -2424,9 +2427,10 @@ @VisibleForTesting void recordPriceAnnotationsEnabledMetrics() { if (mMode != TabListMode.GRID + || mCurrentTabModelFilterSupplier.get().isIncognitoBranded() || !mActionsOnAllRelatedTabs - || mProfile == null - || !PriceTrackingFeatures.isPriceTrackingEligible(mProfile)) { + || mOriginalProfile == null + || !PriceTrackingFeatures.isPriceTrackingEligible(mOriginalProfile)) { return; } SharedPreferencesManager preferencesManager = ChromeSharedPreferences.getInstance(); @@ -2438,7 +2442,7 @@ >= PriceTrackingFeatures.getAnnotationsEnabledMetricsWindowDurationMilliSeconds()) { RecordHistogram.recordBooleanHistogram( "Commerce.PriceDrop.AnnotationsEnabled", - PriceTrackingUtilities.isTrackPricesOnTabsEnabled(mProfile)); + PriceTrackingUtilities.isTrackPricesOnTabsEnabled(mOriginalProfile)); preferencesManager.writeLong( ChromePreferenceKeys.PRICE_TRACKING_ANNOTATIONS_ENABLED_METRICS_TIMESTAMP, System.currentTimeMillis()); @@ -2768,7 +2772,9 @@ @VisibleForTesting void onMenuItemClicked(@IdRes int menuId, int tabId, @Nullable String collaborationId) { - boolean isSyncEnabled = TabGroupSyncFeatures.isTabGroupSyncEnabled(mProfile); + boolean isSyncEnabled = + !mCurrentTabModelFilterSupplier.get().isIncognitoBranded() + && TabGroupSyncFeatures.isTabGroupSyncEnabled(mOriginalProfile); if (menuId == R.id.close_tab || menuId == R.id.delete_tab) { boolean hideTabGroups = menuId == R.id.close_tab; if (hideTabGroups) { @@ -2949,8 +2955,7 @@ @Nullable TabGroupSyncService tabGroupSyncService = null; if (TabGroupSyncFeatures.isTabGroupSyncEnabled(tab.getProfile())) { - tabGroupSyncService = - TabGroupSyncServiceFactory.getForProfile(tab.getProfile().getOriginalProfile()); + tabGroupSyncService = TabGroupSyncServiceFactory.getForProfile(mOriginalProfile); } @Nullable String collaborationId =
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewBinder.java index 0d67b13..370a260 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewBinder.java
@@ -272,7 +272,7 @@ } private static void setTabGroupColorIcon(ViewGroup view, PropertyModel model) { - ImageView colorIconView = view.findViewById(R.id.icon); + ImageView colorIconView = view.findViewById(R.id.before_title_icon); if (ChromeFeatureList.sTabGroupParityAndroid.isEnabled()) { colorIconView.setVisibility(View.VISIBLE);
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinderTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinderTest.java index 005cd26..d45be3a 100644 --- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinderTest.java +++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinderTest.java
@@ -192,9 +192,9 @@ assertNull(mTabGridDialogView.getBindingToken()); String title = "1024 tabs"; - assertNotEquals(title, mTitleTextView.getText()); + assertNotEquals(title, mTitleTextView.getText().toString()); mModel.set(TabGridDialogProperties.HEADER_TITLE, title); - assertNotEquals(title, mTitleTextView.getText()); + assertNotEquals(title, mTitleTextView.getText().toString()); mModel.set(TabGridDialogProperties.BINDING_TOKEN, 4); assertEquals(mTabGridDialogView.getBindingToken().intValue(), 4); @@ -240,7 +240,7 @@ @UiThreadTest public void testSetHeaderTitle() { String title = "1024 tabs"; - assertNotEquals(title, mTitleTextView.getText()); + assertNotEquals(title, mTitleTextView.getText().toString()); mModel.set(TabGridDialogProperties.HEADER_TITLE, title);
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewHolderTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewHolderTest.java index 1d02880..ac8d0c15 100644 --- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewHolderTest.java +++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewHolderTest.java
@@ -1027,7 +1027,7 @@ final int colorId = TabGroupColorId.BLUE; final int colorLayer = 1; - ImageView colorIconView = mTabListView.findViewById(R.id.icon); + ImageView colorIconView = mTabListView.findViewById(R.id.before_title_icon); assertNull(colorIconView.getBackground()); mGridModel.set(TabProperties.TAB_GROUP_COLOR_ID, colorId); @@ -1059,7 +1059,7 @@ mGridModel.set(TabProperties.TAB_GROUP_COLOR_ID, colorId1); - ImageView colorIconView = mTabListView.findViewById(R.id.icon); + ImageView colorIconView = mTabListView.findViewById(R.id.before_title_icon); assertEquals(colorIconView.getVisibility(), View.VISIBLE); assertNotNull(colorIconView.getBackground());
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediatorUnitTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediatorUnitTest.java index ddf89a8..8a6a654c 100644 --- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediatorUnitTest.java +++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediatorUnitTest.java
@@ -77,8 +77,9 @@ import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.mockito.stubbing.Answer; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @@ -201,7 +202,7 @@ @LooperMode(LooperMode.Mode.LEGACY) @DisableFeatures(ChromeFeatureList.DATA_SHARING) public class TabListMediatorUnitTest { - + @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule(); @Rule public JniMocker mMocker = new JniMocker(); private static final String TAB1_TITLE = "Tab1"; @@ -362,7 +363,6 @@ @Before public void setUp() { - MockitoAnnotations.initMocks(this); mMocker.mock(UrlUtilitiesJni.TEST_HOOKS, mUrlUtilitiesJniMock); mMocker.mock( OptimizationGuideBridgeFactoryJni.TEST_HOOKS, @@ -655,7 +655,7 @@ } @Test - public void updatesFaviconFetcher_SingleTab_GTS() { + public void updatesFaviconFetcher_SingleTab_Gts() { mModel.get(0).model.set(TabProperties.FAVICON_FETCHER, null); assertNull(mModel.get(0).model.get(TabProperties.FAVICON_FETCHER)); @@ -676,7 +676,7 @@ @Test @DisableFeatures(ChromeFeatureList.TAB_GROUP_PARITY_ANDROID) - public void updatesFaviconFetcher_SingleTabGroup_GTS() { + public void updatesFaviconFetcher_SingleTabGroup_Gts() { mModel.get(0).model.set(TabProperties.FAVICON_FETCHER, null); assertNull(mModel.get(0).model.get(TabProperties.FAVICON_FETCHER)); @@ -691,7 +691,7 @@ } @Test - public void updatesFaviconFetcher_SingleTab_NonGTS() { + public void updatesFaviconFetcher_SingleTab_NonGts() { mModel.get(0).model.set(TabProperties.FAVICON_FETCHER, null); assertNull(mModel.get(0).model.get(TabProperties.FAVICON_FETCHER)); @@ -712,7 +712,7 @@ @Test @DisableFeatures(ChromeFeatureList.TAB_GROUP_PARITY_ANDROID) - public void updatesFaviconFetcher_TabGroup_GTS() { + public void updatesFaviconFetcher_TabGroup_Gts() { assertNotNull(mModel.get(0).model.get(TabProperties.FAVICON_FETCHER)); mModel.get(0).model.set(TabProperties.FAVICON_FETCHER, null); // Assert that tab1 is in a group. @@ -730,7 +730,7 @@ } @Test - public void updatesFaviconFetcher_TabGroup_ListGTS() { + public void updatesFaviconFetcher_TabGroup_ListGts() { setUpTabListMediator(TabListMediatorType.TAB_SWITCHER, TabListMode.LIST); assertNotNull(mModel.get(0).model.get(TabProperties.FAVICON_FETCHER)); @@ -748,7 +748,7 @@ } @Test - public void updatesFaviconFetcher_TabGroup_ListGTS_SingleTab() { + public void updatesFaviconFetcher_TabGroup_ListGts_SingleTab() { setUpTabListMediator(TabListMediatorType.TAB_SWITCHER, TabListMode.LIST); assertNotNull(mModel.get(0).model.get(TabProperties.FAVICON_FETCHER)); @@ -1208,7 +1208,7 @@ } @Test - public void tabAddition_GTS() { + public void tabAddition_Gts() { Tab newTab = prepareTab(TAB3_ID, TAB3_TITLE, TAB3_URL); doReturn(mTab1).when(mTabGroupModelFilter).getTabAt(0); doReturn(mTab2).when(mTabGroupModelFilter).getTabAt(1); @@ -1231,7 +1231,7 @@ } @Test - public void tabAddition_GTS_delayAdd() { + public void tabAddition_Gts_delayAdd() { mMediator.setComponentNameForTesting(TabSwitcherPaneCoordinator.COMPONENT_NAME); initAndAssertAllProperties(); @@ -1285,7 +1285,7 @@ } @Test - public void tabAddition_GTS_delayAdd_WithUnexpectedUpdate() { + public void tabAddition_Gts_delayAdd_WithUnexpectedUpdate() { mMediator.setComponentNameForTesting(TabSwitcherPaneCoordinator.COMPONENT_NAME); initAndAssertAllProperties(); @@ -1345,7 +1345,7 @@ } @Test - public void tabAddition_GTS_Skip() { + public void tabAddition_Gts_Skip() { // Add a new tab to the group with mTab2. Tab newTab = prepareTab(TAB3_ID, TAB3_TITLE, TAB3_URL); doReturn(mTab1).when(mTabGroupModelFilter).getTabAt(0); @@ -1368,7 +1368,7 @@ } @Test - public void tabAddition_GTS_Middle() { + public void tabAddition_Gts_Middle() { Tab newTab = prepareTab(TAB3_ID, TAB3_TITLE, TAB3_URL); doReturn(mTab1).when(mTabGroupModelFilter).getTabAt(0); doReturn(newTab).when(mTabGroupModelFilter).getTabAt(1); @@ -1758,7 +1758,7 @@ } @Test - public void tabMoveOutOfGroup_GTS_Moved_Tab_Selected() { + public void tabMoveOutOfGroup_Gts_Moved_Tab_Selected() { // Assume that two tabs are in the same group before ungroup. List<Tab> tabs = new ArrayList<>(Arrays.asList(mTab2)); mMediator.resetWithListOfTabs(tabs, false); @@ -1787,7 +1787,7 @@ } @Test - public void tabMoveOutOfGroup_GTS_Origin_Tab_Selected() { + public void tabMoveOutOfGroup_Gts_Origin_Tab_Selected() { // Assume that two tabs are in the same group before ungroup. List<Tab> tabs = new ArrayList<>(Arrays.asList(mTab1)); mMediator.resetWithListOfTabs(tabs, false); @@ -1813,7 +1813,7 @@ } @Test - public void tabMoveOutOfGroup_GTS_LastTab() { + public void tabMoveOutOfGroup_Gts_LastTab() { // Assume that tab1 is a single tab group that became a single tab. List<Tab> tabs = new ArrayList<>(Arrays.asList(mTab1)); mMediator.resetWithListOfTabs(tabs, false); @@ -1835,7 +1835,7 @@ } @Test - public void tabMoveOutOfGroup_GTS_TabAdditionWithSameId() { + public void tabMoveOutOfGroup_Gts_TabAdditionWithSameId() { // Assume that two tabs are in the same group before ungroup. List<Tab> tabs = new ArrayList<>(Arrays.asList(mTab1)); mMediator.resetWithListOfTabs(tabs, false); @@ -2566,7 +2566,7 @@ } @Test - public void getLatestTitle_NotGTS() { + public void getLatestTitle_NotGts() { setUpTabListMediator(TabListMediatorType.TAB_GRID_DIALOG, TabListMode.GRID); // Mock that we have a stored title stored with reference to root ID of tab1. @@ -2585,7 +2585,7 @@ } @Test - public void getLatestTitle_SingleTabGroupSupported_GTS() { + public void getLatestTitle_SingleTabGroupSupported_Gts() { // Mock that we have a stored title stored with reference to root ID of tab1. mTabGroupModelFilter.setTabGroupTitle(mTab1.getRootId(), CUSTOMIZED_DIALOG_TITLE1); assertThat( @@ -2603,7 +2603,7 @@ } @Test - public void getLatestTitle_SingleTabGroupNotSupported_GTS() { + public void getLatestTitle_SingleTabGroupNotSupported_Gts() { // Mock that we have a stored title stored with reference to root ID of tab1. mTabGroupModelFilter.setTabGroupTitle(mTab1.getRootId(), CUSTOMIZED_DIALOG_TITLE1); assertThat( @@ -2621,7 +2621,7 @@ } @Test - public void getLatestTitle_Stored_GTS() { + public void getLatestTitle_Stored_Gts() { // Mock that we have a stored title stored with reference to root ID of tab1. mTabGroupModelFilter.setTabGroupTitle(mTab1.getRootId(), CUSTOMIZED_DIALOG_TITLE1); assertThat( @@ -2638,7 +2638,7 @@ } @Test - public void getLatestTitle_Default_GTS() { + public void getLatestTitle_Default_Gts() { // Mock that tab1 and tab2 are in the same group and group root id is TAB1_ID. List<Tab> tabs = new ArrayList<>(Arrays.asList(mTab1, mTab2)); createTabGroup(tabs, TAB1_ID, TAB_GROUP_ID); @@ -2648,7 +2648,7 @@ } @Test - public void getLatestTitle_NoDefault_GTS() { + public void getLatestTitle_NoDefault_Gts() { // Mock that tab1 and tab2 are in the same group and group root id is TAB1_ID. List<Tab> tabs = new ArrayList<>(Arrays.asList(mTab1, mTab2)); createTabGroup(tabs, TAB1_ID, TAB_GROUP_ID); @@ -2658,7 +2658,7 @@ @Test @DisableFeatures(ChromeFeatureList.TAB_GROUP_PARITY_ANDROID) - public void updateTabGroupTitle_GTS() { + public void updateTabGroupTitle_Gts() { setUpTabGroupCardDescriptionString(); String targetString = "Expand tab group with 2 tabs."; assertThat(mModel.get(POSITION1).model.get(TabProperties.TITLE), equalTo(TAB1_TITLE)); @@ -2682,7 +2682,7 @@ @Test @DisableFeatures(ChromeFeatureList.TAB_GROUP_PARITY_ANDROID) - public void updateTabGroupTitle_SingleTab_GTS() { + public void updateTabGroupTitle_SingleTab_Gts() { setUpTabGroupCardDescriptionString(); String targetString = "Expand tab group with 1 tab."; assertThat(mModel.get(POSITION1).model.get(TabProperties.TITLE), equalTo(TAB1_TITLE)); @@ -2821,7 +2821,7 @@ } @Test - public void testUrlUpdated_forSingleTab_GTS() { + public void testUrlUpdated_forSingleTab_Gts() { assertNotEquals(mNewDomain, mModel.get(POSITION1).model.get(TabProperties.URL_DOMAIN)); doReturn(mNewDomain) @@ -2836,7 +2836,7 @@ } @Test - public void testUrlUpdated_forGroup_GTS() { + public void testUrlUpdated_forGroup_Gts() { List<Tab> tabs = new ArrayList<>(Arrays.asList(mTab1, mTab2)); createTabGroup(tabs, TAB1_ID, TAB_GROUP_ID); doReturn(POSITION1).when(mTabGroupModelFilter).indexOf(mTab1);
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java index 8835864..10aca33a 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
@@ -550,8 +550,7 @@ mSigninManager.getIdentityManager().addObserver(this); mSectionHeaderModel.set(SectionHeaderListProperties.MENU_MODEL_LIST_KEY, mFeedMenuModel); - mSectionHeaderModel.set( - SectionHeaderListProperties.MENU_DELEGATE_KEY, this::onItemSelected); + mSectionHeaderModel.set(SectionHeaderListProperties.MENU_DELEGATE_KEY, this); setUpWebFeedTab();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java index f2c63db..7e914be 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -2209,11 +2209,7 @@ }; mUndoBarPopupController = - new UndoBarController( - this, - mTabModelSelector, - this::getSnackbarManager, - dialogVisibilitySupplier); + new UndoBarController(this, mTabModelSelector, this, dialogVisibilitySupplier); if (ChromeFeatureList.sTabGroupParityAndroid.isEnabled()) { TabModelUtils.runOnTabStateInitialized(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillCreditCardEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillCreditCardEditor.java index 89a389b..8b5fe2f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillCreditCardEditor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillCreditCardEditor.java
@@ -4,7 +4,6 @@ package org.chromium.chrome.browser.autofill.settings; -import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; @@ -46,14 +45,6 @@ LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = super.onCreateView(inflater, container, savedInstanceState); - // Do not use autofill for the fields. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - getActivity() - .getWindow() - .getDecorView() - .setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS); - } - // Populate the billing address dropdown. ArrayAdapter<AutofillProfile> profilesAdapter = new ArrayAdapter<AutofillProfile>(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillLocalIbanEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillLocalIbanEditor.java index 87c478f..5d36f48 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillLocalIbanEditor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillLocalIbanEditor.java
@@ -4,7 +4,6 @@ package org.chromium.chrome.browser.autofill.settings; -import android.os.Build; import android.os.Bundle; import android.text.Editable; import android.view.LayoutInflater; @@ -60,14 +59,6 @@ LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = super.onCreateView(inflater, container, savedInstanceState); - // Do not use autofill for the fields. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - getActivity() - .getWindow() - .getDecorView() - .setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS); - } - PersonalDataManager personalDataManager = PersonalDataManagerFactory.getForProfile(getProfile()); mIban = personalDataManager.getIban(mGUID);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java index d03a16c..b1b7572 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
@@ -32,7 +32,6 @@ import androidx.core.view.ViewCompat; import androidx.core.view.WindowCompat; import androidx.core.view.WindowInsetsCompat; -import androidx.core.view.accessibility.AccessibilityEventCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.customview.widget.ExploreByTouchHelper; @@ -1632,12 +1631,7 @@ @Override public void invalidateAccessibilityProvider() { - if (mNodeProvider != null) { - mNodeProvider.sendEventForVirtualView( - mNodeProvider.getAccessibilityFocusedVirtualViewId(), - AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED); - mNodeProvider.invalidateRoot(); - } + if (mNodeProvider != null) mNodeProvider.invalidateRoot(); } // ChromeAccessibilityUtil.Observer
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutTab.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutTab.java index 45a2635a..2e19bcce 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutTab.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutTab.java
@@ -280,7 +280,7 @@ @Override public void getVirtualViews(List<VirtualView> views) { - if (isCollapsed()) return; + if (isCollapsed() || mIsDying) return; super.getVirtualViews(views); if (mShowingCloseButton) mCloseButton.getVirtualViews(views); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java index 30e7ed70..9ee571a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java
@@ -31,7 +31,6 @@ import org.chromium.chrome.browser.tab.TabLaunchType; import org.chromium.chrome.browser.tab_group_sync.TabGroupSyncFeatures; import org.chromium.chrome.browser.tab_group_sync.TabGroupSyncServiceFactory; -import org.chromium.chrome.browser.tab_group_sync.TabGroupSyncUtils; import org.chromium.chrome.browser.tabmodel.TabCreator; import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter; @@ -49,7 +48,6 @@ import org.chromium.components.data_sharing.DataSharingService; import org.chromium.components.data_sharing.DataSharingService.GroupDataOrFailureOutcome; import org.chromium.components.signin.identitymanager.IdentityManager; -import org.chromium.components.tab_group_sync.LocalTabGroupId; import org.chromium.components.tab_group_sync.TabGroupSyncService; import org.chromium.components.tab_groups.TabGroupColorId; import org.chromium.ui.KeyboardVisibilityDelegate; @@ -224,9 +222,6 @@ tabGroupModelFilter, tabCreator, tabId, TabLaunchType.FROM_TAB_GROUP_UI); recordUserAction("NewTabInGroup"); } else if (menuId == org.chromium.chrome.R.id.share_group) { - LocalTabGroupId localTabGroupId = - TabGroupSyncUtils.getLocalTabGroupId(tabGroupModelFilter, tabId); - // Get user assigned group title or the default title "N tabs" if no title is // assigned. String tabGroupDisplayName =
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/AuthTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/AuthTabIntentDataProvider.java index b74b580..b045a0d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/AuthTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/AuthTabIntentDataProvider.java
@@ -80,6 +80,8 @@ GURL redirectUrl = new GURL(UrlConstants.HTTPS_URL_PREFIX + host + path); mRedirectHost = redirectUrl.getHost(); mRedirectPath = redirectUrl.getPath(); + + logFeatureUsage(); } @Override @@ -166,4 +168,25 @@ public String getAuthRedirectScheme() { return mRedirectScheme; } + + /** + * Logs the usage of Auth Tab features to a large enum histogram in order to track usage by + * apps. + */ + private void logFeatureUsage() { + if (!CustomTabsFeatureUsage.isEnabled()) return; + CustomTabsFeatureUsage featureUsage = new CustomTabsFeatureUsage(); + + // Ordering: Log all the features ordered by enum, when they apply. + featureUsage.log(CustomTabsFeatureUsage.CustomTabsFeature.EXTRA_LAUNCH_AUTH_TAB); + if (mRedirectScheme != null) { + featureUsage.log(CustomTabsFeatureUsage.CustomTabsFeature.EXTRA_REDIRECT_SCHEME); + } + if (mRedirectHost != null) { + featureUsage.log(CustomTabsFeatureUsage.CustomTabsFeature.EXTRA_HTTPS_REDIRECT_HOST); + } + if (mRedirectPath != null) { + featureUsage.log(CustomTabsFeatureUsage.CustomTabsFeature.EXTRA_HTTPS_REDIRECT_PATH); + } + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsFeatureUsage.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsFeatureUsage.java index fbf1ae5..11e24b1f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsFeatureUsage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsFeatureUsage.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.customtabs; import androidx.annotation.IntDef; +import androidx.annotation.VisibleForTesting; import org.chromium.base.metrics.RecordHistogram; import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -15,6 +16,9 @@ /** Records a histogram that tracks usage of all the CCT features of interest. */ public class CustomTabsFeatureUsage { + @VisibleForTesting + public static final String CUSTOM_TABS_FEATURE_USAGE_HISTOGRAM = "CustomTabs.FeatureUsage"; + // NOTE: This must be kept in sync with the definition |CustomTabsFeatureUsed| // in tools/metrics/histograms/enums.xml. @IntDef({ @@ -76,6 +80,10 @@ CustomTabsFeature.EXTRA_ENABLE_GOOGLE_BOTTOM_BAR, CustomTabsFeature.EXTRA_GOOGLE_BOTTOM_BAR_BUTTONS, CustomTabsFeature.EXTRA_NETWORK, + CustomTabsFeature.EXTRA_LAUNCH_AUTH_TAB, + CustomTabsFeature.EXTRA_REDIRECT_SCHEME, + CustomTabsFeature.EXTRA_HTTPS_REDIRECT_HOST, + CustomTabsFeature.EXTRA_HTTPS_REDIRECT_PATH, CustomTabsFeature.COUNT }) @Retention(RetentionPolicy.SOURCE) @@ -140,9 +148,13 @@ int EXTRA_ENABLE_GOOGLE_BOTTOM_BAR = 56; int EXTRA_GOOGLE_BOTTOM_BAR_BUTTONS = 57; int EXTRA_NETWORK = 58; + int EXTRA_LAUNCH_AUTH_TAB = 59; + int EXTRA_REDIRECT_SCHEME = 60; + int EXTRA_HTTPS_REDIRECT_HOST = 61; + int EXTRA_HTTPS_REDIRECT_PATH = 62; /** Total count of entries. */ - int COUNT = 59; + int COUNT = 63; } // Whether flag-enabled or not. @@ -178,6 +190,6 @@ mUsed.set(feature); RecordHistogram.recordEnumeratedHistogram( - "CustomTabs.FeatureUsage", feature, CustomTabsFeature.COUNT); + CUSTOM_TABS_FEATURE_USAGE_HISTOGRAM, feature, CustomTabsFeature.COUNT); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java index 00dac51..642383f0 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java
@@ -82,7 +82,6 @@ .getDimensionPixelSize(R.dimen.history_item_remove_button_lateral_padding), getPaddingBottom()); - findViewById(R.id.chip_description).setVisibility(View.VISIBLE); mChipView = findViewById(R.id.chip); mChipView.getPrimaryTextView().setEllipsize(TextUtils.TruncateAt.END); }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarTest.java index 509e56a..f1601b3 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarTest.java
@@ -247,7 +247,6 @@ for (int menuId : applicableMenuIds) { boolean isVisible = !hiddenIdSet.contains(menuId); MenuItem menuItem = mBookmarkToolbar.getMenu().findItem(menuId); - assertNotNull(menuId); assertEquals( "Mismatched visibility for menu item " + menuItem, isVisible, @@ -259,7 +258,6 @@ for (int menuId : applicableMenuIds) { boolean isEnabled = !disabledIds.contains(menuId); MenuItem menuItem = mBookmarkToolbar.getMenu().findItem(menuId); - assertNotNull(menuId); assertEquals( "Mismatched enabled state for menu item " + menuItem, isEnabled,
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/browserservices/digitalgoods/DigitalGoodsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/browserservices/digitalgoods/DigitalGoodsTest.java index dea9caa16..489cbae9 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/browserservices/digitalgoods/DigitalGoodsTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/browserservices/digitalgoods/DigitalGoodsTest.java
@@ -198,7 +198,7 @@ try { Assert.assertNotEquals("null", exec(variable)); } catch (TimeoutException e) { - Assert.fail(); + throw new RuntimeException(e); } }); }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabActivityTestRule.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabActivityTestRule.java index 44be8db..7997a83 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabActivityTestRule.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabActivityTestRule.java
@@ -69,7 +69,7 @@ try { createNewCustomTabSessionForIntent(intent); } catch (TimeoutException e) { - Assert.fail(); + throw new RuntimeException(e); } } super.startCustomTabActivityWithIntent(intent);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/gesturenav/NavigationTransitionsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/gesturenav/NavigationTransitionsTest.java index 0ccebe21..77118cb 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/gesturenav/NavigationTransitionsTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/gesturenav/NavigationTransitionsTest.java
@@ -8,6 +8,9 @@ import android.graphics.Bitmap; import android.graphics.Color; +import android.os.Build; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; import androidx.activity.BackEventCompat; import androidx.test.core.app.ApplicationProvider; @@ -33,6 +36,7 @@ import org.chromium.base.test.util.CriteriaNotSatisfiedException; import org.chromium.base.test.util.DisableIf; import org.chromium.base.test.util.Features.EnableFeatures; +import org.chromium.base.test.util.MinAndroidSdkLevel; import org.chromium.chrome.browser.ViewportTestUtils; import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; @@ -50,9 +54,13 @@ import org.chromium.net.test.EmbeddedTestServer; import org.chromium.ui.base.BackGestureEventSwipeEdge; import org.chromium.ui.base.UiAndroidFeatures; +import org.chromium.ui.modaldialog.ModalDialogManager; +import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType; +import org.chromium.ui.modelutil.PropertyModel; import java.util.Arrays; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; /** @@ -67,6 +75,7 @@ @CommandLineFlags.Add({ ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, "enable-features=BackForwardTransitions,BackGestureRefactorAndroid", + "force-prefers-no-reduced-motion", // Resampling can make scroll offsets non-deterministic so turn it off. "disable-features=ResamplingScrollEvents", "hide-scrollbars" @@ -225,7 +234,6 @@ () -> { invokeNavigateGesture(edge); }); - waitForTransitionFinished(); } private void waitForTransitionFinished() { @@ -244,6 +252,50 @@ CriteriaHelper.DEFAULT_POLLING_INTERVAL); } + private void waitForModalDialogShown() { + CriteriaHelper.pollUiThread( + () -> { + try { + Criteria.checkThat(getDialogManager().isShowing(), Matchers.is(true)); + } catch (Throwable e) { + throw new CriteriaNotSatisfiedException(e); + } + }, + TEST_TIMEOUT, + CriteriaHelper.DEFAULT_POLLING_INTERVAL); + } + + private void runJavaScriptOnTab(String script) { + ThreadUtils.runOnUiThreadBlocking( + () -> { + getWebContents().evaluateJavaScriptForTests(script, null); + }); + } + + private ModalDialogManager getDialogManager() { + return mActivityTestRule.getActivity().getWindowAndroid().getModalDialogManager(); + } + + private int numSuspendedDialogs(@ModalDialogType int dialogType) { + var dialogs = getDialogManager().getPendingDialogsForTest(dialogType); + if (dialogs == null) return 0; + return dialogs.size(); + } + + private void waitForNumSuspendedDialogs(@ModalDialogType int dialogType, int numSuspended) { + CriteriaHelper.pollUiThread( + () -> { + try { + Criteria.checkThat( + numSuspendedDialogs(dialogType), Matchers.is(numSuspended)); + } catch (Throwable e) { + throw new CriteriaNotSatisfiedException(e); + } + }, + TEST_TIMEOUT, + CriteriaHelper.DEFAULT_POLLING_INTERVAL); + } + /** * Basic smoke test of transition back navigation. * @@ -253,6 +305,9 @@ @Test @MediumTest public void smokeTest() throws Throwable { + if (mTestNavigationMode == NAVIGATION_MODE_GESTURAL + && VERSION.SDK_INT < VERSION_CODES.UPSIDE_DOWN_CAKE) return; + // Put "blue.html" and then "green.html" in the session history. String url1 = mTestServer.getURL("/chrome/test/data/android/blue.html"); String url2 = mTestServer.getURL("/chrome/test/data/android/green.html"); @@ -265,6 +320,7 @@ // Perform a back gesture transition from the left edge. performNavigationTransition(url2, BackEventCompat.EDGE_LEFT); + waitForTransitionFinished(); Assert.assertEquals(url2, getCurrentUrl()); @@ -272,9 +328,11 @@ // button mode this goes forward, in gestural mode this goes back. if (mTestNavigationMode == NAVIGATION_MODE_THREE_BUTTON) { performNavigationTransition(url3, BackEventCompat.EDGE_RIGHT); + waitForTransitionFinished(); Assert.assertEquals(url3, getCurrentUrl()); } else { performNavigationTransition(url1, BackEventCompat.EDGE_RIGHT); + waitForTransitionFinished(); Assert.assertEquals(url1, getCurrentUrl()); } } @@ -288,6 +346,9 @@ @Test @MediumTest public void testInputAfterBackTransition() throws Throwable { + if (mTestNavigationMode == NAVIGATION_MODE_GESTURAL + && VERSION.SDK_INT < VERSION_CODES.UPSIDE_DOWN_CAKE) return; + // Put "blue.html" and then "green.html" in the session history. String url1 = mTestServer.getURL("/chrome/test/data/android/blue.html"); String url2 = mTestServer.getURL("/chrome/test/data/android/green.html"); @@ -296,6 +357,7 @@ WebContentsUtils.waitForCopyableViewInWebContents(getWebContents()); performNavigationTransition(url1, BackEventCompat.EDGE_LEFT); + waitForTransitionFinished(); JavaScriptUtils.executeJavaScriptAndWaitForResult( getWebContents(), @@ -326,6 +388,9 @@ @MediumTest @EnableFeatures({UiAndroidFeatures.MIRROR_BACK_FORWARD_GESTURES_IN_RTL}) public void testBackNavInRTL() throws Throwable { + if (mTestNavigationMode == NAVIGATION_MODE_GESTURAL + && VERSION.SDK_INT < VERSION_CODES.UPSIDE_DOWN_CAKE) return; + setRtlForTesting(true); // Put "blue.html" and then "green.html" in the session history. @@ -338,6 +403,7 @@ WebContentsUtils.waitForCopyableViewInWebContents(getWebContents()); performNavigationTransition(url2, BackEventCompat.EDGE_RIGHT); + waitForTransitionFinished(); Assert.assertEquals(url2, getCurrentUrl()); // Perform an edge gesture transition from the left edge (semantically @@ -345,9 +411,11 @@ // forward, in gestural mode this goes back (without a transition). if (mTestNavigationMode == NAVIGATION_MODE_THREE_BUTTON) { performNavigationTransition(url3, BackEventCompat.EDGE_LEFT); + waitForTransitionFinished(); Assert.assertEquals(url3, getCurrentUrl()); } else { performNavigationTransition(url1, BackEventCompat.EDGE_LEFT); + waitForTransitionFinished(); Assert.assertEquals(url1, getCurrentUrl()); } } @@ -360,6 +428,9 @@ @Test @MediumTest public void startBackNavWithTopControlHidden() throws Throwable { + if (mTestNavigationMode == NAVIGATION_MODE_GESTURAL + && VERSION.SDK_INT < VERSION_CODES.UPSIDE_DOWN_CAKE) return; + // The top control's offset is -top_controls_height when controls are fully hidden, 0 when // fully shown. final AtomicInteger topControlOffsetDuringGesture = new AtomicInteger(Integer.MAX_VALUE); @@ -399,6 +470,7 @@ // Perform a back gesture transition. mViewportTestUtils.hideBrowserControls(); performNavigationTransition(url1, BackEventCompat.EDGE_LEFT); + waitForTransitionFinished(); Assert.assertEquals(url1, getCurrentUrl()); @@ -406,4 +478,123 @@ topControlOffsetDuringGesture.get() > -mViewportTestUtils.getTopControlsHeightPx()); mViewportTestUtils.waitForBrowserControlsState(/* shown= */ true); } + + /** + * Test that the modal dialogs are suspended during the transition but resumed after the + * transition. + */ + @Test + @MediumTest + @MinAndroidSdkLevel(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) + public void alertSuspendedDuringTransition() throws Throwable { + // Skip for three button mode because `TouchCommon.performWallClockDrag` blocks (it sleeps + // between each touch event). It's okay to skip because the dialog suspension is navigation + // mode agnostic. + if (mTestNavigationMode == NAVIGATION_MODE_THREE_BUTTON) return; + + // Put "blue.html" and then "green.html" in the session history. + String url1 = mTestServer.getURL("/chrome/test/data/android/blue.html"); + String url2 = mTestServer.getURL("/chrome/test/data/android/green.html"); + mActivityTestRule.loadUrl(url1); + mActivityTestRule.loadUrl(url2); + + WebContentsUtils.waitForCopyableViewInWebContents(getWebContents()); + + final AtomicBoolean dialogQueuedToShow = new AtomicBoolean(false); + ThreadUtils.runOnUiThreadBlocking( + () -> { + getDialogManager() + .addObserver( + new ModalDialogManager.ModalDialogManagerObserver() { + @Override + public void onDialogAdded(PropertyModel model) { + dialogQueuedToShow.set(true); + } + }); + }); + + ThreadUtils.runOnUiThreadBlocking( + () -> { + BackPressManager manager = + mActivityTestRule.getActivity().getBackPressManagerForTesting(); + var backEvent = new BackEventCompat(0, 0, 0, BackEventCompat.EDGE_LEFT); + manager.getCallback().handleOnBackStarted(backEvent); + }); + runJavaScriptOnTab("window.alert('during transition');"); + waitForNumSuspendedDialogs(ModalDialogType.TAB, 1); + Assert.assertFalse(dialogQueuedToShow.get()); + ThreadUtils.runOnUiThreadBlocking( + () -> { + BackPressManager manager = + mActivityTestRule.getActivity().getBackPressManagerForTesting(); + var backEvent = new BackEventCompat(1, 0, 0.8f, BackEventCompat.EDGE_LEFT); + manager.getCallback().handleOnBackProgressed(backEvent); + manager.getCallback().handleOnBackPressed(); + }); + + waitForTransitionFinished(); + Assert.assertEquals(0, numSuspendedDialogs(ModalDialogType.TAB)); + Assert.assertFalse(dialogQueuedToShow.get()); + + // After the transition, dialogs are resumed. + runJavaScriptOnTab("window.alert('after transition');"); + waitForModalDialogShown(); + Assert.assertTrue(dialogQueuedToShow.get()); + } + + /** + * Test that the modal dialogs are suspended during the transition but resumed after the + * transition is cancelled. + */ + @Test + @MediumTest + @MinAndroidSdkLevel(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) + public void alertResumedAfterGestureCancelled() throws Throwable { + // TouchCommon.java doesn't have a "cancel gesture". + if (mTestNavigationMode == NAVIGATION_MODE_THREE_BUTTON) return; + + // Put "blue.html" and then "green.html" in the session history. + String url1 = mTestServer.getURL("/chrome/test/data/android/blue.html"); + String url2 = mTestServer.getURL("/chrome/test/data/android/green.html"); + mActivityTestRule.loadUrl(url1); + mActivityTestRule.loadUrl(url2); + + final AtomicBoolean dialogQueuedToShow = new AtomicBoolean(false); + ThreadUtils.runOnUiThreadBlocking( + () -> { + getDialogManager() + .addObserver( + new ModalDialogManager.ModalDialogManagerObserver() { + @Override + public void onDialogAdded(PropertyModel model) { + dialogQueuedToShow.set(true); + } + }); + }); + + ThreadUtils.runOnUiThreadBlocking( + () -> { + BackPressManager manager = + mActivityTestRule.getActivity().getBackPressManagerForTesting(); + var backEvent = new BackEventCompat(0, 0, 0, BackEventCompat.EDGE_LEFT); + manager.getCallback().handleOnBackStarted(backEvent); + }); + runJavaScriptOnTab("window.alert('shown after transition');"); + waitForNumSuspendedDialogs(ModalDialogType.TAB, 1); + Assert.assertFalse(dialogQueuedToShow.get()); + ThreadUtils.runOnUiThreadBlocking( + () -> { + BackPressManager manager = + mActivityTestRule.getActivity().getBackPressManagerForTesting(); + var backEvent = new BackEventCompat(1, 0, .8f, BackEventCompat.EDGE_LEFT); + manager.getCallback().handleOnBackProgressed(backEvent); + manager.getCallback().handleOnBackCancelled(); + }); + waitForTransitionFinished(); + Assert.assertEquals(0, numSuspendedDialogs(ModalDialogType.TAB)); + + // After the transition is finished, the dialog is resumed. + waitForModalDialogShown(); + Assert.assertTrue(dialogQueuedToShow.get()); + } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageNavigationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageNavigationTest.java index 04fa7150..5cd87fe 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageNavigationTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageNavigationTest.java
@@ -101,7 +101,7 @@ Assert.assertEquals(UrlConstants.NTP_URL, url); // Check that the NTP is actually displayed. - Assert.assertNotNull(tab.getNativePage() instanceof NewTabPage); + Assert.assertTrue(tab.getNativePage() instanceof NewTabPage); } /** Tests navigating to the tab switcher from the NTP. */
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/settings/AutofillDeletePaymentMethodConfirmationDialogTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/autofill/settings/AutofillDeletePaymentMethodConfirmationDialogTest.java index c92b8fbf..9d56955 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/settings/AutofillDeletePaymentMethodConfirmationDialogTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/autofill/settings/AutofillDeletePaymentMethodConfirmationDialogTest.java
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +package org.chromium.chrome.browser.autofill.settings; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.verify; @@ -24,7 +26,6 @@ import org.chromium.base.Callback; import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.chrome.R; -import org.chromium.chrome.browser.autofill.settings.AutofillDeletePaymentMethodConfirmationDialog; import org.chromium.ui.modaldialog.DialogDismissalCause; import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType; import org.chromium.ui.modaldialog.ModalDialogProperties;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediatorTest.java index 1eae022e..39d58b6 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediatorTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediatorTest.java
@@ -852,7 +852,6 @@ assertEquals(mBookmarkItem21.getTitle(), model.get(ImprovedBookmarkRowProperties.TITLE)); assertEquals(EXAMPLE_URL_FORMATTED, model.get(ImprovedBookmarkRowProperties.DESCRIPTION)); assertNotNull(model.get(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE)); - assertNotNull(model.get(ImprovedBookmarkRowProperties.START_AREA_BACKGROUND_COLOR)); assertNull(model.get(ImprovedBookmarkRowProperties.START_ICON_TINT)); assertNotNull(model.get(ImprovedBookmarkRowProperties.POPUP_LISTENER)); assertEquals(false, model.get(ImprovedBookmarkRowProperties.SELECTION_ACTIVE)); @@ -927,7 +926,6 @@ assertEquals(mBookmarkItem21.getTitle(), model.get(ImprovedBookmarkRowProperties.TITLE)); assertEquals(EXAMPLE_URL_FORMATTED, model.get(ImprovedBookmarkRowProperties.DESCRIPTION)); assertNotNull(model.get(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE)); - assertNotNull(model.get(ImprovedBookmarkRowProperties.START_AREA_BACKGROUND_COLOR)); assertNull(model.get(ImprovedBookmarkRowProperties.START_ICON_TINT)); assertNotNull(model.get(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE)); assertNotNull(model.get(ImprovedBookmarkRowProperties.POPUP_LISTENER)); @@ -1013,7 +1011,6 @@ ImageVisibility.DRAWABLE, model.get(ImprovedBookmarkRowProperties.START_IMAGE_VISIBILITY)); assertNotNull(model.get(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE)); - assertNotNull(model.get(ImprovedBookmarkRowProperties.START_AREA_BACKGROUND_COLOR)); assertNotNull(model.get(ImprovedBookmarkRowProperties.START_ICON_TINT)); assertNotNull(model.get(ImprovedBookmarkRowProperties.POPUP_LISTENER)); assertEquals(false, model.get(ImprovedBookmarkRowProperties.SELECTION_ACTIVE)); @@ -1075,7 +1072,6 @@ assertEquals( mFolderItem2.getTitle() + " (1)", model.get(ImprovedBookmarkRowProperties.TITLE)); assertNotNull(model.get(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE)); - assertNotNull(model.get(ImprovedBookmarkRowProperties.START_AREA_BACKGROUND_COLOR)); assertNotNull(model.get(ImprovedBookmarkRowProperties.START_ICON_TINT)); assertNotNull(model.get(ImprovedBookmarkRowProperties.POPUP_LISTENER)); assertEquals(false, model.get(ImprovedBookmarkRowProperties.SELECTION_ACTIVE));
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinatorTest.java index 359653a..b3ef4a52 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinatorTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinatorTest.java
@@ -269,7 +269,6 @@ PropertyModel model = mCoordinator.createBasePropertyModel(READING_LIST_BOOKMARK_ID); assertFalse(mCoordinator.shouldShowImagesForFolder(READING_LIST_BOOKMARK_ID)); - assertNotNull(model.get(ImprovedBookmarkRowProperties.FOLDER_START_AREA_BACKGROUND_COLOR)); assertNotNull(model.get(ImprovedBookmarkRowProperties.FOLDER_START_ICON_TINT)); assertNotNull(model.get(ImprovedBookmarkRowProperties.FOLDER_START_ICON_DRAWABLE)); assertEquals(0, model.get(ImprovedBookmarkRowProperties.FOLDER_CHILD_COUNT));
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManagerTest.java index 3625b04..2b3122f 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManagerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManagerTest.java
@@ -45,7 +45,8 @@ import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.Robolectric; import org.robolectric.annotation.Config; @@ -105,6 +106,7 @@ @DisableFeatures(ChromeFeatureList.TAB_STRIP_INCOGNITO_MIGRATION) public class StripLayoutHelperManagerTest { @Rule public JniMocker mJniMocker = new JniMocker(); + @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule(); @Mock private TabStripSceneLayer.Natives mTabStripSceneMock; @Mock private TabStripSceneLayer mTabStripTreeProvider; @Mock private LayoutManagerHost mManagerHost; @@ -150,17 +152,16 @@ @Before public void beforeTest() { - MockitoAnnotations.initMocks(this); mJniMocker.mock(TabStripSceneLayerJni.TEST_HOOKS, mTabStripSceneMock); mActivity = Robolectric.buildActivity(Activity.class).setup().get(); mActivity.setTheme(R.style.Theme_BrowserUI_DayNight); - when(mToolbarContainerView.getContext()).thenReturn(mActivity); - when(mToolbarManager.getStatusBarColorController()).thenReturn(mStatusBarColorController); - TabStripSceneLayer.setTestFlag(true); + when(mToolbarContainerView.getContext()).thenReturn(mActivity); + when(mToolbarManager.getStatusBarColorController()).thenReturn(mStatusBarColorController); when(mDesktopWindowStateProvider.isInUnfocusedDesktopWindow()).thenReturn(false); when(mWindowAndroid.getActivity()).thenReturn(new WeakReference<>(mActivity)); + initializeTest(); } @@ -347,7 +348,7 @@ @Test @DisableFeatures(ChromeFeatureList.TAB_STRIP_LAYOUT_OPTIMIZATION) - public void testModelSelectorButtonXPosition() { + public void testModelSelectorButtonDrawX() { // Set model selector button position. mStripLayoutHelperManager.setModelSelectorButtonVisibleForTesting(true); mStripLayoutHelperManager.onSizeChanged( @@ -364,7 +365,7 @@ @Test @DisableFeatures(ChromeFeatureList.TAB_STRIP_LAYOUT_OPTIMIZATION) - public void testModelSelectorButtonXPosition_RTL() { + public void testModelSelectorButtonDrawX_Rtl() { // Set model selector button position. LocalizationUtils.setRtlForTesting(true); mStripLayoutHelperManager.setModelSelectorButtonVisibleForTesting(true); @@ -380,7 +381,7 @@ } @Test - public void testModelSelectorButtonYPosition() { + public void testModelSelectorButtonDrawY() { // Set model selector button position. mStripLayoutHelperManager.onSizeChanged( SCREEN_WIDTH, SCREEN_HEIGHT, VISIBLE_VIEWPORT_Y, ORIENTATION); @@ -540,7 +541,7 @@ } @Test - public void testFadeDrawable_Left_RTL_ModelSelectorButtonVisible() { + public void testFadeDrawable_Left_Rtl_ModelSelectorButtonVisible() { // setup mStripLayoutHelperManager.setModelSelectorButtonVisibleForTesting(true); LocalizationUtils.setRtlForTesting(true); @@ -553,7 +554,7 @@ } @Test - public void testFadeDrawable_Left_RTL() { + public void testFadeDrawable_Left_Rtl() { // setup LocalizationUtils.setRtlForTesting(true); @@ -565,7 +566,7 @@ } @Test - public void testFadeDrawable_Right_RTL() { + public void testFadeDrawable_Right_Rtl() { // setup mStripLayoutHelperManager.setModelSelectorButtonVisibleForTesting(true); LocalizationUtils.setRtlForTesting(true);
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java index f743e90..d79b371 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java
@@ -3924,13 +3924,16 @@ // Verify. StripLayoutTab[] tabs = mStripLayoutHelper.getStripLayoutTabsForTesting(); assertTrue("Should be in reorder mode.", mStripLayoutHelper.getInReorderModeForTesting()); - assertNotEquals("Should be tab margin after tab 0.", 0, tabs[0].getTrailingMargin()); + assertEquals( + "Should not be tab margin after tab 0.", 0, tabs[0].getTrailingMargin(), EPSILON); assertEquals( "Should not be tab margin after tab 1.", 0, tabs[1].getTrailingMargin(), EPSILON); - assertNotEquals("Should be tab margin after tab 2.", 0, tabs[2].getTrailingMargin()); + assertEquals( + "Should not be tab margin after tab 2.", 0, tabs[2].getTrailingMargin(), EPSILON); assertEquals( "Should not be tab margin after tab 3.", 0, tabs[3].getTrailingMargin(), EPSILON); - assertNotEquals("Should be tab margin after tab 4.", 0, tabs[4].getTrailingMargin()); + assertNotEquals( + "Should be tab margin after tab 4.", 0, tabs[4].getTrailingMargin(), EPSILON); assertEquals( "TouchableRect does not match. Touch size should match the strip during drag.", @@ -3962,22 +3965,26 @@ StripLayoutTab[] tabs = mStripLayoutHelper.getStripLayoutTabsForTesting(); assertEquals( "Should not be tab margin after tab 0.", 0, tabs[0].getTrailingMargin(), EPSILON); - assertNotEquals("Should be tab margin after tab 1.", 0, tabs[1].getTrailingMargin()); + assertEquals( + "Should not be tab margin after tab 1.", 0, tabs[1].getTrailingMargin(), EPSILON); assertEquals( "Should not be tab margin after tab 2.", 0, tabs[2].getTrailingMargin(), EPSILON); - assertNotEquals("Should be tab margin after tab 3.", 0, tabs[3].getTrailingMargin()); + assertNotEquals( + "Should be tab margin after tab 3.", 0, tabs[3].getTrailingMargin(), EPSILON); // Now hover between 1st and 2nd tab: // tabWidth(265) - overlapWidth(28) = 237 mStripLayoutHelper.updateReorderPositionForTabDrop(237.f); // Verify. - assertNotEquals("Should be tab margin after tab 0.", 0, tabs[0].getTrailingMargin()); + assertEquals( + "Should not be tab margin after tab 0.", 0, tabs[0].getTrailingMargin(), EPSILON); assertEquals( "Should not be tab margin after tab 1.", 0, tabs[1].getTrailingMargin(), EPSILON); assertEquals( "Should not be tab margin after tab 2.", 0, tabs[2].getTrailingMargin(), EPSILON); - assertNotEquals("Should be tab margin after tab 3.", 0, tabs[3].getTrailingMargin()); + assertNotEquals( + "Should be tab margin after tab 3.", 0, tabs[3].getTrailingMargin(), EPSILON); } @Test @@ -4007,7 +4014,8 @@ "Should not be tab margin after tab 0.", 0, tabs[0].getTrailingMargin(), EPSILON); assertEquals( "Should not be tab margin after tab 1.", 0, tabs[1].getTrailingMargin(), EPSILON); - assertNotEquals("Should be tab margin after tab 2.", 0, tabs[2].getTrailingMargin()); + assertNotEquals( + "Should be tab margin after tab 2.", 0, tabs[2].getTrailingMargin(), EPSILON); // Hover in end gap: mStripLayoutHelper.updateReorderPositionForTabDrop(1100); @@ -4017,7 +4025,8 @@ "Should not be tab margin after tab 0.", 0, tabs[0].getTrailingMargin(), EPSILON); assertEquals( "Should not be tab margin after tab 1.", 0, tabs[1].getTrailingMargin(), EPSILON); - assertNotEquals("Should be tab margin after tab 2.", 0, tabs[2].getTrailingMargin()); + assertNotEquals( + "Should be tab margin after tab 2.", 0, tabs[2].getTrailingMargin(), EPSILON); } @Test
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/AuthTabIntentDataProviderUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/AuthTabIntentDataProviderUnitTest.java index 044f65a..6ecfc95 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/AuthTabIntentDataProviderUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/AuthTabIntentDataProviderUnitTest.java
@@ -8,6 +8,11 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.chromium.chrome.browser.customtabs.AuthTabIntentDataProvider.EXTRA_HTTPS_REDIRECT_HOST; +import static org.chromium.chrome.browser.customtabs.AuthTabIntentDataProvider.EXTRA_HTTPS_REDIRECT_PATH; +import static org.chromium.chrome.browser.customtabs.CustomTabsFeatureUsage.CUSTOM_TABS_FEATURE_USAGE_HISTOGRAM; +import static org.chromium.chrome.browser.flags.ChromeFeatureList.CCT_FEATURE_USAGE; + import android.app.Activity; import android.content.Intent; import android.net.Uri; @@ -25,6 +30,8 @@ import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.util.Batch; +import org.chromium.base.test.util.Features; +import org.chromium.base.test.util.HistogramWatcher; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider.CustomTabsUiType; import org.chromium.chrome.browser.flags.ActivityType; @@ -33,6 +40,7 @@ @RunWith(BaseRobolectricTestRunner.class) @Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) +@Features.EnableFeatures(CCT_FEATURE_USAGE) public class AuthTabIntentDataProviderUnitTest { @Rule public ActivityScenarioRule<TestActivity> mActivityScenario = @@ -41,6 +49,8 @@ private static final String PACKAGE = "com.example.package.app"; private static final String URL = "https://www.google.com"; private static final String SCHEME = "myscheme"; + private static final String HOST = "www.host.com"; + private static final String PATH = "/path/auth"; private Activity mActivity; private Intent mIntent; @@ -52,16 +62,15 @@ mIntent = new Intent(Intent.ACTION_VIEW); mIntent.setData(Uri.parse(URL)); mIntent.putExtra(AuthTabIntent.EXTRA_LAUNCH_AUTH_TAB, true); - mIntent.putExtra(AuthTabIntent.EXTRA_REDIRECT_SCHEME, SCHEME); mIntent.putExtra(IntentHandler.EXTRA_CALLING_ACTIVITY_PACKAGE, PACKAGE); Bundle bundle = new Bundle(); bundle.putBinder(CustomTabsIntent.EXTRA_SESSION, null); mIntent.putExtras(bundle); - mIntentDataProvider = new AuthTabIntentDataProvider(mIntent, mActivity); } @Test public void testOverriddenDefaults() { + mIntentDataProvider = new AuthTabIntentDataProvider(mIntent, mActivity); assertEquals( "ActivityType should be AUTH_TAB.", ActivityType.AUTH_TAB, @@ -86,9 +95,53 @@ @Test public void testIntentData() { + var histogramWatcher = + HistogramWatcher.newBuilder() + .expectIntRecord( + CUSTOM_TABS_FEATURE_USAGE_HISTOGRAM, + CustomTabsFeatureUsage.CustomTabsFeature.EXTRA_LAUNCH_AUTH_TAB) + .allowExtraRecordsForHistogramsAbove() + .build(); + mIntentDataProvider = new AuthTabIntentDataProvider(mIntent, mActivity); + assertEquals("Intent doesn't match expectation.", mIntent, mIntentDataProvider.getIntent()); assertEquals("Wrong package name", PACKAGE, mIntentDataProvider.getClientPackageName()); assertEquals("Wrong URL", URL, mIntentDataProvider.getUrlToLoad()); + histogramWatcher.assertExpected(); + } + + @Test + public void testIntentData_customScheme() { + var histogramWatcher = + HistogramWatcher.newBuilder() + .expectIntRecord( + CUSTOM_TABS_FEATURE_USAGE_HISTOGRAM, + CustomTabsFeatureUsage.CustomTabsFeature.EXTRA_REDIRECT_SCHEME) + .allowExtraRecordsForHistogramsAbove() + .build(); + mIntent.putExtra(AuthTabIntent.EXTRA_REDIRECT_SCHEME, SCHEME); + mIntentDataProvider = new AuthTabIntentDataProvider(mIntent, mActivity); + assertEquals("Wrong redirect scheme.", SCHEME, mIntentDataProvider.getAuthRedirectScheme()); + histogramWatcher.assertExpected(); + } + + @Test + public void testIntentData_https() { + var histogramWatcher = + HistogramWatcher.newBuilder() + .expectIntRecords( + CUSTOM_TABS_FEATURE_USAGE_HISTOGRAM, + CustomTabsFeatureUsage.CustomTabsFeature.EXTRA_HTTPS_REDIRECT_HOST, + CustomTabsFeatureUsage.CustomTabsFeature.EXTRA_HTTPS_REDIRECT_PATH) + .allowExtraRecordsForHistogramsAbove() + .build(); + mIntent.putExtra(EXTRA_HTTPS_REDIRECT_HOST, HOST); + mIntent.putExtra(EXTRA_HTTPS_REDIRECT_PATH, PATH); + mIntentDataProvider = new AuthTabIntentDataProvider(mIntent, mActivity); + + assertEquals("Wrong https redirect host.", HOST, mIntentDataProvider.getAuthRedirectHost()); + assertEquals("Wrong https redirect path.", PATH, mIntentDataProvider.getAuthRedirectPath()); + histogramWatcher.assertExpected(); } }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/firstrun/FirstRunIntegrationUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/firstrun/FirstRunIntegrationUnitTest.java index e54fece..89ce823 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/firstrun/FirstRunIntegrationUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/firstrun/FirstRunIntegrationUnitTest.java
@@ -98,7 +98,7 @@ activityClass = (Class<? extends Activity>) Class.forName(intent.getComponent().getClassName()); } catch (ClassNotFoundException e) { - Assert.fail(); + throw new RuntimeException(e); } createActivity(activityClass, intent); }
diff --git a/chrome/android/webapk/libs/runtime_library/javatests/src/org/chromium/webapk/lib/runtime_library/WebApkServiceImplTest.java b/chrome/android/webapk/libs/runtime_library/javatests/src/org/chromium/webapk/lib/runtime_library/WebApkServiceImplTest.java index ac7c904..475d1ba5 100644 --- a/chrome/android/webapk/libs/runtime_library/javatests/src/org/chromium/webapk/lib/runtime_library/WebApkServiceImplTest.java +++ b/chrome/android/webapk/libs/runtime_library/javatests/src/org/chromium/webapk/lib/runtime_library/WebApkServiceImplTest.java
@@ -103,9 +103,8 @@ context.getPackageName(), PackageManager.GET_META_DATA); return appInfo.uid; } catch (Exception e) { - Assert.fail(); + throw new RuntimeException(e); } - return -1; } /**
diff --git a/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/h2o/SplashUtilsTest.java b/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/h2o/SplashUtilsTest.java index 9b9d27b..f5f16543 100644 --- a/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/h2o/SplashUtilsTest.java +++ b/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/h2o/SplashUtilsTest.java
@@ -51,7 +51,7 @@ try { bitmap.getPixels(pixels, 0, width, 0, 0, width, height); } catch (Exception e) { - Assert.fail(); + throw new RuntimeException(e); } int firstColor = pixels[0]; for (int i = 1; i < pixels.length; ++i) {
diff --git a/chrome/android/webapk/shell_apk/junit/src/org/chromium/webapk/shell_apk/HostBrowserClassLoaderTest.java b/chrome/android/webapk/shell_apk/junit/src/org/chromium/webapk/shell_apk/HostBrowserClassLoaderTest.java index 288fa26c..40259bc 100644 --- a/chrome/android/webapk/shell_apk/junit/src/org/chromium/webapk/shell_apk/HostBrowserClassLoaderTest.java +++ b/chrome/android/webapk/shell_apk/junit/src/org/chromium/webapk/shell_apk/HostBrowserClassLoaderTest.java
@@ -23,6 +23,7 @@ import java.io.ByteArrayInputStream; import java.io.File; +import java.io.IOException; import java.io.InputStream; /** Tests HostBrowserClassLoader. */ @@ -47,7 +48,7 @@ private DexLoader mMockDexLoader; @Before - public void setUp() { + public void setUp() throws Exception { mContext = RuntimeEnvironment.application; mPackageManager = mContext.getPackageManager(); setRemoteVersionCode(REMOTE_VERSION_CODE); @@ -65,7 +66,7 @@ /** Test upgrading to a new runtime dex version. */ @Test - public void testNewRuntimeDexVersion() { + public void testNewRuntimeDexVersion() throws Exception { HostBrowserClassLoader.createClassLoader(mContext, mRemoteContext, mMockDexLoader, null); String expectedDexName = WebApkCommonUtils.getRuntimeDexName(REMOTE_DEX_VERSION); @@ -139,13 +140,9 @@ * Sets the version of the current runtime library dex stored in the remote host browser's * assets. */ - public void setRemoteDexVersion(int dexVersion) { - try { - Mockito.when(mRemoteAssetManager.open("webapk_dex_version.txt")) - .thenReturn(createIntInputStream(dexVersion)); - } catch (Exception e) { - Assert.fail(); - } + public void setRemoteDexVersion(int dexVersion) throws IOException { + Mockito.when(mRemoteAssetManager.open("webapk_dex_version.txt")) + .thenReturn(createIntInputStream(dexVersion)); } /**
diff --git a/chrome/android/webapk/shell_apk/junit/src/org/chromium/webapk/shell_apk/h2o/LaunchTest.java b/chrome/android/webapk/shell_apk/junit/src/org/chromium/webapk/shell_apk/h2o/LaunchTest.java index 220bbf4..af35406 100644 --- a/chrome/android/webapk/shell_apk/junit/src/org/chromium/webapk/shell_apk/h2o/LaunchTest.java +++ b/chrome/android/webapk/shell_apk/junit/src/org/chromium/webapk/shell_apk/h2o/LaunchTest.java
@@ -791,7 +791,7 @@ (Class<? extends Activity>) Class.forName(startedActivityIntent.getComponent().getClassName()); } catch (ClassNotFoundException e) { - Assert.fail(); + throw new RuntimeException(e); } buildActivityFully(startedActivityClass, startedActivityIntent); }
diff --git a/chrome/app/password_manager_ui_strings.grdp b/chrome/app/password_manager_ui_strings.grdp index cecc390..472b4689 100644 --- a/chrome/app/password_manager_ui_strings.grdp +++ b/chrome/app/password_manager_ui_strings.grdp
@@ -3,6 +3,9 @@ <message name="IDS_PASSWORD_MANAGER_UI_TITLE" desc="Title of the Password Manager page"> Password Manager </message> + <message name="IDS_PASSWORD_MANAGER_UI_DESCRIPTION" desc="A description of the application."> + Keep track of your passwords and manage them in one place. + </message> <message name="IDS_PASSWORD_MANAGER_UI_SEARCH_PROMPT" desc="Placeholder in the search field."> Search passwords </message>
diff --git a/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_DESCRIPTION.png.sha1 b/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_DESCRIPTION.png.sha1 new file mode 100644 index 0000000..fea542d1 --- /dev/null +++ b/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_DESCRIPTION.png.sha1
@@ -0,0 +1 @@ +2cf2992540345256c40454c85504ea2c3e6bd17c \ No newline at end of file
diff --git a/chrome/browser/ash/accessibility/service/automation_client_impl.cc b/chrome/browser/ash/accessibility/service/automation_client_impl.cc index cd8d8fe..f6db723aa 100644 --- a/chrome/browser/ash/accessibility/service/automation_client_impl.cc +++ b/chrome/browser/ash/accessibility/service/automation_client_impl.cc
@@ -3,10 +3,12 @@ // found in the LICENSE file. #include "chrome/browser/ash/accessibility/service/automation_client_impl.h" + #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h" #include "extensions/browser/api/automation_internal/automation_event_router.h" #include "extensions/browser/api/automation_internal/automation_internal_api.h" #include "mojo/public/cpp/bindings/pending_associated_remote.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" namespace ash { @@ -55,8 +57,8 @@ } void AutomationClientImpl::DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) { - ui::AXTreeID tree_id = details.ax_tree_id; + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) { if (tree_id == ui::AXTreeIDUnknown()) return; for (auto& remote : automation_remotes_) {
diff --git a/chrome/browser/ash/accessibility/service/automation_client_impl.h b/chrome/browser/ash/accessibility/service/automation_client_impl.h index 3588d42..74f4b104 100644 --- a/chrome/browser/ash/accessibility/service/automation_client_impl.h +++ b/chrome/browser/ash/accessibility/service/automation_client_impl.h
@@ -11,6 +11,7 @@ #include "mojo/public/cpp/bindings/remote_set.h" #include "services/accessibility/public/mojom/automation.mojom.h" #include "services/accessibility/public/mojom/automation_client.mojom.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" namespace ash { @@ -51,7 +52,8 @@ const gfx::Point& mouse_location, const std::vector<ui::AXEvent>& events) override; void DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) override; + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) override; void DispatchTreeDestroyedEvent(ui::AXTreeID tree_id) override; void DispatchActionResult(const ui::AXActionData& data, bool result,
diff --git a/chrome/browser/ash/arc/accessibility/arc_accessibility_helper_bridge_browsertest.cc b/chrome/browser/ash/arc/accessibility/arc_accessibility_helper_bridge_browsertest.cc index 733b30a..871e611 100644 --- a/chrome/browser/ash/arc/accessibility/arc_accessibility_helper_bridge_browsertest.cc +++ b/chrome/browser/ash/arc/accessibility/arc_accessibility_helper_bridge_browsertest.cc
@@ -62,7 +62,8 @@ const std::vector<ui::AXEvent>& events) override {} void DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) override {} + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) override {} void DispatchTreeDestroyedEvent(ui::AXTreeID tree_id) override {}
diff --git a/chrome/browser/ash/crosapi/automation_ash.cc b/chrome/browser/ash/crosapi/automation_ash.cc index 65711581..e1b9ac39 100644 --- a/chrome/browser/ash/crosapi/automation_ash.cc +++ b/chrome/browser/ash/crosapi/automation_ash.cc
@@ -4,6 +4,9 @@ #include "chrome/browser/ash/crosapi/automation_ash.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" +#include "ui/accessibility/ax_tree_id.h" + namespace crosapi { AutomationAsh::AutomationAsh() { @@ -63,12 +66,12 @@ const base::UnguessableToken& tree_id, int32_t node_id, const ui::AXRelativeBounds& bounds) { - ui::AXLocationChanges details; - details.ax_tree_id = ui::AXTreeID::FromToken(tree_id); + ui::AXLocationChange details; details.id = node_id; details.new_location = bounds; + ui::AXTreeID ui_tree_id = ui::AXTreeID::FromToken(tree_id); extensions::AutomationEventRouter::GetInstance() - ->DispatchAccessibilityLocationChange(details); + ->DispatchAccessibilityLocationChange(ui_tree_id, details); } void AutomationAsh::DispatchTreeDestroyedEvent(
diff --git a/chrome/browser/ash/crostini/crostini_export_import.cc b/chrome/browser/ash/crostini/crostini_export_import.cc index 45d6cd8..962f33e 100644 --- a/chrome/browser/ash/crostini/crostini_export_import.cc +++ b/chrome/browser/ash/crostini/crostini_export_import.cc
@@ -367,7 +367,12 @@ std::move(callback))); break; case ExportImportType::IMPORT_DISK_IMAGE: - LOG(ERROR) << "Importing disk images is currently unimplemented"; + crostini::CrostiniManager::GetForProfile(profile_)->StopVm( + operation_data->container_id.vm_name, + base::BindOnce(&CrostiniExportImport::ImportDiskImage, + weak_ptr_factory_.GetWeakPtr(), + operation_data->container_id, path, + std::move(callback))); break; } } @@ -399,12 +404,44 @@ CrostiniManager::GetForProfile(profile_)->ExportDiskImage( container_id, user->username_hash(), path, /*force=*/false, - base::BindOnce(&CrostiniExportImport::AfterExportDiskImage, + base::BindOnce(&CrostiniExportImport::AfterDiskImageOperation, weak_ptr_factory_.GetWeakPtr(), container_id, std::move(callback))); } -void CrostiniExportImport::AfterExportDiskImage( +void CrostiniExportImport::ImportDiskImage( + const guest_os::GuestId& container_id, + const base::FilePath& path, + CrostiniManager::CrostiniResultCallback callback, + CrostiniResult result) { + if (result == CrostiniResult::VM_STOP_FAILED) { + LOG(ERROR) << "Unable to stop VM, cannot import disk image"; + std::move(callback).Run(CrostiniResult::DISK_IMAGE_FAILED); + return; + } + + ash::ProfileHelper* profile_helper = ash::ProfileHelper::Get(); + if (!profile_helper) { + LOG(ERROR) << "Unable to get profile helper"; + std::move(callback).Run(CrostiniResult::DISK_IMAGE_FAILED); + return; + } + user_manager::User* user = profile_helper->GetUserByProfile(profile_); + + if (!user) { + LOG(ERROR) << "Unable to get user"; + std::move(callback).Run(CrostiniResult::DISK_IMAGE_FAILED); + return; + } + + CrostiniManager::GetForProfile(profile_)->ImportDiskImage( + container_id, user->username_hash(), path, + base::BindOnce(&CrostiniExportImport::AfterDiskImageOperation, + weak_ptr_factory_.GetWeakPtr(), container_id, + std::move(callback))); +} + +void CrostiniExportImport::AfterDiskImageOperation( const guest_os::GuestId& container_id, CrostiniManager::CrostiniResultCallback callback, CrostiniResult result) { @@ -858,6 +895,7 @@ manager.CancelImportLxdContainer(std::move(container_id)); return; case ExportImportType::EXPORT_DISK_IMAGE: + case ExportImportType::IMPORT_DISK_IMAGE: manager.CancelDiskImageOp(std::move(container_id)); return; default:
diff --git a/chrome/browser/ash/crostini/crostini_export_import.h b/chrome/browser/ash/crostini/crostini_export_import.h index e30a963..be22348 100644 --- a/chrome/browser/ash/crostini/crostini_export_import.h +++ b/chrome/browser/ash/crostini/crostini_export_import.h
@@ -202,6 +202,11 @@ FRIEND_TEST_ALL_PREFIXES(CrostiniExportImportTest, TestExportDiskImageFail); FRIEND_TEST_ALL_PREFIXES(CrostiniExportImportTest, TestExportDiskImageCancelled); + FRIEND_TEST_ALL_PREFIXES(CrostiniExportImportTest, + TestImportDiskImageSuccess); + FRIEND_TEST_ALL_PREFIXES(CrostiniExportImportTest, TestImportDiskImageFail); + FRIEND_TEST_ALL_PREFIXES(CrostiniExportImportTest, + TestImportDiskImageCancelled); void FillOperationData(ExportImportType type, guest_os::GuestId id, @@ -255,9 +260,14 @@ CrostiniManager::CrostiniResultCallback callback, CrostiniResult result); - void AfterExportDiskImage(const guest_os::GuestId& container_id, - CrostiniManager::CrostiniResultCallback callback, - CrostiniResult result); + void ImportDiskImage(const guest_os::GuestId& container_id, + const base::FilePath& path, + CrostiniManager::CrostiniResultCallback callback, + CrostiniResult result); + + void AfterDiskImageOperation(const guest_os::GuestId& container_id, + CrostiniManager::CrostiniResultCallback callback, + CrostiniResult result); void ExportAfterSharing(const guest_os::GuestId& container_id, const base::FilePath& path,
diff --git a/chrome/browser/ash/crostini/crostini_export_import_status_tracker.cc b/chrome/browser/ash/crostini/crostini_export_import_status_tracker.cc index 9685a77..e300ae7 100644 --- a/chrome/browser/ash/crostini/crostini_export_import_status_tracker.cc +++ b/chrome/browser/ash/crostini/crostini_export_import_status_tracker.cc
@@ -18,7 +18,8 @@ base::FilePath path) : type_(type), path_(path) { DCHECK(type == ExportImportType::EXPORT || type == ExportImportType::IMPORT || - type == ExportImportType::EXPORT_DISK_IMAGE); + type == ExportImportType::EXPORT_DISK_IMAGE || + type == ExportImportType::IMPORT_DISK_IMAGE); } CrostiniExportImportStatusTracker::~CrostiniExportImportStatusTracker() =
diff --git a/chrome/browser/ash/crostini/crostini_export_import_unittest.cc b/chrome/browser/ash/crostini/crostini_export_import_unittest.cc index 550f9329..e65b5a3 100644 --- a/chrome/browser/ash/crostini/crostini_export_import_unittest.cc +++ b/chrome/browser/ash/crostini/crostini_export_import_unittest.cc
@@ -28,6 +28,7 @@ #include "chromeos/ash/components/dbus/seneschal/fake_seneschal_client.h" #include "chromeos/ash/components/dbus/seneschal/seneschal_client.h" #include "chromeos/ash/components/dbus/seneschal/seneschal_service.pb.h" +#include "chromeos/ash/components/dbus/vm_concierge/concierge_service.pb.h" #include "components/prefs/pref_service.h" #include "content/public/test/browser_task_environment.h" #include "storage/browser/file_system/external_mount_points.h" @@ -120,6 +121,12 @@ ash::FakeConciergeClient::Get()->NotifyDiskImageProgress(signal); } + void SetImportResponse() { + vm_tools::concierge::ImportDiskImageResponse response; + response.set_status(vm_tools::concierge::DISK_STATUS_IN_PROGRESS); + ash::FakeConciergeClient::Get()->set_import_disk_image_response(response); + } + void SendImportProgress( const guest_os::GuestId& container_id, vm_tools::cicerone::ImportLxdContainerProgressSignal_Status status, @@ -398,6 +405,176 @@ } } +TEST_F(CrostiniExportImportTest, TestImportDiskImageSuccess) { + SetImportResponse(); + crostini_export_import_->FillOperationData( + ExportImportType::IMPORT_DISK_IMAGE); + base::ScopedTempFile zipfile; + EXPECT_TRUE(zipfile.Create()); + crostini_export_import_->FileSelected(ui::SelectedFileInfo(zipfile.path()), + 0); + task_environment_.RunUntilIdle(); + base::WeakPtr<CrostiniExportImportNotificationController> controller = + GetController(default_container_id_); + ASSERT_NE(controller, nullptr); + EXPECT_EQ(controller->status(), + CrostiniExportImportStatusTracker::Status::RUNNING); + + std::string notification_id; + { + const message_center::Notification& notification = + GetNotification(default_container_id_); + notification_id = notification.id(); + EXPECT_EQ(notification.progress(), 0); + EXPECT_TRUE(notification.pinned()); + } + + // 50% done. + SendDiskImageProgress(default_container_id_, + vm_tools::concierge::DISK_STATUS_IN_PROGRESS, 50); + ASSERT_NE(controller, nullptr); + EXPECT_EQ(controller->status(), + CrostiniExportImportStatusTracker::Status::RUNNING); + { + const message_center::Notification& notification = + GetNotification(default_container_id_); + EXPECT_EQ(notification.id(), notification_id); + EXPECT_EQ(notification.progress(), 50); + EXPECT_TRUE(notification.pinned()); + } + + // Close notification and update progress. Should not update notification. + controller->get_delegate()->Close(false); + SendDiskImageProgress(default_container_id_, + vm_tools::concierge::DISK_STATUS_IN_PROGRESS, 60); + ASSERT_NE(controller, nullptr); + EXPECT_EQ(controller->status(), + CrostiniExportImportStatusTracker::Status::RUNNING); + { + const message_center::Notification& notification = + GetNotification(default_container_id_); + EXPECT_EQ(notification.id(), notification_id); + EXPECT_EQ(notification.progress(), 50); + EXPECT_TRUE(notification.pinned()); + } + + // Done. + SendDiskImageProgress(default_container_id_, + vm_tools::concierge::DISK_STATUS_CREATED, 100); + EXPECT_EQ(GetController(default_container_id_), nullptr); + EXPECT_EQ(controller, nullptr); + { + const std::optional<message_center::Notification> ui_notification = + notification_display_service_->GetNotification(notification_id); + ASSERT_NE(ui_notification, std::nullopt); + EXPECT_FALSE(ui_notification->pinned()); + std::string msg("Linux apps & files have been successfully replaced"); + EXPECT_EQ(ui_notification->message(), base::UTF8ToUTF16(msg)); + } +} + +TEST_F(CrostiniExportImportTest, TestImportDiskImageFail) { + SetImportResponse(); + crostini_export_import_->FillOperationData( + ExportImportType::IMPORT_DISK_IMAGE); + base::ScopedTempFile zipfile; + EXPECT_TRUE(zipfile.Create()); + crostini_export_import_->FileSelected(ui::SelectedFileInfo(zipfile.path()), + 0); + task_environment_.RunUntilIdle(); + base::WeakPtr<CrostiniExportImportNotificationController> controller = + GetController(default_container_id_); + ASSERT_NE(controller, nullptr); + EXPECT_EQ(controller->status(), + CrostiniExportImportStatusTracker::Status::RUNNING); + + std::string notification_id; + { + const message_center::Notification& notification = + GetNotification(default_container_id_); + notification_id = notification.id(); + EXPECT_EQ(notification.progress(), 0); + EXPECT_TRUE(notification.pinned()); + } + + // Fails. + SendDiskImageProgress(default_container_id_, + vm_tools::concierge::DISK_STATUS_FAILED, 0); + EXPECT_EQ(GetController(default_container_id_), nullptr); + EXPECT_EQ(controller, nullptr); + { + const std::optional<message_center::Notification> ui_notification = + notification_display_service_->GetNotification(notification_id); + ASSERT_NE(ui_notification, std::nullopt); + EXPECT_FALSE(ui_notification->pinned()); + std::string msg("Restoring couldn't be completed due to an error"); + EXPECT_EQ(ui_notification->message(), base::UTF8ToUTF16(msg)); + } +} + +TEST_F(CrostiniExportImportTest, TestImportDiskImageCancelled) { + SetImportResponse(); + base::ScopedTempFile zipfile; + EXPECT_TRUE(zipfile.Create()); + crostini_export_import_->FillOperationData( + ExportImportType::IMPORT_DISK_IMAGE, custom_container_id_); + crostini_export_import_->FileSelected(ui::SelectedFileInfo(zipfile.path()), + 0); + task_environment_.RunUntilIdle(); + base::WeakPtr<CrostiniExportImportNotificationController> controller = + GetController(custom_container_id_); + ASSERT_NE(controller, nullptr); + EXPECT_EQ(controller->status(), + CrostiniExportImportStatusTracker::Status::RUNNING); + + std::string notification_id; + { + const message_center::Notification& notification = + GetNotification(custom_container_id_); + notification_id = notification.id(); + EXPECT_EQ(notification.progress(), 0); + EXPECT_TRUE(notification.pinned()); + } + + // CANCEL: + crostini_export_import_->CancelOperation(ExportImportType::IMPORT_DISK_IMAGE, + custom_container_id_); + ASSERT_NE(controller, nullptr); + EXPECT_EQ(controller->status(), + CrostiniExportImportStatusTracker::Status::CANCELLING); + { + const message_center::Notification& notification = + GetNotification(custom_container_id_); + EXPECT_EQ(notification.id(), notification_id); + EXPECT_EQ(notification.progress(), -1); + EXPECT_FALSE(notification.pinned()); + } + + // Should not be displayed as cancel is in progress + SendDiskImageProgress(default_container_id_, + vm_tools::concierge::DISK_STATUS_IN_PROGRESS, 7); + ASSERT_NE(controller, nullptr); + EXPECT_EQ(controller->status(), + CrostiniExportImportStatusTracker::Status::CANCELLING); + { + const message_center::Notification& notification = + GetNotification(custom_container_id_); + EXPECT_EQ(notification.id(), notification_id); + EXPECT_EQ(notification.progress(), -1); + EXPECT_FALSE(notification.pinned()); + } + + // CANCELLED: + task_environment_.RunUntilIdle(); + EXPECT_EQ(GetController(custom_container_id_), nullptr); + EXPECT_EQ(controller, nullptr); + { + const std::optional<message_center::Notification> ui_notification = + notification_display_service_->GetNotification(notification_id); + EXPECT_EQ(ui_notification, std::nullopt); + } +} + TEST_F(CrostiniExportImportTest, TestExportSuccess) { crostini_export_import_->FillOperationData(ExportImportType::EXPORT); crostini_export_import_->FileSelected(ui::SelectedFileInfo(tarball_), 0);
diff --git a/chrome/browser/ash/crostini/crostini_manager.cc b/chrome/browser/ash/crostini/crostini_manager.cc index c3257e6c..8b237708 100644 --- a/chrome/browser/ash/crostini/crostini_manager.cc +++ b/chrome/browser/ash/crostini/crostini_manager.cc
@@ -1867,13 +1867,13 @@ return; } if (user_id_hash.empty()) { - LOG(ERROR) << "vm_name is required"; + LOG(ERROR) << "user_id_hash is required"; std::move(callback).Run(CrostiniResult::CLIENT_ERROR); return; } if (disk_image_callbacks_.find(vm_id) != disk_image_callbacks_.end()) { - LOG(ERROR) << "Disk image export currently running for " << vm_id; + LOG(ERROR) << "Disk image operation currently running for " << vm_id; std::move(callback).Run(CrostiniResult::DISK_IMAGE_FAILED); } disk_image_callbacks_.emplace(vm_id, std::move(callback)); @@ -1930,6 +1930,76 @@ disk_image_uuid_to_guest_id_.emplace(response->command_uuid(), vm_id); } +void CrostiniManager::ImportDiskImage(guest_os::GuestId vm_id, + std::string user_id_hash, + base::FilePath import_path, + CrostiniResultCallback callback) { + if (vm_id.vm_name.empty()) { + LOG(ERROR) << "vm_name is required"; + std::move(callback).Run(CrostiniResult::CLIENT_ERROR); + return; + } + if (user_id_hash.empty()) { + LOG(ERROR) << "user_id_hash is required"; + std::move(callback).Run(CrostiniResult::CLIENT_ERROR); + return; + } + + if (disk_image_callbacks_.find(vm_id) != disk_image_callbacks_.end()) { + LOG(ERROR) << "Disk image operation currently running for " << vm_id; + std::move(callback).Run(CrostiniResult::DISK_IMAGE_FAILED); + } + disk_image_callbacks_.emplace(vm_id, std::move(callback)); + + base::File file(import_path, base::File::FLAG_OPEN | base::File::FLAG_READ); + if (!file.IsValid()) { + LOG(ERROR) << "Failed to open " << import_path; + return; + } + + vm_tools::concierge::ImportDiskImageRequest request; + request.set_vm_name(vm_id.vm_name); + request.set_cryptohome_id(user_id_hash); + // All vm's are stored in root except pluginvm, which is not supported in this + // flow. + request.set_storage_location(vm_tools::concierge::STORAGE_CRYPTOHOME_ROOT); + request.set_source_size(file.GetLength()); + + GetConciergeClient()->ImportDiskImage( + base::ScopedFD(file.TakePlatformFile()), std::move(request), + base::BindOnce(&CrostiniManager::OnImportDiskImage, + weak_ptr_factory_.GetWeakPtr(), vm_id)); +} + +void CrostiniManager::OnImportDiskImage( + guest_os::GuestId vm_id, + std::optional<vm_tools::concierge::ImportDiskImageResponse> response) { + auto it = disk_image_callbacks_.find(vm_id); + if (it == disk_image_callbacks_.end()) { + LOG(ERROR) << "No import callback for " << vm_id; + return; + } + + if (!response) { + LOG(ERROR) << "Failed to import disk image. Empty response."; + std::move(it->second).Run(CrostiniResult::DISK_IMAGE_FAILED); + disk_image_callbacks_.erase(it); + return; + } + + // If import has started, the callback will be invoked when the + // DiskImageProgressSignal signal indicates that import is + // complete, otherwise this is an error. + if (response->status() != vm_tools::concierge::DISK_STATUS_IN_PROGRESS) { + LOG(ERROR) << "Failed to import image: status=" << response->status() + << ", failure_reason=" << response->failure_reason(); + std::move(it->second).Run(CrostiniResult::DISK_IMAGE_FAILED); + disk_image_callbacks_.erase(it); + } + + disk_image_uuid_to_guest_id_.emplace(response->command_uuid(), vm_id); +} + void CrostiniManager::OnDiskImageProgress( const vm_tools::concierge::DiskImageStatusResponse& signal) { bool call_observers = false;
diff --git a/chrome/browser/ash/crostini/crostini_manager.h b/chrome/browser/ash/crostini/crostini_manager.h index 01807b75..b7aaa86 100644 --- a/chrome/browser/ash/crostini/crostini_manager.h +++ b/chrome/browser/ash/crostini/crostini_manager.h
@@ -335,6 +335,15 @@ bool force, CrostiniResultCallback callback); + // Checks the arguments for exporting a vm disk image via + // ConciergeClient::ImportDiskImage. |callback| is called immedaitely if the + // arguments are bad, or after the method call finishes. + // using DiskImageCallback = base::OnceCallback<void(CrostiniResult result)>; + void ImportDiskImage(guest_os::GuestId vm_id, + std::string user_id_hash, + base::FilePath import_path, + CrostiniResultCallback callback); + // Checks the arguments for exporting an Lxd container via // CiceroneClient::ExportLxdContainer. |callback| is called immediately if the // arguments are bad, or after the method call finishes. @@ -704,6 +713,12 @@ guest_os::GuestId vm_id, std::optional<vm_tools::concierge::ExportDiskImageResponse> response); + // Callback for ConciergeClient::ImportDiskImage. Called after the Concierge + // service method finishes. + void OnImportDiskImage( + guest_os::GuestId vm_id, + std::optional<vm_tools::concierge::ImportDiskImageResponse> response); + // Callback for CiceroneClient::CreateLxdContainer. May indicate the container // is still being created, in which case we will wait for an // OnLxdContainerCreated event.
diff --git a/chrome/browser/ash/crostini/crostini_manager_unittest.cc b/chrome/browser/ash/crostini/crostini_manager_unittest.cc index e7ce53a..336de0eb 100644 --- a/chrome/browser/ash/crostini/crostini_manager_unittest.cc +++ b/chrome/browser/ash/crostini/crostini_manager_unittest.cc
@@ -2067,6 +2067,80 @@ EXPECT_EQ(result_future.Get<0>(), CrostiniResult::SUCCESS); } +TEST_F(CrostiniManagerTest, ImportDiskImageFailure) { + base::ScopedTempFile import_path; + EXPECT_TRUE(import_path.Create()); + TestFuture<CrostiniResult> result_future; + EXPECT_EQ(fake_concierge_client_->import_disk_image_call_count(), 0); + + vm_tools::concierge::ImportDiskImageResponse failure_response; + failure_response.set_status(vm_tools::concierge::DISK_STATUS_FAILED); + fake_concierge_client_->set_import_disk_image_response(failure_response); + + crostini_manager()->ImportDiskImage(container_id(), "my_cool_user_id_hash", + import_path.path(), + result_future.GetCallback()); + + EXPECT_EQ(fake_concierge_client_->import_disk_image_call_count(), 1); + EXPECT_EQ(result_future.Get<0>(), CrostiniResult::DISK_IMAGE_FAILED); +} + +TEST_F(CrostiniManagerTest, ImportDiskImageNoSpaceFailure) { + base::ScopedTempFile import_path; + EXPECT_TRUE(import_path.Create()); + TestFuture<CrostiniResult> result_future; + EXPECT_EQ(fake_concierge_client_->import_disk_image_call_count(), 0); + + vm_tools::concierge::DiskImageStatusResponse progress_signal; + progress_signal.set_status(vm_tools::concierge::DISK_STATUS_IN_PROGRESS); + progress_signal.set_progress(50); + vm_tools::concierge::DiskImageStatusResponse no_space_signal; + no_space_signal.set_status(vm_tools::concierge::DISK_STATUS_NOT_ENOUGH_SPACE); + std::vector<vm_tools::concierge::DiskImageStatusResponse> signals; + signals.emplace_back(progress_signal); + signals.emplace_back(no_space_signal); + fake_concierge_client_->set_disk_image_status_signals(signals); + + vm_tools::concierge::ImportDiskImageResponse response; + response.set_status(vm_tools::concierge::DISK_STATUS_IN_PROGRESS); + ash::FakeConciergeClient::Get()->set_import_disk_image_response(response); + + crostini_manager()->ImportDiskImage(container_id(), "my_cool_user_id_hash", + import_path.path(), + result_future.GetCallback()); + + EXPECT_EQ(fake_concierge_client_->import_disk_image_call_count(), 1); + EXPECT_EQ(result_future.Get<0>(), CrostiniResult::DISK_IMAGE_FAILED_NO_SPACE); +} + +TEST_F(CrostiniManagerTest, ImportDiskImageSuccess) { + base::ScopedTempFile import_path; + EXPECT_TRUE(import_path.Create()); + TestFuture<CrostiniResult> result_future; + EXPECT_EQ(fake_concierge_client_->import_disk_image_call_count(), 0); + + vm_tools::concierge::DiskImageStatusResponse progress_signal; + progress_signal.set_status(vm_tools::concierge::DISK_STATUS_IN_PROGRESS); + progress_signal.set_progress(50); + vm_tools::concierge::DiskImageStatusResponse done_signal; + done_signal.set_status(vm_tools::concierge::DISK_STATUS_CREATED); + std::vector<vm_tools::concierge::DiskImageStatusResponse> signals; + signals.emplace_back(progress_signal); + signals.emplace_back(done_signal); + fake_concierge_client_->set_disk_image_status_signals(signals); + + vm_tools::concierge::ImportDiskImageResponse response; + response.set_status(vm_tools::concierge::DISK_STATUS_IN_PROGRESS); + ash::FakeConciergeClient::Get()->set_import_disk_image_response(response); + + crostini_manager()->ImportDiskImage(container_id(), "my_cool_user_id_hash", + import_path.path(), + result_future.GetCallback()); + + EXPECT_EQ(fake_concierge_client_->import_disk_image_call_count(), 1); + EXPECT_EQ(result_future.Get<0>(), CrostiniResult::SUCCESS); +} + TEST_F(CrostiniManagerTest, ExportContainerSuccess) { uint64_t container_size = 123; uint64_t exported_size = 456;
diff --git a/chrome/browser/autofill/android/BUILD.gn b/chrome/browser/autofill/android/BUILD.gn index d558bd2..144a0ae 100644 --- a/chrome/browser/autofill/android/BUILD.gn +++ b/chrome/browser/autofill/android/BUILD.gn
@@ -29,6 +29,7 @@ "java/src/org/chromium/chrome/browser/autofill/editors/AddressEditorMediator.java", "java/src/org/chromium/chrome/browser/autofill/editors/DropdownFieldAdapter.java", "java/src/org/chromium/chrome/browser/autofill/editors/DropdownFieldView.java", + "java/src/org/chromium/chrome/browser/autofill/editors/EditTextNoAutofillView.java", "java/src/org/chromium/chrome/browser/autofill/editors/EditorBase.java", "java/src/org/chromium/chrome/browser/autofill/editors/EditorDialogToolbar.java", "java/src/org/chromium/chrome/browser/autofill/editors/EditorDialogView.java",
diff --git a/chrome/browser/autofill/android/java/res/layout/autofill_local_card_editor.xml b/chrome/browser/autofill/android/java/res/layout/autofill_local_card_editor.xml index 32f9774..cf09bbd 100644 --- a/chrome/browser/autofill/android/java/res/layout/autofill_local_card_editor.xml +++ b/chrome/browser/autofill/android/java/res/layout/autofill_local_card_editor.xml
@@ -21,7 +21,7 @@ app:errorTextAppearance="@style/TextAppearance.ErrorCaption"> <!-- TODO(crbug.com/40600572): Fix and remove lint ignore --> - <EditText + <org.chromium.chrome.browser.autofill.editors.EditTextNoAutofillView tools:ignore="Autofill,LabelFor" android:id="@+id/credit_card_number_edit" android:layout_width="match_parent" @@ -115,7 +115,7 @@ android:textAppearance="@style/TextAppearance.TextSmall.Secondary" android:text="@string/autofill_credit_card_editor_expiration_date" /> - <EditText + <org.chromium.chrome.browser.autofill.editors.EditTextNoAutofillView android:id="@+id/expiration_month_and_year" android:width="@dimen/local_card_expiration_date_editor_width" android:layout_width="match_parent" @@ -149,7 +149,7 @@ android:textAppearance="@style/TextAppearance.TextSmall.Secondary" android:text="@string/autofill_credit_card_editor_security_code" /> - <EditText + <org.chromium.chrome.browser.autofill.editors.EditTextNoAutofillView android:id="@+id/cvc" android:width="@dimen/local_card_cvc_editor_width" android:layout_width="match_parent" @@ -186,7 +186,7 @@ android:layout_marginBottom="@dimen/pref_autofill_field_bottom_margin"> <!-- TODO(crbug.com/40600572): Fix and remove lint ignore --> - <EditText + <org.chromium.chrome.browser.autofill.editors.EditTextNoAutofillView tools:ignore="Autofill,LabelFor" android:id="@+id/credit_card_name_edit" android:layout_width="match_parent" @@ -211,7 +211,7 @@ android:layout_marginTop="@dimen/pref_autofill_field_extra_large_top_margin" android:layout_marginBottom="@dimen/pref_autofill_field_bottom_margin"> - <EditText + <org.chromium.chrome.browser.autofill.editors.EditTextNoAutofillView tools:ignore="Autofill,LabelFor" android:id="@+id/credit_card_nickname_edit" android:maxLength="25"
diff --git a/chrome/browser/autofill/android/java/res/layout/autofill_local_iban_editor.xml b/chrome/browser/autofill/android/java/res/layout/autofill_local_iban_editor.xml index 0585be1e..508b1627 100644 --- a/chrome/browser/autofill/android/java/res/layout/autofill_local_iban_editor.xml +++ b/chrome/browser/autofill/android/java/res/layout/autofill_local_iban_editor.xml
@@ -20,7 +20,7 @@ android:layout_marginBottom="@dimen/pref_autofill_field_bottom_margin" app:errorTextAppearance="@style/TextAppearance.ErrorCaption"> - <EditText + <org.chromium.chrome.browser.autofill.editors.EditTextNoAutofillView tools:ignore="Autofill,LabelFor" android:id="@+id/iban_value_edit" android:layout_width="match_parent" @@ -44,7 +44,7 @@ android:layout_marginTop="@dimen/pref_autofill_field_extra_large_top_margin" android:layout_marginBottom="@dimen/pref_autofill_field_bottom_margin"> - <EditText + <org.chromium.chrome.browser.autofill.editors.EditTextNoAutofillView tools:ignore="Autofill,LabelFor" android:id="@+id/iban_nickname_edit" android:maxLength="25"
diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java index d4e7338..e124550 100644 --- a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java +++ b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java
@@ -829,26 +829,7 @@ public static String getBasicCardIssuerNetwork(String cardNumber, boolean emptyIfInvalid) { ThreadUtils.assertOnUiThread(); - return PersonalDataManagerJni.get() - .getBasicCardIssuerNetwork( - cardNumber, - emptyIfInvalid); - } - - public void addServerCreditCardForTest(CreditCard card) { - ThreadUtils.assertOnUiThread(); - assert !card.getIsLocal(); - PersonalDataManagerJni.get() - .addServerCreditCardForTest(mPersonalDataManagerAndroid, card); // IN-TEST - } - - public void addServerCreditCardForTestWithAdditionalFields( - CreditCard card, String nickname, int cardIssuer) { - ThreadUtils.assertOnUiThread(); - assert !card.getIsLocal(); - PersonalDataManagerJni.get() - .addServerCreditCardForTestWithAdditionalFields( - mPersonalDataManagerAndroid, card, nickname, cardIssuer); + return PersonalDataManagerJni.get().getBasicCardIssuerNetwork(cardNumber, emptyIfInvalid); } public void deleteCreditCard(String guid) { @@ -920,12 +901,6 @@ return PersonalDataManagerJni.get().getMaskedBankAccounts(mPersonalDataManagerAndroid); } - public void addMaskedBankAccountForTest(BankAccount bankAccount) { - ThreadUtils.assertOnUiThread(); - PersonalDataManagerJni.get() - .addMaskedBankAccountForTest(mPersonalDataManagerAndroid, bankAccount); - } - /** * Records the use of the profile associated with the specified {@code guid}. Effectively * increments the use count of the profile and sets its use date to the current time. Also logs @@ -938,25 +913,6 @@ PersonalDataManagerJni.get().recordAndLogProfileUse(mPersonalDataManagerAndroid, guid); } - protected void setProfileUseStatsForTesting(String guid, int count, int daysSinceLastUsed) { - ThreadUtils.assertOnUiThread(); - PersonalDataManagerJni.get() - .setProfileUseStatsForTesting( - mPersonalDataManagerAndroid, guid, count, daysSinceLastUsed); - } - - int getProfileUseCountForTesting(String guid) { - ThreadUtils.assertOnUiThread(); - return PersonalDataManagerJni.get() - .getProfileUseCountForTesting(mPersonalDataManagerAndroid, guid); // IN-TEST - } - - long getProfileUseDateForTesting(String guid) { - ThreadUtils.assertOnUiThread(); - return PersonalDataManagerJni.get() - .getProfileUseDateForTesting(mPersonalDataManagerAndroid, guid); // IN-TEST - } - /** * Records the use of the credit card associated with the specified {@code guid}. Effectively * increments the use count of the credit card and set its use date to the current time. Also @@ -969,44 +925,6 @@ PersonalDataManagerJni.get().recordAndLogCreditCardUse(mPersonalDataManagerAndroid, guid); } - protected void setCreditCardUseStatsForTesting(String guid, int count, int daysSinceLastUsed) { - ThreadUtils.assertOnUiThread(); - PersonalDataManagerJni.get() - .setCreditCardUseStatsForTesting( - mPersonalDataManagerAndroid, guid, count, daysSinceLastUsed); - } - - int getCreditCardUseCountForTesting(String guid) { - ThreadUtils.assertOnUiThread(); - return PersonalDataManagerJni.get() - .getCreditCardUseCountForTesting(mPersonalDataManagerAndroid, guid); // IN-TEST - } - - long getCreditCardUseDateForTesting(String guid) { - ThreadUtils.assertOnUiThread(); - return PersonalDataManagerJni.get() - .getCreditCardUseDateForTesting(mPersonalDataManagerAndroid, guid); // IN-TEST - } - - long getCurrentDateForTesting() { - ThreadUtils.assertOnUiThread(); - return PersonalDataManagerJni.get() - .getCurrentDateForTesting(mPersonalDataManagerAndroid); // IN-TEST - } - - long getDateNDaysAgoForTesting(int days) { - ThreadUtils.assertOnUiThread(); - return PersonalDataManagerJni.get() - .getDateNDaysAgoForTesting( // IN-TEST - mPersonalDataManagerAndroid, days); - } - - protected void clearServerDataForTesting() { - ThreadUtils.assertOnUiThread(); - PersonalDataManagerJni.get() - .clearServerDataForTesting(mPersonalDataManagerAndroid); // IN-TEST - } - protected void clearImageDataForTesting() { if (mImageFetcher == null) { return; @@ -1189,10 +1107,6 @@ .isAutofillCreditCardManaged(mPersonalDataManagerAndroid); } - public void setSyncServiceForTesting() { - PersonalDataManagerJni.get().setSyncServiceForTesting(mPersonalDataManagerAndroid); - } - private void fetchCreditCardArtImages() { mImageFetcher.prefetchImages( getCreditCardsToSuggest().stream() @@ -1291,55 +1205,16 @@ String setCreditCard(long nativePersonalDataManagerAndroid, CreditCard card); - long getDateNDaysAgoForTesting(long nativePersonalDataManagerAndroid, int days); // IN-TEST - void updateServerCardBillingAddress(long nativePersonalDataManagerAndroid, CreditCard card); String getBasicCardIssuerNetwork(String cardNumber, boolean emptyIfInvalid); - void addServerCreditCardForTest( - long nativePersonalDataManagerAndroid, CreditCard card); // IN-TEST - - void addServerCreditCardForTestWithAdditionalFields( - long nativePersonalDataManagerAndroid, - CreditCard card, - String nickname, - int cardIssuer); - void removeByGUID(long nativePersonalDataManagerAndroid, String guid); void recordAndLogProfileUse(long nativePersonalDataManagerAndroid, String guid); - void setProfileUseStatsForTesting( - long nativePersonalDataManagerAndroid, - String guid, - int count, - int daysSinceLastUsed); - - int getProfileUseCountForTesting( - long nativePersonalDataManagerAndroid, String guid); // IN-TEST - - long getProfileUseDateForTesting( - long nativePersonalDataManagerAndroid, String guid); // IN-TEST - void recordAndLogCreditCardUse(long nativePersonalDataManagerAndroid, String guid); - void setCreditCardUseStatsForTesting( - long nativePersonalDataManagerAndroid, - String guid, - int count, - int daysSinceLastUsed); - - int getCreditCardUseCountForTesting( - long nativePersonalDataManagerAndroid, String guid); // IN-TEST - - long getCreditCardUseDateForTesting( - long nativePersonalDataManagerAndroid, String guid); // IN-TEST - - long getCurrentDateForTesting(long nativePersonalDataManagerAndroid); // IN-TEST - - void clearServerDataForTesting(long nativePersonalDataManagerAndroid); // IN-TEST - boolean hasProfiles(long nativePersonalDataManagerAndroid); boolean hasCreditCards(long nativePersonalDataManagerAndroid); @@ -1354,8 +1229,6 @@ String toCountryCode(String countryName); - void setSyncServiceForTesting(long nativePersonalDataManagerAndroid); - AutofillImageFetcher getOrCreateJavaImageFetcher(long nativePersonalDataManagerAndroid); void addServerIbanForTest(long nativePersonalDataManagerAndroid, Iban iban); // IN-TEST @@ -1369,8 +1242,5 @@ boolean isValidIban(long nativePersonalDataManagerAndroid, String ibanValue); BankAccount[] getMaskedBankAccounts(long nativePersonalDataManagerAndroid); - - void addMaskedBankAccountForTest( - long nativePersonalDataManagerAndroid, BankAccount bankAccount); // IN-TEST } }
diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/editors/EditTextNoAutofillView.java b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/editors/EditTextNoAutofillView.java new file mode 100644 index 0000000..4ff47d7 --- /dev/null +++ b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/editors/EditTextNoAutofillView.java
@@ -0,0 +1,24 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.autofill.editors; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.ViewStructure; +import android.widget.EditText; + +/** + * A wrapper class around {@link EditText} to stop Android Autofill from suggesting cards. This is + * achieved by overriding the {@code onProvideAutofillStructure} method. + */ +public class EditTextNoAutofillView extends EditText { + + public EditTextNoAutofillView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public void onProvideAutofillStructure(ViewStructure structure, int flags) {} +}
diff --git a/chrome/browser/autofill/android/personal_data_manager_android.cc b/chrome/browser/autofill/android/personal_data_manager_android.cc index ccbfda9..bb391bf 100644 --- a/chrome/browser/autofill/android/personal_data_manager_android.cc +++ b/chrome/browser/autofill/android/personal_data_manager_android.cc
@@ -390,32 +390,6 @@ {card}); } -void PersonalDataManagerAndroid::AddServerCreditCardForTest( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& jcard) { - std::unique_ptr<CreditCard> card = std::make_unique<CreditCard>(); - PopulateNativeCreditCardFromJava(jcard, env, card.get()); - card->set_record_type(CreditCard::RecordType::kMaskedServerCard); - personal_data_manager_->payments_data_manager().AddServerCreditCardForTest( - std::move(card)); - personal_data_manager_->NotifyPersonalDataObserver(); -} - -void PersonalDataManagerAndroid::AddServerCreditCardForTestWithAdditionalFields( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& jcard, - const base::android::JavaParamRef<jstring>& jnickname, - jint jcard_issuer) { - std::unique_ptr<CreditCard> card = std::make_unique<CreditCard>(); - PopulateNativeCreditCardFromJava(jcard, env, card.get()); - card->set_record_type(CreditCard::RecordType::kMaskedServerCard); - card->SetNickname(ConvertJavaStringToUTF16(jnickname)); - card->set_card_issuer(static_cast<CreditCard::Issuer>(jcard_issuer)); - personal_data_manager_->payments_data_manager().AddServerCreditCardForTest( - std::move(card)); - personal_data_manager_->NotifyPersonalDataObserver(); -} - void PersonalDataManagerAndroid::RemoveByGUID( JNIEnv* env, const JavaParamRef<jstring>& jguid) { @@ -446,39 +420,6 @@ } } -void PersonalDataManagerAndroid::SetProfileUseStatsForTesting( - JNIEnv* env, - const JavaParamRef<jstring>& jguid, - jint count, - jint days_since_last_used) { - DCHECK(count >= 0 && days_since_last_used >= 0); - - AutofillProfile profile = - *personal_data_manager_->address_data_manager().GetProfileByGUID( - ConvertJavaStringToUTF8(env, jguid)); - profile.set_use_count(static_cast<size_t>(count)); - profile.set_use_date(AutofillClock::Now() - base::Days(days_since_last_used)); - personal_data_manager_->address_data_manager().UpdateProfile(profile); -} - -jint PersonalDataManagerAndroid::GetProfileUseCountForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid) { - const AutofillProfile* profile = - personal_data_manager_->address_data_manager().GetProfileByGUID( - ConvertJavaStringToUTF8(env, jguid)); - return profile->use_count(); -} - -jlong PersonalDataManagerAndroid::GetProfileUseDateForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid) { - const AutofillProfile* profile = - personal_data_manager_->address_data_manager().GetProfileByGUID( - ConvertJavaStringToUTF8(env, jguid)); - return profile->use_date().ToTimeT(); -} - void PersonalDataManagerAndroid::RecordAndLogCreditCardUse( JNIEnv* env, const JavaParamRef<jstring>& jguid) { @@ -490,57 +431,6 @@ } } -void PersonalDataManagerAndroid::SetCreditCardUseStatsForTesting( - JNIEnv* env, - const JavaParamRef<jstring>& jguid, - jint count, - jint days_since_last_used) { - DCHECK(count >= 0 && days_since_last_used >= 0); - - CreditCard* card = - personal_data_manager_->payments_data_manager().GetCreditCardByGUID( - ConvertJavaStringToUTF8(env, jguid)); - card->set_use_count(static_cast<size_t>(count)); - card->set_use_date(AutofillClock::Now() - base::Days(days_since_last_used)); - - personal_data_manager_->NotifyPersonalDataObserver(); -} - -jint PersonalDataManagerAndroid::GetCreditCardUseCountForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid) { - const CreditCard* card = - personal_data_manager_->payments_data_manager().GetCreditCardByGUID( - ConvertJavaStringToUTF8(env, jguid)); - return card->use_count(); -} - -jlong PersonalDataManagerAndroid::GetCreditCardUseDateForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid) { - const CreditCard* card = - personal_data_manager_->payments_data_manager().GetCreditCardByGUID( - ConvertJavaStringToUTF8(env, jguid)); - return card->use_date().ToTimeT(); -} - -// TODO(crbug.com/40477114): Use a mock clock for testing. -jlong PersonalDataManagerAndroid::GetCurrentDateForTesting(JNIEnv* env) { - return base::Time::Now().ToTimeT(); -} - -jlong PersonalDataManagerAndroid::GetDateNDaysAgoForTesting( - JNIEnv* env, - jint days) { - return (AutofillClock::Now() - base::Days(days)).ToTimeT(); -} - -void PersonalDataManagerAndroid::ClearServerDataForTesting(JNIEnv* env) { - personal_data_manager_->payments_data_manager() - .ClearAllServerDataForTesting(); // IN-TEST - personal_data_manager_->NotifyPersonalDataObserver(); -} - jboolean PersonalDataManagerAndroid::HasProfiles(JNIEnv* env) { return !personal_data_manager_->address_data_manager().GetProfiles().empty(); } @@ -562,11 +452,6 @@ return IsCreditCardFidoAuthenticationEnabled(); } -void PersonalDataManagerAndroid::SetSyncServiceForTesting(JNIEnv* env) { - personal_data_manager_->payments_data_manager().SetSyncingForTest( - true); // IN-TEST -} - base::android::ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetOrCreateJavaImageFetcher(JNIEnv* env) { return static_cast<AutofillImageFetcherImpl*>( @@ -851,16 +736,6 @@ type.obj()); } -void PersonalDataManagerAndroid::AddMaskedBankAccountForTest( - JNIEnv* env, - const JavaParamRef<jobject>& jbank_account) { - BankAccount bank_account = - CreateNativeBankAccountFromJava(env, jbank_account); - personal_data_manager_->payments_data_manager().AddMaskedBankAccountForTest( - bank_account); // IN-TEST - personal_data_manager_->NotifyPersonalDataObserver(); -} - jboolean PersonalDataManagerAndroid::IsAutofillManaged(JNIEnv* env) { return prefs::IsAutofillManaged(prefs_); }
diff --git a/chrome/browser/autofill/android/personal_data_manager_android.h b/chrome/browser/autofill/android/personal_data_manager_android.h index 7d61499..10b744c 100644 --- a/chrome/browser/autofill/android/personal_data_manager_android.h +++ b/chrome/browser/autofill/android/personal_data_manager_android.h
@@ -160,19 +160,6 @@ JNIEnv* env, const base::android::JavaParamRef<jobject>& jcard); - // Adds a server credit card. Used only in tests. - void AddServerCreditCardForTest( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& jcard); - - // Adds a server credit card and sets the additional fields, for example, - // card_issuer, nickname. Used only in tests. - void AddServerCreditCardForTestWithAdditionalFields( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& jcard, - const base::android::JavaParamRef<jstring>& jnickname, - jint jcard_issuer); - // Removes the profile or credit card represented by |jguid|. void RemoveByGUID(JNIEnv* env, const base::android::JavaParamRef<jstring>& jguid); @@ -193,29 +180,6 @@ JNIEnv* env, const base::android::JavaParamRef<jstring>& jguid); - // Sets the use count and number of days since last use of the profile - // associated to the `jguid`. Both `count` and `days_since_last_used` should - // be non-negative. `days_since_last_used` represents the numbers of days - // since the profile was last used. - void SetProfileUseStatsForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid, - jint count, - jint days_since_last_used); - - // Returns the use count of the profile associated to the |jguid|. - jint GetProfileUseCountForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid); - - // Returns the use date of the profile associated to the |jguid|. It - // represents an absolute point in coordinated universal time (UTC) - // represented as microseconds since the Windows epoch. For more details see - // the comment header in time.h. - jlong GetProfileUseDateForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid); - // Records the use and log usage metrics for the credit card associated with // the |jguid|. Increments the use count of the credit card and sets its use // date to the current time. @@ -223,44 +187,6 @@ JNIEnv* env, const base::android::JavaParamRef<jstring>& jguid); - // Sets the use count and number of days since last use of the credit card - // associated to the`jguid`. Both `count` and `days_since_last_used` should be - // non-negative. `days_since_last_used` represents the numbers of days since - // the card was last used. - void SetCreditCardUseStatsForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid, - jint count, - jint days_since_last_used); - - // Returns the use count of the credit card associated to the |jguid|. - jint GetCreditCardUseCountForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid); - - // Returns the use date of the credit card associated to the |jguid|. It - // represents an absolute point in coordinated universal time (UTC) - // represented as microseconds since the Windows epoch. For more details see - // the comment header in time.h. - jlong GetCreditCardUseDateForTesting( - JNIEnv* env, - const base::android::JavaParamRef<jstring>& jguid); - - // Returns the current date represented as an absolute point in coordinated - // universal time (UTC) represented as microseconds since the Unix epoch. For - // more details see the comment header in time.h - jlong GetCurrentDateForTesting(JNIEnv* env); - - // Calculates a point in time `days` days ago from the current - // time. Returns the result as an absolute point in coordinated universal time - // (UTC) represented as microseconds since the Windows epoch. - jlong GetDateNDaysAgoForTesting( - JNIEnv* env, - jint days); - - // Clears server profiles and cards, to be used in tests only. - void ClearServerDataForTesting(JNIEnv* env); - // Checks whether the Autofill PersonalDataManager has profiles. jboolean HasProfiles(JNIEnv* env); @@ -270,8 +196,6 @@ // Checks whether FIDO authentication is available. jboolean IsFidoAuthenticationAvailable(JNIEnv* env); - void SetSyncServiceForTesting(JNIEnv* env); - // Get Java AutofillImageFetcher. base::android::ScopedJavaLocalRef<jobject> GetOrCreateJavaImageFetcher( JNIEnv* env); @@ -325,24 +249,18 @@ base::android::ScopedJavaLocalRef<jobjectArray> GetMaskedBankAccounts( JNIEnv* env); - // Add a BankAccount object to the existing list of BankAccounts stored in - // PersonalDataManager. - void AddMaskedBankAccountForTest( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& jbank_account); - // Create an object of Java BankAccount from native BankAccount. static base::android::ScopedJavaLocalRef<jobject> CreateJavaBankAccountFromNative(JNIEnv* env, const BankAccount& bank_account); - private: - ~PersonalDataManagerAndroid() override; - // Create an object of native BankAccount from Java BankAccount. static BankAccount CreateNativeBankAccountFromJava( JNIEnv* env, const base::android::JavaParamRef<jobject>& jbank_account); + private: + ~PersonalDataManagerAndroid() override; + // Returns the GUIDs of the |profiles| passed as parameter. base::android::ScopedJavaLocalRef<jobjectArray> GetProfileGUIDs( JNIEnv* env,
diff --git a/chrome/browser/autofill/test/BUILD.gn b/chrome/browser/autofill/test/BUILD.gn index f01aee0..b3f7b40 100644 --- a/chrome/browser/autofill/test/BUILD.gn +++ b/chrome/browser/autofill/test/BUILD.gn
@@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/config/android/rules.gni") +import("//third_party/jni_zero/jni_zero.gni") android_library("test_java") { testonly = true @@ -44,6 +45,7 @@ "//content/public/android:content_java", "//third_party/android_deps:espresso_java", "//third_party/hamcrest:hamcrest_java", + "//third_party/jni_zero:jni_zero_java", "//url:gurl_java", ] @@ -53,4 +55,24 @@ "//components/autofill/android:main_autofill_java", "//content/public/test/android:content_java_test_support", ] + + srcjar_deps = [ ":jni_headers" ] +} + +generate_jni("jni_headers") { + testonly = true + visibility = [ ":*" ] + sources = [ "android/java/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java" ] +} + +static_library("test_support") { + testonly = true + sources = [ "android/autofill_test_helper_android.cc" ] + deps = [ + ":jni_headers", + "//base", + "//chrome/browser", + "//chrome/browser/autofill", + "//components/autofill/core/browser", + ] }
diff --git a/chrome/browser/autofill/test/android/autofill_test_helper_android.cc b/chrome/browser/autofill/test/android/autofill_test_helper_android.cc new file mode 100644 index 0000000..89ea118 --- /dev/null +++ b/chrome/browser/autofill/test/android/autofill_test_helper_android.cc
@@ -0,0 +1,192 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <jni.h> + +#include <memory> + +#include "base/android/jni_string.h" +#include "base/android/scoped_java_ref.h" +#include "chrome/browser/autofill/android/personal_data_manager_android.h" +#include "chrome/browser/autofill/personal_data_manager_factory.h" +#include "chrome/browser/autofill/test/jni_headers/AutofillTestHelper_jni.h" +#include "chrome/browser/profiles/profile_manager.h" +#include "components/autofill/core/browser/data_model/bank_account.h" +#include "components/autofill/core/browser/data_model/credit_card.h" +#include "components/autofill/core/browser/personal_data_manager.h" +#include "components/autofill/core/common/autofill_clock.h" + +namespace autofill { +namespace { + +using ::base::android::ConvertJavaStringToUTF16; +using ::base::android::ConvertJavaStringToUTF8; +using ::base::android::JavaParamRef; + +PersonalDataManager* GetPersonalDataManagerForLastUsedProfile() { + return PersonalDataManagerFactory::GetForBrowserContext( + ProfileManager::GetLastUsedProfile()); +} + +} // anonymous namespace + +// static +jlong JNI_AutofillTestHelper_GetDateNDaysAgo(JNIEnv* env, jint days) { + return (AutofillClock::Now() - base::Days(days)).ToTimeT(); +} + +// static +void JNI_AutofillTestHelper_AddServerCreditCard( + JNIEnv* env, + const base::android::JavaParamRef<jobject>& jcard) { + std::unique_ptr<CreditCard> card = std::make_unique<CreditCard>(); + PersonalDataManagerAndroid::PopulateNativeCreditCardFromJava(jcard, env, + card.get()); + card->set_record_type(CreditCard::RecordType::kMaskedServerCard); + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + personal_data_manager->payments_data_manager().AddServerCreditCardForTest( + std::move(card)); + personal_data_manager->NotifyPersonalDataObserver(); +} + +// static +void JNI_AutofillTestHelper_AddServerCreditCardWithAdditionalFields( + JNIEnv* env, + const base::android::JavaParamRef<jobject>& jcard, + const base::android::JavaParamRef<jstring>& jnickname, + jint jcard_issuer) { + std::unique_ptr<CreditCard> card = std::make_unique<CreditCard>(); + PersonalDataManagerAndroid::PopulateNativeCreditCardFromJava(jcard, env, + card.get()); + card->set_record_type(CreditCard::RecordType::kMaskedServerCard); + card->SetNickname(ConvertJavaStringToUTF16(jnickname)); + card->set_card_issuer(static_cast<CreditCard::Issuer>(jcard_issuer)); + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + personal_data_manager->payments_data_manager().AddServerCreditCardForTest( + std::move(card)); + personal_data_manager->NotifyPersonalDataObserver(); +} + +// static +void JNI_AutofillTestHelper_SetProfileUseStats( + JNIEnv* env, + const JavaParamRef<jstring>& jguid, + jint count, + jint days_since_last_used) { + DCHECK(count >= 0 && days_since_last_used >= 0); + + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + AutofillProfile profile = + *personal_data_manager->address_data_manager().GetProfileByGUID( + ConvertJavaStringToUTF8(env, jguid)); + profile.set_use_count(static_cast<size_t>(count)); + profile.set_use_date(AutofillClock::Now() - base::Days(days_since_last_used)); + personal_data_manager->address_data_manager().UpdateProfile(profile); +} + +// static +jint JNI_AutofillTestHelper_GetProfileUseCount( + JNIEnv* env, + const base::android::JavaParamRef<jstring>& jguid) { + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + const AutofillProfile* profile = + personal_data_manager->address_data_manager().GetProfileByGUID( + ConvertJavaStringToUTF8(env, jguid)); + return profile->use_count(); +} + +// static +jlong JNI_AutofillTestHelper_GetProfileUseDate( + JNIEnv* env, + const base::android::JavaParamRef<jstring>& jguid) { + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + const AutofillProfile* profile = + personal_data_manager->address_data_manager().GetProfileByGUID( + ConvertJavaStringToUTF8(env, jguid)); + return profile->use_date().ToTimeT(); +} + +// static +void JNI_AutofillTestHelper_SetCreditCardUseStats( + JNIEnv* env, + const JavaParamRef<jstring>& jguid, + jint count, + jint days_since_last_used) { + DCHECK(count >= 0 && days_since_last_used >= 0); + + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + CreditCard* card = + personal_data_manager->payments_data_manager().GetCreditCardByGUID( + ConvertJavaStringToUTF8(env, jguid)); + card->set_use_count(static_cast<size_t>(count)); + card->set_use_date(AutofillClock::Now() - base::Days(days_since_last_used)); + + personal_data_manager->NotifyPersonalDataObserver(); +} + +// static +jint JNI_AutofillTestHelper_GetCreditCardUseCount( + JNIEnv* env, + const base::android::JavaParamRef<jstring>& jguid) { + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + const CreditCard* card = + personal_data_manager->payments_data_manager().GetCreditCardByGUID( + ConvertJavaStringToUTF8(env, jguid)); + return card->use_count(); +} + +// static +jlong JNI_AutofillTestHelper_GetCreditCardUseDate( + JNIEnv* env, + const base::android::JavaParamRef<jstring>& jguid) { + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + const CreditCard* card = + personal_data_manager->payments_data_manager().GetCreditCardByGUID( + ConvertJavaStringToUTF8(env, jguid)); + return card->use_date().ToTimeT(); +} + +// TODO(crbug.com/40477114): Use a mock clock for testing. +jlong JNI_AutofillTestHelper_GetCurrentDate(JNIEnv* env) { + return base::Time::Now().ToTimeT(); +} + +// static +void JNI_AutofillTestHelper_ClearServerData(JNIEnv* env) { + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + personal_data_manager->payments_data_manager().ClearAllServerDataForTesting(); + personal_data_manager->NotifyPersonalDataObserver(); +} + +// static +void JNI_AutofillTestHelper_SetSyncService(JNIEnv* env) { + GetPersonalDataManagerForLastUsedProfile() + ->payments_data_manager() + .SetSyncingForTest(true); +} + +// static +void JNI_AutofillTestHelper_AddMaskedBankAccount( + JNIEnv* env, + const JavaParamRef<jobject>& jbank_account) { + BankAccount bank_account = + PersonalDataManagerAndroid::CreateNativeBankAccountFromJava( + env, jbank_account); + PersonalDataManager* personal_data_manager = + GetPersonalDataManagerForLastUsedProfile(); + personal_data_manager->payments_data_manager().AddMaskedBankAccountForTest( + bank_account); + personal_data_manager->NotifyPersonalDataObserver(); +} + +} // namespace autofill
diff --git a/chrome/browser/autofill/test/android/java/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java b/chrome/browser/autofill/test/android/java/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java index 984725c3..1ab3dd6 100644 --- a/chrome/browser/autofill/test/android/java/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java +++ b/chrome/browser/autofill/test/android/java/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java
@@ -19,6 +19,8 @@ import androidx.test.espresso.util.HumanReadables; import org.hamcrest.Matcher; +import org.jni_zero.JNINamespace; +import org.jni_zero.NativeMethods; import org.chromium.base.test.util.CallbackHelper; import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard; @@ -39,6 +41,7 @@ import java.util.concurrent.TimeoutException; /** Helper class for testing AutofillProfiles. */ +@JNINamespace("autofill") public class AutofillTestHelper { private final CallbackHelper mOnPersonalDataChangedHelper = new CallbackHelper(); @@ -68,8 +71,7 @@ } void setSyncServiceForTesting() { - runOnUiThreadBlocking( - () -> getPersonalDataManagerForLastUsedProfile().setSyncServiceForTesting()); + runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().setSyncService()); } AutofillProfile getProfile(final String guid) { @@ -146,8 +148,7 @@ public void addServerCreditCard(final CreditCard card) throws TimeoutException { int callCount = mOnPersonalDataChangedHelper.getCallCount(); - runOnUiThreadBlocking( - () -> getPersonalDataManagerForLastUsedProfile().addServerCreditCardForTest(card)); + runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().addServerCreditCard(card)); mOnPersonalDataChangedHelper.waitForCallback(callCount); } @@ -156,8 +157,8 @@ int callCount = mOnPersonalDataChangedHelper.getCallCount(); runOnUiThreadBlocking( () -> - getPersonalDataManagerForLastUsedProfile() - .addServerCreditCardForTestWithAdditionalFields( + AutofillTestHelperJni.get() + .addServerCreditCardWithAdditionalFields( card, nickname, cardIssuer)); mOnPersonalDataChangedHelper.waitForCallback(callCount); } @@ -197,8 +198,8 @@ int callCount = mOnPersonalDataChangedHelper.getCallCount(); runOnUiThreadBlocking( () -> - getPersonalDataManagerForLastUsedProfile() - .setProfileUseStatsForTesting(guid, count, daysSinceLastUsed)); + AutofillTestHelperJni.get() + .setProfileUseStats(guid, count, daysSinceLastUsed)); mOnPersonalDataChangedHelper.waitForCallback(callCount); } @@ -209,10 +210,7 @@ * @return The non-negative use count of the profile. */ public int getProfileUseCountForTesting(final String guid) { - return runOnUiThreadBlocking( - () -> - getPersonalDataManagerForLastUsedProfile() - .getProfileUseCountForTesting(guid)); + return runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().getProfileUseCount(guid)); } /** @@ -224,8 +222,7 @@ * Windows epoch. For more details see the comment header in time.h. */ public long getProfileUseDateForTesting(final String guid) { - return runOnUiThreadBlocking( - () -> getPersonalDataManagerForLastUsedProfile().getProfileUseDateForTesting(guid)); + return runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().getProfileUseDate(guid)); } /** @@ -256,8 +253,8 @@ int callCount = mOnPersonalDataChangedHelper.getCallCount(); runOnUiThreadBlocking( () -> - getPersonalDataManagerForLastUsedProfile() - .setCreditCardUseStatsForTesting(guid, count, daysSinceLastUsed)); + AutofillTestHelperJni.get() + .setCreditCardUseStats(guid, count, daysSinceLastUsed)); mOnPersonalDataChangedHelper.waitForCallback(callCount); } @@ -268,10 +265,7 @@ * @return The non-negative use count of the credit card. */ public int getCreditCardUseCountForTesting(final String guid) { - return runOnUiThreadBlocking( - () -> - getPersonalDataManagerForLastUsedProfile() - .getCreditCardUseCountForTesting(guid)); + return runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().getCreditCardUseCount(guid)); } /** @@ -283,10 +277,7 @@ * the Windows epoch. For more details see the comment header in time.h. */ public long getCreditCardUseDateForTesting(final String guid) { - return runOnUiThreadBlocking( - () -> - getPersonalDataManagerForLastUsedProfile() - .getCreditCardUseDateForTesting(guid)); + return runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().getCreditCardUseDate(guid)); } /** @@ -297,8 +288,7 @@ * more details see the comment header in time.h. */ public long getCurrentDateForTesting() { - return runOnUiThreadBlocking( - () -> getPersonalDataManagerForLastUsedProfile().getCurrentDateForTesting()); + return runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().getCurrentDate()); } /** @@ -310,8 +300,7 @@ * For more details see the comment header in time.h. */ public long getDateNDaysAgoForTesting(final int days) { - return runOnUiThreadBlocking( - () -> getPersonalDataManagerForLastUsedProfile().getDateNDaysAgoForTesting(days)); + return runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().getDateNDaysAgo(days)); } public void addServerIban(final Iban iban) throws TimeoutException { @@ -347,8 +336,7 @@ * #addServerCreditCard(CreditCard)}}. */ public void clearAllDataForTesting() throws TimeoutException { - runOnUiThreadBlocking( - () -> getPersonalDataManagerForLastUsedProfile().clearServerDataForTesting()); + runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().clearServerData()); runOnUiThreadBlocking( () -> getPersonalDataManagerForLastUsedProfile().clearImageDataForTesting()); // Clear remaining local profiles and cards. @@ -489,10 +477,7 @@ } public static void addMaskedBankAccount(BankAccount bankAccount) { - runOnUiThreadBlocking( - () -> - getPersonalDataManagerForLastUsedProfile() - .addMaskedBankAccountForTest(bankAccount)); + runOnUiThreadBlocking(() -> AutofillTestHelperJni.get().addMaskedBankAccount(bankAccount)); } private void registerDataObserver() { @@ -588,4 +573,34 @@ /* source= */ InputDevice.SOURCE_CLASS_POINTER, /* flags= */ flags); } + + @NativeMethods + interface Natives { + long getDateNDaysAgo(int days); + + void addServerCreditCard(CreditCard card); + + void addServerCreditCardWithAdditionalFields( + CreditCard card, String nickname, int cardIssuer); + + void setProfileUseStats(String guid, int count, int daysSinceLastUsed); + + int getProfileUseCount(String guid); + + long getProfileUseDate(String guid); + + void setCreditCardUseStats(String guid, int count, int daysSinceLastUsed); + + int getCreditCardUseCount(String guid); + + long getCreditCardUseDate(String guid); + + long getCurrentDate(); + + void clearServerData(); + + void setSyncService(); + + void addMaskedBankAccount(BankAccount bankAccount); + } }
diff --git a/chrome/browser/commerce/coupons/android/BUILD.gn b/chrome/browser/commerce/coupons/android/BUILD.gn index 816ac8c43..9c0efc7 100644 --- a/chrome/browser/commerce/coupons/android/BUILD.gn +++ b/chrome/browser/commerce/coupons/android/BUILD.gn
@@ -36,8 +36,12 @@ android_resources("java_resources") { sources = [ + "java/res/drawable/discount_code_background.xml", + "java/res/drawable/discount_item_container_background.xml", "java/res/layout/discount_item_container.xml", "java/res/layout/discounts_content_container.xml", + "java/res/values/dimens.xml", + "java/res/values/styles.xml", ] deps = [
diff --git a/chrome/browser/commerce/coupons/android/java/res/drawable/discount_code_background.xml b/chrome/browser/commerce/coupons/android/java/res/drawable/discount_code_background.xml new file mode 100644 index 0000000..1c412eb --- /dev/null +++ b/chrome/browser/commerce/coupons/android/java/res/drawable/discount_code_background.xml
@@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2023 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<shape + xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <corners android:radius="@dimen/discount_code_background_radius"/> + <solid android:color="@color/price_drop_annotation_bg_color"/> +</shape> \ No newline at end of file
diff --git a/chrome/browser/commerce/coupons/android/java/res/drawable/discount_item_container_background.xml b/chrome/browser/commerce/coupons/android/java/res/drawable/discount_item_container_background.xml new file mode 100644 index 0000000..832b062 --- /dev/null +++ b/chrome/browser/commerce/coupons/android/java/res/drawable/discount_item_container_background.xml
@@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <solid android:color="@macro/default_bg_color"/> + <corners android:radius="@dimen/discount_item_container_background_radius" /> +</shape> \ No newline at end of file
diff --git a/chrome/browser/commerce/coupons/android/java/res/layout/discount_item_container.xml b/chrome/browser/commerce/coupons/android/java/res/layout/discount_item_container.xml index f108f8cf..0a95350 100644 --- a/chrome/browser/commerce/coupons/android/java/res/layout/discount_item_container.xml +++ b/chrome/browser/commerce/coupons/android/java/res/layout/discount_item_container.xml
@@ -9,7 +9,9 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height= "wrap_content" - android:orientation="horizontal"> + android:orientation="horizontal" + android:padding="@dimen/discount_item_container_padding" + android:background="@drawable/discount_item_container_background"> <!-- Discount content layout --> <LinearLayout @@ -20,13 +22,20 @@ <TextView android:id="@+id/discount_code" android:layout_width="wrap_content" - android:layout_height="wrap_content"/> + android:layout_height="wrap_content" + android:layout_marginBottom="@dimen/discount_code_bottom_margin" + android:paddingHorizontal="@dimen/discount_code_horizontal_padding" + android:paddingVertical="@dimen/discount_code_vertical_padding" + android:textAppearance="@style/TextAppearance.DiscountCodeText" + android:background="@drawable/discount_code_background"/> <TextView android:id="@+id/description_detail" + android:textAppearance="@style/TextAppearance.TextMedium.Primary" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/expiry_time" + android:textAppearance="@style/TextAppearance.TextSmall.Secondary" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
diff --git a/chrome/browser/commerce/coupons/android/java/res/values/dimens.xml b/chrome/browser/commerce/coupons/android/java/res/values/dimens.xml new file mode 100644 index 0000000..cd95d1a4 --- /dev/null +++ b/chrome/browser/commerce/coupons/android/java/res/values/dimens.xml
@@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2024 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<resources xmlns:tools="http://schemas.android.com/tools"> + <dimen name="discount_item_container_background_radius">16dp</dimen> + <dimen name="discount_item_container_padding">12dp</dimen> + <dimen name="discount_code_background_radius">4dp</dimen> + <dimen name="discount_code_bottom_margin">4dp</dimen> + <dimen name="discount_code_horizontal_padding">8dp</dimen> + <dimen name="discount_code_vertical_padding">2dp</dimen> + <dimen name="discount_item_divider_height">2dp</dimen> +</resources> \ No newline at end of file
diff --git a/chrome/browser/commerce/coupons/android/java/res/values/styles.xml b/chrome/browser/commerce/coupons/android/java/res/values/styles.xml new file mode 100644 index 0000000..1cb3c64e --- /dev/null +++ b/chrome/browser/commerce/coupons/android/java/res/values/styles.xml
@@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2014 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<resources xmlns:tools="http://schemas.android.com/tools"> + <style name="TextAppearance.DiscountCodeText" parent="TextAppearance.TextSmall.Primary"> + <item name="android:textColor">@color/price_drop_annotation_text_green</item> + </style> +</resources> \ No newline at end of file
diff --git a/chrome/browser/commerce/coupons/android/java/src/org/chromium/chrome/browser/commerce/coupons/DiscountsBottomSheetContentCoordinator.java b/chrome/browser/commerce/coupons/android/java/src/org/chromium/chrome/browser/commerce/coupons/DiscountsBottomSheetContentCoordinator.java index fa6e826..46b65b0a 100644 --- a/chrome/browser/commerce/coupons/android/java/src/org/chromium/chrome/browser/commerce/coupons/DiscountsBottomSheetContentCoordinator.java +++ b/chrome/browser/commerce/coupons/android/java/src/org/chromium/chrome/browser/commerce/coupons/DiscountsBottomSheetContentCoordinator.java
@@ -11,11 +11,14 @@ import static org.chromium.chrome.browser.commerce.CommerceBottomSheetContentProperties.TYPE; import android.content.Context; +import android.graphics.Rect; import android.view.LayoutInflater; import android.view.View; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView.ItemDecoration; +import androidx.recyclerview.widget.RecyclerView.State; import org.chromium.base.Callback; import org.chromium.base.supplier.Supplier; @@ -51,6 +54,23 @@ mContentRecyclerView = mDiscountsContentContainer.findViewById(R.id.discounts_content_recycler_view); mContentRecyclerView.setAdapter(adapter); + mContentRecyclerView.addItemDecoration( + new ItemDecoration() { + @Override + public void getItemOffsets( + @NonNull Rect outRect, + @NonNull View view, + @NonNull RecyclerView parent, + @NonNull State state) { + // Avoid adding top padding to the first item in the list. + if (parent.getChildAdapterPosition(view) != 0) { + outRect.top = + mContext.getResources() + .getDimensionPixelOffset( + R.dimen.discount_item_divider_height); + } + } + }); mMediator = new DiscountsBottomSheetContentMediator(context, tabSupplier, mModelList); }
diff --git a/chrome/browser/commerce/coupons/android/javatests/src/org/chromium/chrome/browser/commerce/coupons/DiscountsBottomSheetContentRenderTest.java b/chrome/browser/commerce/coupons/android/javatests/src/org/chromium/chrome/browser/commerce/coupons/DiscountsBottomSheetContentRenderTest.java index 52d2e32f..45fc8d3 100644 --- a/chrome/browser/commerce/coupons/android/javatests/src/org/chromium/chrome/browser/commerce/coupons/DiscountsBottomSheetContentRenderTest.java +++ b/chrome/browser/commerce/coupons/android/javatests/src/org/chromium/chrome/browser/commerce/coupons/DiscountsBottomSheetContentRenderTest.java
@@ -44,7 +44,10 @@ public class DiscountsBottomSheetContentRenderTest extends BlankUiTestActivityTestCase { @Rule public RenderTestRule mRenderTestRule = - RenderTestRule.Builder.withPublicCorpus().setBugComponent(UI_BROWSER_SHOPPING).build(); + RenderTestRule.Builder.withPublicCorpus() + .setRevision(1) + .setBugComponent(UI_BROWSER_SHOPPING) + .build(); @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule();
diff --git a/chrome/browser/download/android/download_controller.cc b/chrome/browser/download/android/download_controller.cc index d4932162..ebeb740 100644 --- a/chrome/browser/download/android/download_controller.cc +++ b/chrome/browser/download/android/download_controller.cc
@@ -24,7 +24,6 @@ #include "chrome/browser/android/profile_key_startup_accessor.h" #include "chrome/browser/android/profile_key_util.h" #include "chrome/browser/android/tab_android.h" -#include "chrome/browser/browser_process.h" #include "chrome/browser/download/android/dangerous_download_infobar_delegate.h" #include "chrome/browser/download/android/download_manager_service.h" #include "chrome/browser/download/android/download_utils.h" @@ -37,7 +36,6 @@ #include "chrome/browser/offline_pages/android/offline_page_bridge.h" #include "chrome/browser/permissions/permission_update_message_controller_android.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/safe_browsing/safe_browsing_service.h" #include "chrome/browser/ui/android/tab_model/tab_model.h" #include "chrome/browser/ui/android/tab_model/tab_model_list.h" #include "chrome/common/pref_names.h" @@ -49,9 +47,6 @@ #include "components/pdf/common/constants.h" #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" -#include "components/safe_browsing/android/safe_browsing_api_handler_bridge.h" -#include "components/safe_browsing/core/browser/db/database_manager.h" -#include "components/safe_browsing/core/browser/db/v4_protocol_manager_util.h" #include "components/safe_browsing/core/common/features.h" #include "components/strings/grit/components_strings.h" #include "content/public/browser/browser_context.h" @@ -190,64 +185,6 @@ !item->IsMustDownload() && item->IsTransient(); } -class DownloadBlocklistChecker - : public safe_browsing::SafeBrowsingDatabaseManager::Client, - public base::RefCounted<DownloadBlocklistChecker> { - public: - explicit DownloadBlocklistChecker(download::DownloadItem* item) - : url_chain_(item->GetUrlChain()) {} - - void Start() { - scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> database_manager; - if (g_browser_process->safe_browsing_service()) { - database_manager = - g_browser_process->safe_browsing_service()->database_manager(); - } - - if (!database_manager || - database_manager->CheckDownloadUrl(url_chain_, this)) { - Log(safe_browsing::SBThreatType::SB_THREAT_TYPE_SAFE); - } else { - // Add a reference to this object to prevent it from being destroyed - // before url checking result is returned. - AddRef(); - } - } - - private: - friend class base::RefCounted<DownloadBlocklistChecker>; - - ~DownloadBlocklistChecker() override = default; - - void Log(safe_browsing::SBThreatType threat_type) { - base::UmaHistogramEnumeration( - "SafeBrowsing.AndroidTelemetry.DownloadUrlChainThreatType", - threat_type); - } - - // SafeBrowsingDatabaseManager::Client: - void OnCheckDownloadUrlResult( - const std::vector<GURL>& url_chain, - safe_browsing::SBThreatType threat_type) override { - Log(threat_type); - Release(); // Balanced by AddRef in Start. - } - - std::vector<GURL> url_chain_; -}; - -void RecordDownloadBlocklistState(download::DownloadItem* item) { - // Startup in Chrome minimal mode may start a download before - // initializing the UI thread. - if (!content::BrowserThread::IsThreadInitialized( - content::BrowserThread::UI)) { - return; - } - - auto checker = base::MakeRefCounted<DownloadBlocklistChecker>(item); - checker->Start(); -} - void CleanupAppVerificationTimestamps(download::DownloadItem* item) { Profile* profile = Profile::FromBrowserContext( content::DownloadItemUtils::GetBrowserContext(item)); @@ -505,8 +442,6 @@ } void DownloadController::OnDownloadStarted(DownloadItem* download_item) { - RecordDownloadBlocklistState(download_item); - // For dangerous downloads, we need to show the dangerous infobar before the // download can start. if (!download_item->IsDangerous() &&
diff --git a/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialProperties.java b/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialProperties.java index 0e24e53f..b09f4e7 100644 --- a/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialProperties.java +++ b/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialProperties.java
@@ -15,10 +15,14 @@ import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey; /** - * Extends the properties defined in {@link ListProperties} to facilitate the logic for an entire - * UI containing a download ListItem. + * Extends the properties defined in {@link ListProperties} to facilitate the logic for an entire UI + * containing a download ListItem. */ interface DownloadInterstitialProperties extends ListProperties { + /** + * Keeps track of the state of the DownloadInterstitial. This may be different to the state of + * the offline item displayed within the UI. + */ @IntDef({ State.UNKNOWN, State.IN_PROGRESS, @@ -27,10 +31,6 @@ State.PAUSED, State.PENDING }) - /** - * Keeps track of the state of the DownloadInterstitial. This may be different to the state of - * the offline item displayed within the UI. - */ @interface State { int UNKNOWN = 0; int IN_PROGRESS = 1;
diff --git a/chrome/browser/extensions/api/debugger/debugger_api.cc b/chrome/browser/extensions/api/debugger/debugger_api.cc index 5266fa30..7c3f912 100644 --- a/chrome/browser/extensions/api/debugger/debugger_api.cc +++ b/chrome/browser/extensions/api/debugger/debugger_api.cc
@@ -58,6 +58,7 @@ #include "extensions/common/constants.h" #include "extensions/common/error_utils.h" #include "extensions/common/extension.h" +#include "extensions/common/extension_features.h" #include "extensions/common/extension_id.h" #include "extensions/common/manifest_constants.h" #include "extensions/common/permissions/permissions_data.h" @@ -472,6 +473,11 @@ return true; } + if (base::FeatureList::IsEnabled( + extensions_features::kSilentDebuggerExtensionAPI)) { + return true; + } + // We allow policy-installed extensions to circumvent the normal // infobar warning. See crbug.com/693621. if (Manifest::IsPolicyLocation(extension_->location()))
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/webfeed/WebFeedMainMenuItemTest.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/webfeed/WebFeedMainMenuItemTest.java index e38397e..489231d 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/webfeed/WebFeedMainMenuItemTest.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/webfeed/WebFeedMainMenuItemTest.java
@@ -201,12 +201,8 @@ assertTrue(intent.hasExtra(CreatorIntentConstants.CREATOR_URL)); assertNotNull(intent.getExtras().getString(CreatorIntentConstants.CREATOR_URL)); assertTrue(intent.hasExtra(CreatorIntentConstants.CREATOR_ENTRY_POINT)); - assertNotNull(intent.getExtras().getInt(CreatorIntentConstants.CREATOR_ENTRY_POINT)); assertTrue(intent.hasExtra(CreatorIntentConstants.CREATOR_FOLLOWING)); - assertNotNull( - intent.getExtras().getBoolean(CreatorIntentConstants.CREATOR_FOLLOWING, false)); assertTrue(intent.hasExtra(CreatorIntentConstants.CREATOR_TAB_ID)); - assertNotNull(intent.getExtras().getInt(CreatorIntentConstants.CREATOR_TAB_ID)); } @Test
diff --git a/chrome/browser/hub/android/java/src/org/chromium/chrome/browser/hub/DrawableButtonDataUnitTest.java b/chrome/browser/hub/android/java/src/org/chromium/chrome/browser/hub/DrawableButtonDataUnitTest.java index 919aae4a..56e50fb 100644 --- a/chrome/browser/hub/android/java/src/org/chromium/chrome/browser/hub/DrawableButtonDataUnitTest.java +++ b/chrome/browser/hub/android/java/src/org/chromium/chrome/browser/hub/DrawableButtonDataUnitTest.java
@@ -60,7 +60,6 @@ DisplayButtonData buttonData = new DrawableButtonData( R.string.button_new_tab, R.string.button_new_incognito_tab, drawable); - assertEquals(buttonData, buttonData); assertEquals( buttonData, new DrawableButtonData(
diff --git a/chrome/browser/hub/android/java/src/org/chromium/chrome/browser/hub/ResourceButtonDataUnitTest.java b/chrome/browser/hub/android/java/src/org/chromium/chrome/browser/hub/ResourceButtonDataUnitTest.java index f13cd58..739d7ad 100644 --- a/chrome/browser/hub/android/java/src/org/chromium/chrome/browser/hub/ResourceButtonDataUnitTest.java +++ b/chrome/browser/hub/android/java/src/org/chromium/chrome/browser/hub/ResourceButtonDataUnitTest.java
@@ -61,7 +61,6 @@ R.string.button_new_tab, R.string.button_new_incognito_tab, R.drawable.ic_add); - assertEquals(buttonData, buttonData); assertEquals( buttonData, new ResourceButtonData(
diff --git a/chrome/browser/lacros/automation_manager_lacros.cc b/chrome/browser/lacros/automation_manager_lacros.cc index 5bbbf2ff1..e109ce7 100644 --- a/chrome/browser/lacros/automation_manager_lacros.cc +++ b/chrome/browser/lacros/automation_manager_lacros.cc
@@ -56,8 +56,8 @@ } void AutomationManagerLacros::DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) { - ui::AXTreeID tree_id = details.ax_tree_id; + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) { if (!tree_id.token()) return;
diff --git a/chrome/browser/lacros/automation_manager_lacros.h b/chrome/browser/lacros/automation_manager_lacros.h index 5e2647da..fd8a010 100644 --- a/chrome/browser/lacros/automation_manager_lacros.h +++ b/chrome/browser/lacros/automation_manager_lacros.h
@@ -31,7 +31,8 @@ const gfx::Point& mouse_location, const std::vector<ui::AXEvent>& events) override; void DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) override; + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) override; void DispatchTreeDestroyedEvent(ui::AXTreeID tree_id) override; void DispatchActionResult(const ui::AXActionData& data, bool result,
diff --git a/chrome/browser/lens/BUILD.gn b/chrome/browser/lens/BUILD.gn index d606492..bd138dca 100644 --- a/chrome/browser/lens/BUILD.gn +++ b/chrome/browser/lens/BUILD.gn
@@ -12,6 +12,7 @@ deps = [ ":java_resources", "//base:base_java", + "//base:service_loader_java", "//chrome/browser/contextmenu:java", "//chrome/browser/ui/android/strings:ui_strings_grd", "//components/embedder_support/android:context_menu_java", @@ -30,7 +31,6 @@ android_library("delegate_java") { sources = [ "java/src/org/chromium/chrome/browser/lens/LensControllerDelegate.java", - "java/src/org/chromium/chrome/browser/lens/LensControllerDelegateImpl.java", ] deps = [ @@ -44,21 +44,6 @@ "//ui/android:ui_java", ] resources_package = "org.chromium.chrome.browser.lens" - - # Add the actual implementation where necessary so that downstream targets - # can provide their own implementations. - jar_excluded_patterns = [ "*/LensControllerDelegateImpl.class" ] -} - -android_library("delegate_public_impl_java") { - sources = [ - "java/src/org/chromium/chrome/browser/lens/LensControllerDelegateImpl.java", - ] - - deps = [ - ":delegate_java", - ":util_java", - ] } android_library("util_java") {
diff --git a/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensController.java b/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensController.java index 51807fb..9572a6a 100644 --- a/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensController.java +++ b/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensController.java
@@ -6,6 +6,7 @@ import androidx.annotation.NonNull; import org.chromium.base.Callback; +import org.chromium.base.ServiceLoaderUtil; import org.chromium.components.embedder_support.contextmenu.ChipRenderParams; import org.chromium.ui.base.WindowAndroid; @@ -23,11 +24,17 @@ } public LensController() { - mDelegate = new LensControllerDelegateImpl(); + LensControllerDelegate delegate = + ServiceLoaderUtil.maybeCreate(LensControllerDelegate.class); + if (delegate == null) { + delegate = new LensControllerDelegate(); + } + mDelegate = delegate; } /** * Whether the Lens SDK is available. + * * @return Whether the Lens SDK is available. */ public boolean isSdkAvailable() {
diff --git a/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensControllerDelegate.java b/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensControllerDelegate.java index c137bb4e..a47c838 100644 --- a/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensControllerDelegate.java +++ b/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensControllerDelegate.java
@@ -18,8 +18,8 @@ /** * Base class for defining methods where different behavior is required by downstream targets. The - * correct version of {@link LensControllerDelegateImpl} will be determined at compile time via - * build rules. + * correct implementation of {@link LensControllerDelegate} will be determined at compile time via + * {@link ServiceLoaderUtil}. */ public class LensControllerDelegate { /**
diff --git a/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensControllerDelegateImpl.java b/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensControllerDelegateImpl.java deleted file mode 100644 index d094456..0000000 --- a/chrome/browser/lens/java/src/org/chromium/chrome/browser/lens/LensControllerDelegateImpl.java +++ /dev/null
@@ -1,13 +0,0 @@ -// Copyright 2021 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.chrome.browser.lens; - -/** - * Instantiable version of {@link LensControllerDelegate}, don't add anything to this class. - * Downstream targets may provide a different implementation. In GN, we specify that - * {@link LensControllerDelegate} is compiled separately from its implementation; other - * projects may specify a different LensControllerDelegate via GN. - */ -class LensControllerDelegateImpl extends LensControllerDelegate {}
diff --git a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesCoordinator.java b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesCoordinator.java index 072d70f..b8edb39 100644 --- a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesCoordinator.java +++ b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesCoordinator.java
@@ -140,7 +140,7 @@ super.onViewRecycled(holder); } }; - mModuleRegistry.registerAdapter(mAdapter, this::onViewCreated); + mModuleRegistry.registerAdapter(mAdapter, this); mRecyclerView.setAdapter(mAdapter); }
diff --git a/chrome/browser/metrics/tab_stats/tab_stats_tracker.cc b/chrome/browser/metrics/tab_stats/tab_stats_tracker.cc index 5eb32fdf..1a84693e 100644 --- a/chrome/browser/metrics/tab_stats/tab_stats_tracker.cc +++ b/chrome/browser/metrics/tab_stats/tab_stats_tracker.cc
@@ -626,10 +626,12 @@ base::UmaHistogramCounts100(kTabDuplicateCountSingleWindowHistogramName, duplicate_data_single_window.duplicate_count); - base::UmaHistogramPercentage( - kTabDuplicatePercentageSingleWindowHistogramName, - duplicate_data_single_window.duplicate_count * 100 / - duplicate_data_single_window.tab_count); + if (duplicate_data_single_window.tab_count > 0) { + base::UmaHistogramPercentage( + kTabDuplicatePercentageSingleWindowHistogramName, + duplicate_data_single_window.duplicate_count * 100 / + duplicate_data_single_window.tab_count); + } } for (const auto& duplicate_data : duplicate_data_per_profile) { // Guest mode and incognito should not count for the per-profile metrics @@ -641,10 +643,12 @@ base::UmaHistogramCounts100( kTabDuplicateCountAllProfileWindowsHistogramName, duplicate_data.second.duplicate_count); - base::UmaHistogramPercentage( - kTabDuplicatePercentageAllProfileWindowsHistogramName, - duplicate_data.second.duplicate_count * 100 / - duplicate_data.second.tab_count); + if (duplicate_data.second.tab_count > 0) { + base::UmaHistogramPercentage( + kTabDuplicatePercentageAllProfileWindowsHistogramName, + duplicate_data.second.duplicate_count * 100 / + duplicate_data.second.tab_count); + } } }
diff --git a/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.cc b/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.cc index 427c30c..37e88ee 100644 --- a/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.cc +++ b/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.cc
@@ -49,9 +49,9 @@ using Source = visited_url_ranking::URLVisit::Source; namespace { -// Name of preference to track list of dismissed tabs. -const char kDismissedTabsPrefName[] = - "NewTabPage.MostRelevantTabResumption.DismissedTabs"; +// Name of preference to track list of dismissed visits. +const char kDismissedVisitsPrefName[] = + "NewTabPage.MostRelevantTabResumption.DismissedVisits"; std::u16string FormatRelativeTime(const base::Time& time) { // Return a time like "1 hour ago", "2 days ago", etc. @@ -249,17 +249,31 @@ void MostRelevantTabResumptionPageHandler::DismissModule( const std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr> url_visits) { + DismissURLVisits(url_visits); +} + +void MostRelevantTabResumptionPageHandler::DismissURLVisit( + ntp::most_relevant_tab_resumption::mojom::URLVisitPtr url_visit) { + std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr> + url_visits_mojom; + url_visits_mojom.push_back(std::move(url_visit)); + DismissURLVisits(url_visits_mojom); +} + +void MostRelevantTabResumptionPageHandler::DismissURLVisits( + const std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr>& + url_visits) { RemoveOldDismissedTabs(); - ScopedListPrefUpdate url_visit_list(profile_->GetPrefs(), - kDismissedTabsPrefName); + ScopedDictPrefUpdate url_visit_dict(profile_->GetPrefs(), + kDismissedVisitsPrefName); auto* visited_url_ranking_service = visited_url_ranking::VisitedURLRankingServiceFactory::GetForProfile( profile_); for (const auto& url_visit : url_visits) { - url_visit_list->Append(base::Value( - url_visit->url_key + ' ' + - base::NumberToString(url_visit->timestamp->ToDeltaSinceWindowsEpoch() - .InMicroseconds()))); + url_visit_dict->Set( + url_visit->url_key, + static_cast<double>( + url_visit->timestamp->ToDeltaSinceWindowsEpoch().InMicroseconds())); visited_url_ranking_service->RecordAction( visited_url_ranking::ScoredURLUserAction::kDismissed, url_visit->url_key, @@ -268,57 +282,40 @@ } } -void MostRelevantTabResumptionPageHandler::DismissURLVisit( - const ntp::most_relevant_tab_resumption::mojom::URLVisitPtr url_visit) { - RemoveOldDismissedTabs(); - ScopedListPrefUpdate url_visit_list(profile_->GetPrefs(), - kDismissedTabsPrefName); - url_visit_list->Append(base::Value( - url_visit->url_key + ' ' + - base::NumberToString( - url_visit->timestamp->ToDeltaSinceWindowsEpoch().InMicroseconds()))); - auto* visited_url_ranking_service = - visited_url_ranking::VisitedURLRankingServiceFactory::GetForProfile( - profile_); - visited_url_ranking_service->RecordAction( - visited_url_ranking::ScoredURLUserAction::kDismissed, url_visit->url_key, - segmentation_platform::TrainingRequestId(url_visit->training_request_id)); -} - void MostRelevantTabResumptionPageHandler::RestoreModule( const std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr> url_visits) { - ScopedListPrefUpdate url_visit_list(profile_->GetPrefs(), - kDismissedTabsPrefName); - auto* visited_url_ranking_service = - visited_url_ranking::VisitedURLRankingServiceFactory::GetForProfile( - profile_); - for (const auto& url_visit : url_visits) { - url_visit_list->EraseValue(base::Value( - url_visit->url_key + ' ' + - base::NumberToString(url_visit->timestamp->ToDeltaSinceWindowsEpoch() - .InMicroseconds()))); - visited_url_ranking_service->RecordAction( - visited_url_ranking::ScoredURLUserAction::kSeen, url_visit->url_key, - segmentation_platform::TrainingRequestId( - url_visit->training_request_id)); - } + RestoreURLVisits(std::move(url_visits)); } void MostRelevantTabResumptionPageHandler::RestoreURLVisit( ntp::most_relevant_tab_resumption::mojom::URLVisitPtr url_visit) { - ScopedListPrefUpdate url_visit_list(profile_->GetPrefs(), - kDismissedTabsPrefName); - url_visit_list->EraseValue(base::Value( - url_visit->url_key + ' ' + - base::NumberToString( - url_visit->timestamp->ToDeltaSinceWindowsEpoch().InMicroseconds()))); + std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr> + url_visits_mojom; + url_visits_mojom.push_back(std::move(url_visit)); + RestoreURLVisits(url_visits_mojom); +} + +void MostRelevantTabResumptionPageHandler::RestoreURLVisits( + const std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr>& + url_visits) { + ScopedDictPrefUpdate url_visit_dict(profile_->GetPrefs(), + kDismissedVisitsPrefName); auto* visited_url_ranking_service = visited_url_ranking::VisitedURLRankingServiceFactory::GetForProfile( profile_); - visited_url_ranking_service->RecordAction( - visited_url_ranking::ScoredURLUserAction::kSeen, url_visit->url_key, - segmentation_platform::TrainingRequestId(url_visit->training_request_id)); + for (const auto& url_visit : url_visits) { + if (url_visit_dict->Find(url_visit->url_key) && + static_cast<long>( + url_visit_dict->Find(url_visit->url_key)->GetDouble()) == + url_visit->timestamp->ToDeltaSinceWindowsEpoch().InMicroseconds()) { + url_visit_dict->Remove(url_visit->url_key); + visited_url_ranking_service->RecordAction( + visited_url_ranking::ScoredURLUserAction::kSeen, url_visit->url_key, + segmentation_platform::TrainingRequestId( + url_visit->training_request_id)); + } + } } void MostRelevantTabResumptionPageHandler::OnURLVisitAggregatesFetched( @@ -473,40 +470,31 @@ // static void MostRelevantTabResumptionPageHandler::RegisterProfilePrefs( PrefRegistrySimple* registry) { - registry->RegisterListPref(kDismissedTabsPrefName, base::Value::List()); + registry->RegisterDictionaryPref(kDismissedVisitsPrefName, + base::Value::Dict()); } bool MostRelevantTabResumptionPageHandler::IsNewURL( ntp::most_relevant_tab_resumption::mojom::URLVisitPtr& url_visit) { - const base::Value::List& cached_urls = - profile_->GetPrefs()->GetList(kDismissedTabsPrefName); - auto it = std::find_if( - cached_urls.begin(), cached_urls.end(), - [&url_visit](const base::Value& cached_url) { - return cached_url.GetString() == - url_visit->url_key + ' ' + - base::NumberToString( - url_visit->timestamp->ToDeltaSinceWindowsEpoch() - .InMicroseconds()); - }); - return it == cached_urls.end(); + const base::Value::Dict& cached_urls = + profile_->GetPrefs()->GetDict(kDismissedVisitsPrefName); + if (cached_urls.Find(url_visit->url_key) == nullptr) { + return true; + } else { + return static_cast<long>( + cached_urls.Find(url_visit->url_key)->GetDouble()) != + url_visit->timestamp->ToDeltaSinceWindowsEpoch().InMicroseconds(); + } } void MostRelevantTabResumptionPageHandler::RemoveOldDismissedTabs() { - ScopedListPrefUpdate tab_list(profile_->GetPrefs(), kDismissedTabsPrefName); - for (const auto& entry : tab_list.Get().Clone()) { - const std::string dismissed_tab_string = entry.GetString(); - size_t delimiter_pos = dismissed_tab_string.find(' '); - if (delimiter_pos != std::string::npos) { - int64_t timestamp_microseconds; - base::StringToInt64(dismissed_tab_string.substr(delimiter_pos), - ×tamp_microseconds); - base::Time timestamp = base::Time::FromDeltaSinceWindowsEpoch( - base::Microseconds(timestamp_microseconds)); - if (base::Time::Now() - timestamp > - base::Days(dismissal_duration_days_)) { - tab_list->EraseValue(entry); - } + ScopedDictPrefUpdate visit_dict(profile_->GetPrefs(), + kDismissedVisitsPrefName); + for (auto it = visit_dict->begin(); it != visit_dict->end(); ++it) { + base::Time timestamp = base::Time::FromDeltaSinceWindowsEpoch( + base::Microseconds(it->second.GetDouble())); + if (base::Time::Now() - timestamp > base::Days(dismissal_duration_days_)) { + visit_dict->Remove(it->first); } } }
diff --git a/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.h b/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.h index 1ece78a5..e34ca4e 100644 --- a/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.h +++ b/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.h
@@ -52,8 +52,7 @@ const std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr> url_visits) override; void DismissURLVisit( - const ntp::most_relevant_tab_resumption::mojom::URLVisitPtr url_visit) - override; + ntp::most_relevant_tab_resumption::mojom::URLVisitPtr url_visit) override; void RestoreModule( const std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr> url_visits) override; @@ -91,6 +90,13 @@ bool IsNewURL( ntp::most_relevant_tab_resumption::mojom::URLVisitPtr& url_visit); + void DismissURLVisits( + const std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr>& + url_visits); + void RestoreURLVisits( + const std::vector<ntp::most_relevant_tab_resumption::mojom::URLVisitPtr>& + url_visits); + // Method to clear dismissed tabs that are older than a certain amount of // time. void RemoveOldDismissedTabs();
diff --git a/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler_unittest.cc b/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler_unittest.cc index 533b568..b46b8dd 100644 --- a/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler_unittest.cc +++ b/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler_unittest.cc
@@ -371,7 +371,9 @@ {Fetcher::kSession})); url_visit_aggregates.emplace_back( visited_url_ranking::CreateSampleURLVisitAggregate( - GURL(visited_url_ranking::kSampleSearchUrl), 1.0f, + GURL(visited_url_ranking::kSampleSearchUrl + + std::string("1")), + 1.0f, base::Time::FromDeltaSinceWindowsEpoch( base::Microseconds(123456)), {Fetcher::kHistory}));
diff --git a/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/url_visit_types.mojom b/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/url_visit_types.mojom index 75446f0..a459f9ba 100644 --- a/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/url_visit_types.mojom +++ b/chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/url_visit_types.mojom
@@ -22,6 +22,7 @@ enum DecorationType { kVisitedXAgo, kMostRecent, + kFrequentlyVisited, kFrequentlyVisitedAtTime, };
diff --git a/chrome/browser/optimization_guide/android/java/src/org/chromium/chrome/browser/optimization_guide/OptimizationGuidePushNotificationManager.java b/chrome/browser/optimization_guide/android/java/src/org/chromium/chrome/browser/optimization_guide/OptimizationGuidePushNotificationManager.java index db6768e..a00680c 100644 --- a/chrome/browser/optimization_guide/android/java/src/org/chromium/chrome/browser/optimization_guide/OptimizationGuidePushNotificationManager.java +++ b/chrome/browser/optimization_guide/android/java/src/org/chromium/chrome/browser/optimization_guide/OptimizationGuidePushNotificationManager.java
@@ -200,7 +200,7 @@ @VisibleForTesting public static String cacheKey(OptimizationType optimizationType) { return ChromePreferenceKeys.OPTIMIZATION_GUIDE_PUSH_NOTIFICATION_CACHE.createKey( - optimizationType.toString()); + optimizationType.name()); } public static void setNativeIsInitializedForTesting(Boolean nativeIsInitialized) {
diff --git a/chrome/browser/page_load_metrics/observers/third_party_cookie_deprecation_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/third_party_cookie_deprecation_metrics_observer_browsertest.cc index cf02b08..0f8bf7ad 100644 --- a/chrome/browser/page_load_metrics/observers/third_party_cookie_deprecation_metrics_observer_browsertest.cc +++ b/chrome/browser/page_load_metrics/observers/third_party_cookie_deprecation_metrics_observer_browsertest.cc
@@ -99,8 +99,6 @@ .allow_by_global_setting = true, .expected_allow_mechanism_histogram_sample = ThirdPartyCookieAllowMechanism::kAllowByGlobalSetting, - .expected_web_feature_histogram_sample = - WebFeature::kThirdPartyCookieDeprecation_AllowByGlobalSetting, }, { .allow_by_3pcd_1p_trial_token = true, @@ -176,8 +174,6 @@ .allow_by_explicit_setting = true, .expected_allow_mechanism_histogram_sample = ThirdPartyCookieAllowMechanism::kAllowByExplicitSetting, - .expected_web_feature_histogram_sample = - WebFeature::kThirdPartyCookieDeprecation_AllowByExplicitSetting, }, // Precedence testing test cases: { @@ -185,8 +181,6 @@ .allow_by_3pcd_1p_trial_token = true, .expected_allow_mechanism_histogram_sample = ThirdPartyCookieAllowMechanism::kAllowByGlobalSetting, - .expected_web_feature_histogram_sample = - WebFeature::kThirdPartyCookieDeprecation_AllowByGlobalSetting, }, { .allow_by_3pcd_1p_trial_token = true, @@ -1280,11 +1274,9 @@ histogram_tester.ExpectUniqueSample(kThirdPartyCookieAllowMechanismHistogram, /*kAllowByStorageAccess*/ 6, 2); - // Only record blink usage when tracking protection is onboard. histogram_tester.ExpectBucketCount( kWebFeatureHistogram, - WebFeature::kThirdPartyCookieDeprecation_AllowByStorageAccess, - GetParam() ? 1 : 0); + WebFeature::kThirdPartyCookieAccessBlockByExperiment, GetParam() ? 1 : 0); } class ThirdPartyCookieDeprecationObserverCookieReadBrowserTest
diff --git a/chrome/browser/page_load_metrics/observers/third_party_cookie_deprecation_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/third_party_cookie_deprecation_page_load_metrics_observer.cc index 3fd5b36..6dbd91e 100644 --- a/chrome/browser/page_load_metrics/observers/third_party_cookie_deprecation_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/third_party_cookie_deprecation_page_load_metrics_observer.cc
@@ -173,16 +173,12 @@ .Record(ukm::UkmRecorder::Get()); } - if (!is_blocked_by_experiment) { - return; - } - - // Record the following blink feature usage cookie metrics when the 3PCD - // experiment is actual block third party cookies, which means tracking - // protection is onboard. + // Record the following blink feature usage cookie metrics. std::vector<blink::mojom::WebFeature> third_party_cookie_features; - third_party_cookie_features.push_back( - blink::mojom::WebFeature::kThirdPartyCookieAccessBlockByExperiment); + if (is_blocked_by_experiment) { + third_party_cookie_features.push_back( + blink::mojom::WebFeature::kThirdPartyCookieAccessBlockByExperiment); + } switch (allow_mechanism) { case ThirdPartyCookieAllowMechanism::kAllowByExplicitSetting:
diff --git a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsRoboUnitTest.java b/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsRoboUnitTest.java index 0fa449b7..8666313 100644 --- a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsRoboUnitTest.java +++ b/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsRoboUnitTest.java
@@ -118,21 +118,21 @@ public ShadowCustomizationProviderDelegate() {} + /** Returns the homepage string or null if none is available. */ @Implementation @Nullable - /** Returns the homepage string or null if none is available. */ protected String getHomepage() { return sHomepage; } - @Implementation /** Returns whether incognito mode is disabled. */ + @Implementation protected boolean isIncognitoModeDisabled() { return false; } - @Implementation /** Returns whether bookmark editing is disabled. */ + @Implementation protected boolean isBookmarksEditingDisabled() { return false; }
diff --git a/chrome/browser/password_check/android/java/src/org/chromium/chrome/browser/password_check/PasswordChangeType.java b/chrome/browser/password_check/android/java/src/org/chromium/chrome/browser/password_check/PasswordChangeType.java index c5ba009..3feeef2 100644 --- a/chrome/browser/password_check/android/java/src/org/chromium/chrome/browser/password_check/PasswordChangeType.java +++ b/chrome/browser/password_check/android/java/src/org/chromium/chrome/browser/password_check/PasswordChangeType.java
@@ -22,8 +22,6 @@ /** A user opened a site to change a password manually. */ int MANUAL_CHANGE = 1; - /** - * Deprecated as a part of APC removal (crbug.com/1386065). - * int AUTOMATED_CHANGE = 2; - */ + // Deprecated as a part of APC removal (crbug.com/1386065). + // int AUTOMATED_CHANGE = 2; }
diff --git a/chrome/browser/password_manager/android/access_loss/java/src/org/chromium/chrome/browser/access_loss/PasswordAccessLossWarningHelper.java b/chrome/browser/password_manager/android/access_loss/java/src/org/chromium/chrome/browser/access_loss/PasswordAccessLossWarningHelper.java index e749d77..6ba7228 100644 --- a/chrome/browser/password_manager/android/access_loss/java/src/org/chromium/chrome/browser/access_loss/PasswordAccessLossWarningHelper.java +++ b/chrome/browser/password_manager/android/access_loss/java/src/org/chromium/chrome/browser/access_loss/PasswordAccessLossWarningHelper.java
@@ -70,8 +70,8 @@ coordinator.showSheet(model); } - @Nullable /** Creates the model that has the text and functionality appropriate for the warning type. */ + @Nullable PropertyModel getModelForWarningType(@PasswordAccessLossWarningType int warningType) { switch (warningType) { case PasswordAccessLossWarningType.NO_GMS_CORE:
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncher.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncher.java index 0ae5fb2..67629b4 100644 --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncher.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncher.java
@@ -32,6 +32,7 @@ intent.setPackage("com.android.vending"); intent.setData(Uri.parse(deepLinkUrl)); intent.putExtra("callerId", context.getPackageName()); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Request for overlay flow, Play Store will fallback to the default // behaviour if overlay is not available.
diff --git a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncherTest.java b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncherTest.java index ca5d4d5d..f1ce2e8 100644 --- a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncherTest.java +++ b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncherTest.java
@@ -36,6 +36,7 @@ assertEquals(intent.getAction(), Intent.ACTION_VIEW); assertEquals(intent.getPackage(), "com.android.vending"); assertEquals(intent.getStringExtra("callerId"), mockContext.getPackageName()); + assertEquals(intent.getFlags(), Intent.FLAG_ACTIVITY_NEW_TASK); assertEquals( intent.getData(), Uri.parse(
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index bad98a8..8cbedb5 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -1096,6 +1096,12 @@ "privacy_sandbox.activity_type.record"; #endif // BUILDFLAG(IS_ANDROID) +// Deprecated 09/2024. +#if !BUILDFLAG(IS_ANDROID) +const char kTabResumeDismissedTabsPrefName[] = + "NewTabPage.MostRelevantTabResumption.DismissedTabs"; +#endif // !BUILDFLAG(IS_ANDROID) + // Register local state used only for migration (clearing or moving to a new // key). void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { @@ -1539,6 +1545,12 @@ #if BUILDFLAG(IS_ANDROID) registry->RegisterListPref(kPrivacySandboxActivityTypeRecord); #endif // BUILDFLAG(IS_ANDROID) + +// Deprecated 09/2024 +#if !BUILDFLAG(IS_ANDROID) + registry->RegisterListPref(kTabResumeDismissedTabsPrefName, + base::Value::List()); +#endif // !BUILDFLAG(IS_ANDROID) } void ClearSyncRequestedPrefAndMaybeMigrate(PrefService* profile_prefs) { @@ -2873,6 +2885,11 @@ profile_prefs->ClearPref(kPrivacySandboxActivityTypeRecord); #endif // BUILDFLAG(IS_ANDROID) +// Added 09/2024 +#if !BUILDFLAG(IS_ANDROID) + profile_prefs->ClearPref(kTabResumeDismissedTabsPrefName); +#endif // !BUILDFLAG(IS_ANDROID) + // Please don't delete the following line. It is used by PRESUBMIT.py. // END_MIGRATE_OBSOLETE_PROFILE_PREFS
diff --git a/chrome/browser/resources/lens/overlay/translate_button.html b/chrome/browser/resources/lens/overlay/translate_button.html index e08c911..5347f277 100644 --- a/chrome/browser/resources/lens/overlay/translate_button.html +++ b/chrome/browser/resources/lens/overlay/translate_button.html
@@ -386,7 +386,8 @@ </style> <div id="translateContainer"> <cr-button id="translateEnableButton" class="button" - on-click="onTranslateButtonClick"> + on-click="onTranslateButtonClick" aria-hidden="[[isTranslateModeEnabled]]" + tabindex$="[[getTabIndexForTranslateEntry(isTranslateModeEnabled)]]"> <span id="translateEnableIcon" class="translate-icon" slot="prefix-icon"> </span> <span id="translateButtonLabel" class="button-label"> @@ -395,7 +396,9 @@ </cr-button> <div id="languagePicker"> <cr-button id="sourceLanguageButton" class="button language-picker-button" - on-click="onSourceLanguageButtonClick"> + on-click="onSourceLanguageButtonClick" + aria-hidden="[[!isTranslateModeEnabled]]" + tabindex$="[[getTabIndexForLanguagePicker(isTranslateModeEnabled)]]"> <span id="starsIcon" slot="prefix-icon"></span> <span id="sourceLanguageLabel" class="button-label language-picker-label"> @@ -405,7 +408,9 @@ </cr-button> <span id="arrowRightIcon"></span> <cr-button id="targetLanguageButton" class="button language-picker-button" - on-click="onTargetLanguageButtonClick"> + on-click="onTargetLanguageButtonClick" + aria-hidden="[[!isTranslateModeEnabled]]" + tabindex$="[[getTabIndexForLanguagePicker(isTranslateModeEnabled)]]"> <span id="targetLanguageLabel" class="button-label language-picker-label"> [[getTargetLanguageDisplayName(targetLanguage)]] </span> @@ -413,7 +418,9 @@ </div> <div id="translateDisableButtonContainer"> <cr-button id="translateDisableButton" class="button" - on-click="onTranslateButtonClick"> + on-click="onTranslateButtonClick" + aria-hidden="[[!isTranslateModeEnabled]]" + tabindex$="[[getTabIndexForLanguagePicker(isTranslateModeEnabled)]]"> </cr-button> <span id="translateDisableIcon" class="translate-icon"></span> </div>
diff --git a/chrome/browser/resources/lens/overlay/translate_button.ts b/chrome/browser/resources/lens/overlay/translate_button.ts index 12ba638..248f8861 100644 --- a/chrome/browser/resources/lens/overlay/translate_button.ts +++ b/chrome/browser/resources/lens/overlay/translate_button.ts
@@ -395,6 +395,14 @@ return this.sourceLanguage === null; } + private getTabIndexForTranslateEntry(): number { + return this.isTranslateModeEnabled ? -1 : 0; + } + + private getTabIndexForLanguagePicker(): number { + return this.isTranslateModeEnabled ? 0 : -1; + } + private getAutoCheckedClass( sourceLanguage: chrome.languageSettingsPrivate.Language): string { return sourceLanguage === null ? 'selected' : '';
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/most_relevant_tab_resumption/module.ts b/chrome/browser/resources/new_tab_page/modules/v2/most_relevant_tab_resumption/module.ts index 1baed51f..f0b0ab4e 100644 --- a/chrome/browser/resources/new_tab_page/modules/v2/most_relevant_tab_resumption/module.ts +++ b/chrome/browser/resources/new_tab_page/modules/v2/most_relevant_tab_resumption/module.ts
@@ -134,7 +134,8 @@ } private onDismissButtonClick_(e: DomRepeatEvent<URLVisit>) { - e.preventDefault(); + e.preventDefault(); // Stop navigation + e.stopPropagation(); // Stop firing of click handler const urlVisit = (e.target! as HTMLElement).parentElement!; const index = e.model.index; chrome.metricsPrivate.recordSmallCount(
diff --git a/chrome/browser/resources/password_manager/chrome_branded_manifest.webmanifest b/chrome/browser/resources/password_manager/chrome_branded_manifest.webmanifest index cf0c669..6d8075f8 100644 --- a/chrome/browser/resources/password_manager/chrome_branded_manifest.webmanifest +++ b/chrome/browser/resources/password_manager/chrome_branded_manifest.webmanifest
@@ -1,6 +1,6 @@ { - "short_name": "Google Password Manager", - "name": "Google Password Manager", + "short_name": "$i18n{passwordManagerTitle}", + "name": "$i18n{passwordManagerTitle}", "icons": [ { "src": "chrome://password-manager/images/password_manager_pwa_icon.svg", @@ -8,6 +8,7 @@ "sizes": "any" } ], + "description": "$i18n{passwordManagerDescription}", "start_url": "/?source=pwa", "id": "chrome://password-manager/", "display": "standalone",
diff --git a/chrome/browser/resources/password_manager/manifest.webmanifest b/chrome/browser/resources/password_manager/manifest.webmanifest index 3a4278be..56bc0ea 100644 --- a/chrome/browser/resources/password_manager/manifest.webmanifest +++ b/chrome/browser/resources/password_manager/manifest.webmanifest
@@ -1,6 +1,6 @@ { - "short_name": "Password Manager", - "name": "Password Manager", + "short_name": "$i18n{passwordManagerTitle}", + "name": "$i18n{passwordManagerTitle}", "icons": [ { "src": "chrome://password-manager/images/password_manager_logo.svg", @@ -12,4 +12,4 @@ "id": "chrome://password-manager/", "display": "standalone", "scope": "chrome://password-manager/" -} \ No newline at end of file +}
diff --git a/chrome/browser/resources/search_engine_choice/OWNERS b/chrome/browser/resources/search_engine_choice/OWNERS index a8ff91d..c7aa42b 100644 --- a/chrome/browser/resources/search_engine_choice/OWNERS +++ b/chrome/browser/resources/search_engine_choice/OWNERS
@@ -1 +1 @@ -file://components/search_engines/search_engine_choice/OWNERS +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/chrome/browser/resources/side_panel/customize_chrome/categories.ts b/chrome/browser/resources/side_panel/customize_chrome/categories.ts index ed95370..64ef3d0 100644 --- a/chrome/browser/resources/side_panel/customize_chrome/categories.ts +++ b/chrome/browser/resources/side_panel/customize_chrome/categories.ts
@@ -23,7 +23,7 @@ import {getCss} from './categories.css.js'; import {getHtml} from './categories.html.js'; -import {CustomizeChromeAction, recordCustomizeChromeAction} from './common.js'; +import {CustomizeChromeAction, NtpImageType, recordCustomizeChromeAction, recordCustomizeChromeImageError} from './common.js'; import type {BackgroundCollection, CustomizeChromePageHandlerInterface, Theme} from './customize_chrome.mojom-webui.js'; import {CustomizeChromeApiProxy} from './customize_chrome_api_proxy.js'; import {WindowProxy} from './window_proxy.js'; @@ -193,6 +193,7 @@ if (!this.imageErrorDetectionEnabled_) { return; } + recordCustomizeChromeImageError(NtpImageType.COLLECTIONS); const index = Number((e.currentTarget as HTMLElement).dataset['index']); assert(this.collections_[index]); this.pageHandler_
diff --git a/chrome/browser/resources/side_panel/customize_chrome/common.ts b/chrome/browser/resources/side_panel/customize_chrome/common.ts index 7309b00..6e0f4daf 100644 --- a/chrome/browser/resources/side_panel/customize_chrome/common.ts +++ b/chrome/browser/resources/side_panel/customize_chrome/common.ts
@@ -62,3 +62,25 @@ 'NewTabPage.CustomizeChromeSidePanelImpression', action, CustomizeChromeImpression.MAX_VALUE + 1); } + +/** + * Types of images that are shown on the NTP (and therefore also appear in + * Customize Chrome). This enum must match the numbering for NtpImageType in + * enums.xml. These values are persisted to logs. Entries should not be + * renumbered, removed or reused. + * + * MAX_VALUE should always be at the end to help get the current number of + * buckets. + */ +export enum NtpImageType { + BACKGROUND_IMAGE, + COLLECTIONS, + COLLECTION_IMAGES, + MAX_VALUE = COLLECTION_IMAGES, +} + +export function recordCustomizeChromeImageError(imageType: NtpImageType) { + chrome.metricsPrivate.recordEnumerationValue( + 'NewTabPage.BackgroundService.Images.Headers.ErrorDetected', imageType, + NtpImageType.MAX_VALUE + 1); +}
diff --git a/chrome/browser/resources/side_panel/customize_chrome/themes.html.ts b/chrome/browser/resources/side_panel/customize_chrome/themes.html.ts index e09aa98..f2baec2 100644 --- a/chrome/browser/resources/side_panel/customize_chrome/themes.html.ts +++ b/chrome/browser/resources/side_panel/customize_chrome/themes.html.ts
@@ -34,7 +34,8 @@ <img is="cr-auto-img" data-index="${index}" .autoSrc="${item.previewImageUrl.url}" draggable="false" - @load="${this.onPreviewImageLoad_}"> + @load="${this.onPreviewImageLoad_}" + @error="${this.onPreviewImageError_}"> </img> </div> </customize-chrome-check-mark-wrapper>
diff --git a/chrome/browser/resources/side_panel/customize_chrome/themes.ts b/chrome/browser/resources/side_panel/customize_chrome/themes.ts index ef1c292..47196caa 100644 --- a/chrome/browser/resources/side_panel/customize_chrome/themes.ts +++ b/chrome/browser/resources/side_panel/customize_chrome/themes.ts
@@ -18,7 +18,7 @@ import {CrLitElement} from 'chrome://resources/lit/v3_0/lit.rollup.js'; import type {PropertyValues} from 'chrome://resources/lit/v3_0/lit.rollup.js'; -import {CustomizeChromeAction, recordCustomizeChromeAction} from './common.js'; +import {CustomizeChromeAction, NtpImageType, recordCustomizeChromeAction, recordCustomizeChromeImageError} from './common.js'; import type {BackgroundCollection, CollectionImage, CustomizeChromePageCallbackRouter, CustomizeChromePageHandlerInterface, Theme} from './customize_chrome.mojom-webui.js'; import {CustomizeChromeApiProxy} from './customize_chrome_api_proxy.js'; import {getCss} from './themes.css.js'; @@ -170,6 +170,12 @@ this.previewImageLoadStartEpoch_)); } + protected onPreviewImageError_() { + if (this.imageErrorDetectionEnabled_) { + recordCustomizeChromeImageError(NtpImageType.BACKGROUND_IMAGE); + } + } + private onCollectionChange_() { this.header_ = ''; this.themes_ = [];
diff --git a/chrome/browser/search/background/ntp_background_service.cc b/chrome/browser/search/background/ntp_background_service.cc index 17577bd..3984ab24 100644 --- a/chrome/browser/search/background/ntp_background_service.cc +++ b/chrome/browser/search/background/ntp_background_service.cc
@@ -374,10 +374,6 @@ void NtpBackgroundService::FetchReplacementCollectionPreviewImage( const std::string& collection_id, FetchReplacementImageCallback fetch_replacement_image_callback) { - // TODO(b:367702048) - Move metric to frontend, where the error was detected. - UMA_HISTOGRAM_ENUMERATION( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", - NtpImageType::kCollections); FetchCollectionImageInfoInternal( collection_id, base::BindOnce(&NtpBackgroundService::
diff --git a/chrome/browser/search/background/ntp_background_service_unittest.cc b/chrome/browser/search/background/ntp_background_service_unittest.cc index ba49c83..ddd2fb6 100644 --- a/chrome/browser/search/background/ntp_background_service_unittest.cc +++ b/chrome/browser/search/background/ntp_background_service_unittest.cc
@@ -12,6 +12,7 @@ #include "base/run_loop.h" #include "base/test/bind.h" #include "base/test/metrics/histogram_tester.h" +#include "base/test/run_until.h" #include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" #include "chrome/browser/browser_process.h" @@ -45,17 +46,13 @@ } // namespace -class NtpBackgroundServiceTest : public testing::Test, - public ::testing::WithParamInterface<bool> { +class NtpBackgroundServiceTest : public testing::Test { public: NtpBackgroundServiceTest() : task_environment_(content::BrowserTaskEnvironment::IO_MAINLOOP), test_shared_loader_factory_( base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( &test_url_loader_factory_)) { - feature_list_.InitWithFeatureState( - std::move(ntp_features::kNtpBackgroundImageErrorDetection), - BackgroundImageErrorDetectionEnabled()); } void TearDown() override { @@ -95,10 +92,6 @@ return &test_url_loader_factory_; } - // TODO(b:367699101) - Remove test parameters once image error - // detection logic is initiated solely in the frontend. - bool BackgroundImageErrorDetectionEnabled() const { return GetParam(); } - protected: // Required to run tests from UI and threads. content::BrowserTaskEnvironment task_environment_; @@ -111,14 +104,14 @@ std::unique_ptr<NtpBackgroundService> service_; }; -INSTANTIATE_TEST_SUITE_P(All, NtpBackgroundServiceTest, ::testing::Bool()); - -TEST_P(NtpBackgroundServiceTest, CollectionRequest) { +TEST_F(NtpBackgroundServiceTest, CollectionRequest) { g_browser_process->SetApplicationLocale("foo"); - service()->FetchCollectionInfo(); - base::RunLoop().RunUntilIdle(); - EXPECT_EQ(1u, test_url_loader_factory()->pending_requests()->size()); + service()->FetchCollectionInfo(); + EXPECT_TRUE(base::test::RunUntil([&]() { + return test_url_loader_factory()->pending_requests()->size() == 1u; + })); + std::string request_body(test_url_loader_factory() ->pending_requests() ->at(0) @@ -129,13 +122,7 @@ ntp::background::GetCollectionsRequest collection_request; EXPECT_TRUE(collection_request.ParseFromString(request_body)); EXPECT_EQ("foo", collection_request.language()); - if (BackgroundImageErrorDetectionEnabled()) { - EXPECT_EQ(5, collection_request.filtering_label_size()); - EXPECT_EQ("chrome_desktop_ntp.error_detection", - collection_request.filtering_label(4)); - } else { - EXPECT_EQ(4, collection_request.filtering_label_size()); - } + EXPECT_EQ(4, collection_request.filtering_label_size()); EXPECT_EQ("chrome_desktop_ntp", collection_request.filtering_label(0)); EXPECT_EQ("chrome_desktop_ntp.M" + version_info::GetMajorVersionNumber(), collection_request.filtering_label(1)); @@ -144,7 +131,39 @@ EXPECT_EQ("chrome_desktop_ntp.gm3", collection_request.filtering_label(3)); } -TEST_P(NtpBackgroundServiceTest, CollectionInfoNetworkError) { +TEST_F(NtpBackgroundServiceTest, + CollectionRequestWithImageErrorDetectionEnabled) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitAndEnableFeature( + ntp_features::kNtpBackgroundImageErrorDetection); + g_browser_process->SetApplicationLocale("foo"); + + service()->FetchCollectionInfo(); + EXPECT_TRUE(base::test::RunUntil([&]() { + return test_url_loader_factory()->pending_requests()->size() == 1u; + })); + + std::string request_body(test_url_loader_factory() + ->pending_requests() + ->at(0) + .request.request_body->elements() + ->at(0) + .As<network::DataElementBytes>() + .AsStringPiece()); + ntp::background::GetCollectionsRequest collection_request; + EXPECT_TRUE(collection_request.ParseFromString(request_body)); + EXPECT_EQ("foo", collection_request.language()); + EXPECT_EQ(5, collection_request.filtering_label_size()); + EXPECT_EQ("chrome_desktop_ntp.error_detection", + collection_request.filtering_label(4)); + EXPECT_EQ("chrome_desktop_ntp.M" + version_info::GetMajorVersionNumber(), + collection_request.filtering_label(1)); + EXPECT_EQ("chrome_desktop_ntp.panorama", + collection_request.filtering_label(2)); + EXPECT_EQ("chrome_desktop_ntp.gm3", collection_request.filtering_label(3)); +} + +TEST_F(NtpBackgroundServiceTest, CollectionInfoNetworkError) { SetUpResponseWithNetworkError(service()->GetCollectionsLoadURLForTesting()); ASSERT_TRUE(service()->collection_info().empty()); @@ -158,7 +177,7 @@ ErrorType::NET_ERROR); } -TEST_P(NtpBackgroundServiceTest, BadCollectionsResponse) { +TEST_F(NtpBackgroundServiceTest, BadCollectionsResponse) { SetUpResponseWithData(service()->GetCollectionsLoadURLForTesting(), "bad serialized GetCollectionsResponse"); @@ -173,7 +192,7 @@ ErrorType::SERVICE_ERROR); } -TEST_P(NtpBackgroundServiceTest, GoodCollectionsResponse) { +TEST_F(NtpBackgroundServiceTest, GoodCollectionsResponse) { ntp::background::Collection collection; collection.set_collection_id("shapes"); collection.set_collection_name("Shapes"); @@ -203,7 +222,7 @@ EXPECT_EQ(service()->collection_error_info().error_type, ErrorType::NONE); } -TEST_P(NtpBackgroundServiceTest, BrokenCollectionPreviewImageHasNoReplacement) { +TEST_F(NtpBackgroundServiceTest, BrokenCollectionPreviewImageHasNoReplacement) { ntp::background::Collection collection; collection.set_collection_id("shapes"); collection.set_collection_name("Shapes"); @@ -231,15 +250,9 @@ service()->FetchReplacementCollectionPreviewImage( collection.collection_id(), std::move(replacement_image_callback)); run_loop.Run(); - - histogram_tester_.ExpectTotalCount( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", 1); - ASSERT_EQ(1, histogram_tester_.GetBucketCount( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", - NtpImageType::kCollections)); } -TEST_P(NtpBackgroundServiceTest, BrokenCollectionPreviewImageHasReplacement) { +TEST_F(NtpBackgroundServiceTest, BrokenCollectionPreviewImageHasReplacement) { ntp::background::Collection collection; collection.set_collection_id("shapes"); collection.set_collection_name("Shapes"); @@ -276,16 +289,9 @@ service()->FetchReplacementCollectionPreviewImage( collection.collection_id(), std::move(replacement_image_callback)); run_loop.Run(); - - histogram_tester_.ExpectTotalCount( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", 1); - ASSERT_EQ(1, - histogram_tester_.GetBucketCount( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", - NtpImageType::kCollections)); } -TEST_P(NtpBackgroundServiceTest, CollectionImagesNetworkError) { +TEST_F(NtpBackgroundServiceTest, CollectionImagesNetworkError) { SetUpResponseWithNetworkError(service()->GetImagesURLForTesting()); ASSERT_TRUE(service()->collection_images().empty()); @@ -294,16 +300,12 @@ service()->FetchCollectionImageInfo("shapes"); base::RunLoop().RunUntilIdle(); - if (BackgroundImageErrorDetectionEnabled()) { - histogram_tester_.ExpectTotalCount( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", 0); - } EXPECT_TRUE(service()->collection_images().empty()); EXPECT_EQ(service()->collection_images_error_info().error_type, ErrorType::NET_ERROR); } -TEST_P(NtpBackgroundServiceTest, BadCollectionImagesResponse) { +TEST_F(NtpBackgroundServiceTest, BadCollectionImagesResponse) { SetUpResponseWithData(service()->GetImagesURLForTesting(), "bad serialized GetImagesInCollectionResponse"); @@ -313,16 +315,12 @@ service()->FetchCollectionImageInfo("shapes"); base::RunLoop().RunUntilIdle(); - if (BackgroundImageErrorDetectionEnabled()) { - histogram_tester_.ExpectTotalCount( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", 0); - } EXPECT_TRUE(service()->collection_images().empty()); EXPECT_EQ(service()->collection_images_error_info().error_type, ErrorType::SERVICE_ERROR); } -TEST_P(NtpBackgroundServiceTest, ImageInCollectionHasNetworkError) { +TEST_F(NtpBackgroundServiceTest, ImageInCollectionHasNetworkError) { ntp::background::Image image; image.set_asset_id(12345); image.set_image_url(kTestImageUrl); @@ -357,7 +355,7 @@ ErrorType::NONE); } -TEST_P(NtpBackgroundServiceTest, GoodCollectionImagesResponse) { +TEST_F(NtpBackgroundServiceTest, GoodCollectionImagesResponse) { ntp::background::Image image; image.set_asset_id(12345); image.set_image_url(kTestImageUrl); @@ -386,17 +384,13 @@ collection_image.attribution.push_back(image.attribution(0).text()); collection_image.attribution_action_url = GURL(image.action_url()); - if (BackgroundImageErrorDetectionEnabled()) { - histogram_tester_.ExpectTotalCount( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", 0); - } EXPECT_FALSE(service()->collection_images().empty()); EXPECT_THAT(service()->collection_images().at(0), Eq(collection_image)); EXPECT_EQ(service()->collection_images_error_info().error_type, ErrorType::NONE); } -TEST_P(NtpBackgroundServiceTest, +TEST_F(NtpBackgroundServiceTest, CollectionImageInfoRequestsAreIgnoredIfAnotherIsInProgress) { ntp::background::Collection collection; collection.set_collection_id("shapes"); @@ -447,17 +441,13 @@ GURL(image.image_url() + service()->GetImageOptionsForTesting()); collection_image.attribution.push_back(image.attribution(0).text()); - if (BackgroundImageErrorDetectionEnabled()) { - histogram_tester_.ExpectTotalCount( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", 0); - } EXPECT_FALSE(service()->collection_info().empty()); EXPECT_THAT(service()->collection_info().at(0), Eq(collection_info)); EXPECT_FALSE(service()->collection_images().empty()); EXPECT_THAT(service()->collection_images().at(0), Eq(collection_image)); } -TEST_P(NtpBackgroundServiceTest, +TEST_F(NtpBackgroundServiceTest, CollectionImageInfoCanBeSuccessfullyFetchedMultipleTimes) { ntp::background::Image image; image.set_image_url(kTestImageUrl); @@ -482,7 +472,7 @@ EXPECT_THAT(service()->collection_images().at(0).collection_id, "colors"); } -TEST_P(NtpBackgroundServiceTest, NextImageNetworkError) { +TEST_F(NtpBackgroundServiceTest, NextImageNetworkError) { SetUpResponseWithNetworkError(service()->GetNextImageURLForTesting()); service()->FetchNextCollectionImage("shapes", std::nullopt); @@ -492,7 +482,7 @@ Eq(ErrorType::NET_ERROR)); } -TEST_P(NtpBackgroundServiceTest, BadNextImageResponse) { +TEST_F(NtpBackgroundServiceTest, BadNextImageResponse) { SetUpResponseWithData(service()->GetNextImageURLForTesting(), "bad serialized GetImageFromCollectionResponse"); @@ -503,7 +493,7 @@ Eq(ErrorType::SERVICE_ERROR)); } -TEST_P(NtpBackgroundServiceTest, GoodNextImageResponse) { +TEST_F(NtpBackgroundServiceTest, GoodNextImageResponse) { ntp::background::Image image; image.set_asset_id(12345); image.set_image_url(kTestImageUrl); @@ -540,7 +530,7 @@ Eq(ErrorType::NONE)); } -TEST_P(NtpBackgroundServiceTest, MultipleRequestsNextImage) { +TEST_F(NtpBackgroundServiceTest, MultipleRequestsNextImage) { ntp::background::Image image; image.set_asset_id(12345); image.set_image_url(kTestImageUrl); @@ -580,7 +570,7 @@ Eq(ErrorType::NONE)); } -TEST_P(NtpBackgroundServiceTest, CheckValidAndInvalidBackdropUrls) { +TEST_F(NtpBackgroundServiceTest, CheckValidAndInvalidBackdropUrls) { ntp::background::Image image; image.set_asset_id(12345); image.set_image_url(kTestImageUrl); @@ -599,10 +589,6 @@ service()->FetchCollectionImageInfo("shapes"); base::RunLoop().RunUntilIdle(); - if (BackgroundImageErrorDetectionEnabled()) { - histogram_tester_.ExpectTotalCount( - "NewTabPage.BackgroundService.Images.Headers.ErrorDetected", 0); - } EXPECT_TRUE(service()->IsValidBackdropUrl( GURL(image.image_url() + service()->GetImageOptionsForTesting()))); EXPECT_FALSE(service()->IsValidBackdropUrl( @@ -611,7 +597,7 @@ GURL("https://wallpapers.co/another_image"))); } -TEST_P(NtpBackgroundServiceTest, GetThumbnailUrl) { +TEST_F(NtpBackgroundServiceTest, GetThumbnailUrl) { const GURL kInvalidUrl("foo"); const GURL kValidUrl("https://www.foo.com"); const GURL kValidThumbnailUrl("https://www.foo.com/thumbnail"); @@ -622,7 +608,7 @@ EXPECT_EQ(GURL(), service()->GetThumbnailUrl(kInvalidUrl)); } -TEST_P(NtpBackgroundServiceTest, OverrideBaseUrl) { +TEST_F(NtpBackgroundServiceTest, OverrideBaseUrl) { base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( "collections-base-url", "https://foo.com"); service()->FetchCollectionInfo(); @@ -633,7 +619,7 @@ test_url_loader_factory()->pending_requests()->at(0).request.url); } -TEST_P(NtpBackgroundServiceTest, VerifyURLMetricsWithNetworkSuccess) { +TEST_F(NtpBackgroundServiceTest, VerifyURLMetricsWithNetworkSuccess) { SetUpResponseWithNetworkSuccess(GURL(kTestImageUrl)); histogram_tester_.ExpectTotalCount( "NewTabPage.BackgroundService.Images.Headers.RequestLatency", 0); @@ -659,7 +645,7 @@ net::HTTP_OK)); } -TEST_P(NtpBackgroundServiceTest, VerifyURLMetricsWithNetworkError) { +TEST_F(NtpBackgroundServiceTest, VerifyURLMetricsWithNetworkError) { SetUpResponseWithNetworkError(GURL(kTestImageUrl)); histogram_tester_.ExpectTotalCount( "NewTabPage.BackgroundService.Images.Headers.RequestLatency", 0);
diff --git a/chrome/browser/search_engine_choice/OWNERS b/chrome/browser/search_engine_choice/OWNERS index 5d7e015..c7aa42b 100644 --- a/chrome/browser/search_engine_choice/OWNERS +++ b/chrome/browser/search_engine_choice/OWNERS
@@ -1 +1 @@ -file://components/search_engines/search_engine_choice/OWNERS \ No newline at end of file +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetCoordinator.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetCoordinator.java index dc2def9..7dfe52e 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetCoordinator.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetCoordinator.java
@@ -128,13 +128,11 @@ if (bottomSheet == mBottomSheet) { mBottomSheet .getContentView() - .addOnLayoutChangeListener( - ShareSheetCoordinator.this::onLayoutChange); + .addOnLayoutChangeListener(ShareSheetCoordinator.this); } else { mBottomSheet .getContentView() - .removeOnLayoutChangeListener( - ShareSheetCoordinator.this::onLayoutChange); + .removeOnLayoutChangeListener(ShareSheetCoordinator.this); } } };
diff --git a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/page_info_sheet/PageInfoSharingControllerUnitTest.java b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/page_info_sheet/PageInfoSharingControllerUnitTest.java index b2ab65f8..0a62f9b 100644 --- a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/page_info_sheet/PageInfoSharingControllerUnitTest.java +++ b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/page_info_sheet/PageInfoSharingControllerUnitTest.java
@@ -883,7 +883,9 @@ .findViewById(R.id.learn_more_text); var learnMoreTextLinks = learnMoreText.getClickableSpans(); assertNotEquals( - "TextView should contain clickable spans", 0, learnMoreTextLinks); + "TextView should contain clickable spans", + 0, + learnMoreTextLinks.length); // Click first span, which should contain a "learn more" text and link to a web // page. learnMoreTextLinks[0].onClick(learnMoreText);
diff --git a/chrome/browser/signin/BUILD.gn b/chrome/browser/signin/BUILD.gn index acf1538..71997ec 100644 --- a/chrome/browser/signin/BUILD.gn +++ b/chrome/browser/signin/BUILD.gn
@@ -61,6 +61,7 @@ "//chrome/browser/search_engines", "//chrome/browser/themes", "//chrome/browser/ui:browser_list", + "//chrome/browser/ui:ui_features", "//chrome/browser/ui/signin", "//chrome/common:channel_info", "//chrome/common:constants",
diff --git a/chrome/browser/signin/dice_web_signin_interceptor.cc b/chrome/browser/signin/dice_web_signin_interceptor.cc index 9a722ea..0db8385 100644 --- a/chrome/browser/signin/dice_web_signin_interceptor.cc +++ b/chrome/browser/signin/dice_web_signin_interceptor.cc
@@ -51,6 +51,7 @@ #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" #include "chrome/browser/ui/profiles/profile_colors_util.h" #include "chrome/browser/ui/signin/dice_web_signin_interceptor_delegate.h" +#include "chrome/browser/ui/ui_features.h" #include "chrome/common/channel_info.h" #include "chrome/common/pref_names.h" #include "chrome/common/themes/autogenerated_theme_util.h" @@ -788,7 +789,7 @@ DCHECK(IsRequiredExtendedAccountInfoAvailable(intercepted_account_info)); if (!base::FeatureList::IsEnabled( - kShowEnterpriseDialogForAllManagedAccountsSignin)) { + features::kEnterpriseUpdatedProfileCreationScreen)) { return false; } @@ -800,11 +801,16 @@ return false; } - // Check if the intercepted account is managed. - if (intercepted_account_info.IsManaged() && + // Check if the intercepted account is managed and has not yet accepted + // management. + if (!intercepted_account_info.IsManaged() || + enterprise_util::UserAcceptedAccountManagement(profile_)) { + return false; + } + + if (switches::IsImprovedSigninUIOnDesktopEnabled() || IsPrimaryAccountInterception(intercepted_account_info.account_id, - identity_manager_) && - !enterprise_util::UserAcceptedAccountManagement(profile_)) { + identity_manager_)) { return true; } @@ -1375,13 +1381,16 @@ } else { DCHECK_EQ(SigninInterceptionResult::kDeclined, create) << "The user can only accept or decline"; + if (state_->interception_type_ == + WebSigninInterceptor::SigninInterceptionType::kEnterpriseForced) { + auto* accounts_mutator = identity_manager_->GetAccountsMutator(); + accounts_mutator->RemoveAccount( + account_info.account_id, + signin_metrics::SourceForRefreshTokenOperation:: + kEnterpriseForcedProfileCreation_UserDecline); + } OnProfileCreationChoice(account_info, profile_color, SigninInterceptionResult::kDeclined); - auto* accounts_mutator = identity_manager_->GetAccountsMutator(); - accounts_mutator->RemoveAccount( - account_info.account_id, - signin_metrics::SourceForRefreshTokenOperation:: - kTurnOnSyncHelper_Abort); } }
diff --git a/chrome/browser/signin/dice_web_signin_interceptor_unittest.cc b/chrome/browser/signin/dice_web_signin_interceptor_unittest.cc index 46d739ac..9487c1e 100644 --- a/chrome/browser/signin/dice_web_signin_interceptor_unittest.cc +++ b/chrome/browser/signin/dice_web_signin_interceptor_unittest.cc
@@ -26,6 +26,7 @@ #include "chrome/browser/signin/identity_test_environment_profile_adaptor.h" #include "chrome/browser/signin/web_signin_interceptor.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/browser/ui/ui_features.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/browser_with_test_window_test.h" @@ -495,7 +496,7 @@ NoForcedInterceptionShowsDialogIfFeatureEnabled) { base::test::ScopedFeatureList scoped_list; scoped_list.InitAndEnableFeature( - kShowEnterpriseDialogForAllManagedAccountsSignin); + features::kEnterpriseUpdatedProfileCreationScreen); // Reauth intercepted if enterprise confirmation not shown yet for forced // managed separation. AccountInfo account_info = identity_test_env()->MakePrimaryAccountAvailable( @@ -523,7 +524,7 @@ NoForcedInterceptionShowsNoDialogIfFeatureEnabledButDisabledDialogByPolicy) { base::test::ScopedFeatureList scoped_list; scoped_list.InitAndEnableFeature( - kShowEnterpriseDialogForAllManagedAccountsSignin); + features::kEnterpriseUpdatedProfileCreationScreen); // Reauth intercepted if enterprise confirmation not shown yet for forced // managed separation. AccountInfo account_info = identity_test_env()->MakePrimaryAccountAvailable(
diff --git a/chrome/browser/site_protection/site_familiarity_heuristic_name.h b/chrome/browser/site_protection/site_familiarity_heuristic_name.h index 09ba54d..575bd5a8 100644 --- a/chrome/browser/site_protection/site_familiarity_heuristic_name.h +++ b/chrome/browser/site_protection/site_familiarity_heuristic_name.h
@@ -22,7 +22,8 @@ kSiteEngagementScoreExists = 7, kNoVisitsToAnySiteMoreThanADayAgo = 8, kGlobalAllowlistNotReady = 9, - kMaxValue = kGlobalAllowlistNotReady, + kFamiliarLikelyPreviouslyUnfamiliar = 10, + kMaxValue = kFamiliarLikelyPreviouslyUnfamiliar, }; // Subset of SiteFamiliarityHeuristicName for heuristics related to navigation @@ -32,6 +33,7 @@ kVisitedMoreThanADayAgo = 1, kVisitedMoreThanFourHoursAgo = 2, kNoVisitsToAnySiteMoreThanADayAgo = 3, + kVisitedMoreThanADayAgoPreviouslyUnfamiliar = 4, }; } // namespace site_protection
diff --git a/chrome/browser/site_protection/site_protection_metrics_observer.cc b/chrome/browser/site_protection/site_protection_metrics_observer.cc index db67e7e..51c5bd0f 100644 --- a/chrome/browser/site_protection/site_protection_metrics_observer.cc +++ b/chrome/browser/site_protection/site_protection_metrics_observer.cc
@@ -140,6 +140,7 @@ SiteFamiliarityHeuristicName::kVisitedMoreThanFourHoursAgo); metrics_data->most_strict_matched_history_heuristic = SiteFamiliarityHistoryHeuristicName::kVisitedMoreThanFourHoursAgo; + metrics_data->last_visit_time = last_visit_result.last_visit; if (last_visit_result.last_visit < (base::Time::Now() - base::Days(1))) { OnGotVisitToOriginOlderThanADayAgo(std::move(metrics_data), @@ -165,6 +166,7 @@ SiteFamiliarityHeuristicName::kVisitedMoreThanADayAgo); metrics_data->most_strict_matched_history_heuristic = SiteFamiliarityHistoryHeuristicName::kVisitedMoreThanADayAgo; + metrics_data->last_visit_time = last_visit_result.last_visit; OnKnowIfAnyVisitOlderThanADayAgo(std::move(metrics_data), /*has_visit_older_than_a_day_ago=*/true); return; @@ -204,18 +206,20 @@ GURL last_committed_url = metrics_data->last_committed_url; database_manager->CheckUrlForHighConfidenceAllowlist( last_committed_url, - base::BindOnce(&SiteProtectionMetricsObserver::LogMetrics, + base::BindOnce(&SiteProtectionMetricsObserver:: + OnGotHighConfidenceAllowlistResult, weak_factory_.GetWeakPtr(), std::move(metrics_data))); return; } } - LogMetrics(std::move(metrics_data), - /*url_on_safe_browsing_high_confidence_allowlist=*/false, - /*logging_details=*/std::nullopt); + OnGotHighConfidenceAllowlistResult( + std::move(metrics_data), + /*url_on_safe_browsing_high_confidence_allowlist=*/false, + /*logging_details=*/std::nullopt); } -void SiteProtectionMetricsObserver::LogMetrics( +void SiteProtectionMetricsObserver::OnGotHighConfidenceAllowlistResult( std::unique_ptr<MetricsData> metrics_data, bool url_on_safe_browsing_high_confidence_allowlist, std::optional<safe_browsing::SafeBrowsingDatabaseManager:: @@ -228,10 +232,95 @@ url_on_safe_browsing_high_confidence_allowlist = false; } if (url_on_safe_browsing_high_confidence_allowlist) { + metrics_data->url_on_safe_browsing_high_confidence_allowlist = true; metrics_data->matched_heuristics.push_back( SiteFamiliarityHeuristicName::kGlobalAllowlistMatch); } + // Guess as to whether the site was previously categorized as unfamiliar. + // + // For the purpose of + // SiteFamiliarityHeuristicName::kFamiliarLikelyPreviouslyUnfamiliar an + // unfamiliar site is a site which is: + // - Not on the safe browsing high confidence allowlist + // AND + // - Wasn't visited more than 24 hours ago + // AND + // - Wasn't visited with a fresh profile which doesn't have any history + // older than 24 hours. + // + // Assume that high confidence allowlist is stable and that if origin is + // currently on high confidence allowlist that it would have been previously + // on high confidence allowlist. Ignore site engagement score. Ignoring + // site engagement score is ok because the site engagement score is capped + // for site engagement all on the same day. + std::optional<base::Time> last_visit_time = metrics_data->last_visit_time; + if (!url_on_safe_browsing_high_confidence_allowlist && last_visit_time && + *last_visit_time < (base::Time::Now() - base::Days(1))) { + url::Origin last_committed_origin = metrics_data->last_committed_origin; + history_service_->GetLastVisitToOrigin( + last_committed_origin, base::Time(), *last_visit_time - base::Days(1), + base::BindOnce(&SiteProtectionMetricsObserver:: + OnGotVisitToOriginOlderThanADayPriorToPreviousVisit, + weak_factory_.GetWeakPtr(), std::move(metrics_data)), + &task_tracker_); + return; + } + + LogMetrics(std::move(metrics_data)); +} + +void SiteProtectionMetricsObserver:: + OnGotVisitToOriginOlderThanADayPriorToPreviousVisit( + std::unique_ptr<MetricsData> metrics_data, + history::HistoryLastVisitResult last_visit_result) { + if (!last_visit_result.success || last_visit_result.last_visit.is_null()) { + // Check whether + // SiteFamiliarityHistoryHeuristicName::kNoVisitsToAnySiteMoreThanADayAgo + // heuristic would have matched the previous visit. + history::QueryOptions history_query_options; + history_query_options.end_time = + *metrics_data->last_visit_time - base::Days(1); + history_query_options.max_count = 1; + history_service_->QueryHistory( + u"", std::move(history_query_options), + base::BindOnce(&SiteProtectionMetricsObserver:: + OnGotVisitOlderThanADayPriorToPreviousVisit, + weak_factory_.GetWeakPtr(), std::move(metrics_data)), + &task_tracker_); + return; + } + + OnKnowIfSiteWasLikelyPreviouslyFamiliar( + std::move(metrics_data), + /*was_site_likely_previously_familiar=*/true); + return; +} + +void SiteProtectionMetricsObserver::OnGotVisitOlderThanADayPriorToPreviousVisit( + std::unique_ptr<MetricsData> metrics_data, + history::QueryResults query_results) { + OnKnowIfSiteWasLikelyPreviouslyFamiliar( + std::move(metrics_data), + /*was_site_likely_previously_familiar=*/query_results.empty()); +} + +void SiteProtectionMetricsObserver::OnKnowIfSiteWasLikelyPreviouslyFamiliar( + std::unique_ptr<MetricsData> metrics_data, + bool was_site_likely_previously_familiar) { + if (!was_site_likely_previously_familiar) { + metrics_data->matched_heuristics.push_back( + SiteFamiliarityHeuristicName::kFamiliarLikelyPreviouslyUnfamiliar); + metrics_data->most_strict_matched_history_heuristic = + SiteFamiliarityHistoryHeuristicName:: + kVisitedMoreThanADayAgoPreviouslyUnfamiliar; + } + + LogMetrics(std::move(metrics_data)); +} + +void SiteProtectionMetricsObserver::LogMetrics( + std::unique_ptr<MetricsData> metrics_data) { bool no_heuristics_match = metrics_data->matched_heuristics.empty(); if (no_heuristics_match) { metrics_data->matched_heuristics.push_back( @@ -257,7 +346,7 @@ ukm::builders::SiteFamiliarityHeuristicResult(metrics_data->ukm_source_id) .SetAnyHeuristicsMatch(!no_heuristics_match) .SetOnHighConfidenceAllowlist( - url_on_safe_browsing_high_confidence_allowlist) + metrics_data->url_on_safe_browsing_high_confidence_allowlist) .SetSiteEngagementScore( RoundSiteEngagementScoreForUkm(metrics_data->site_engagement_score)) .SetSiteFamiliarityHistoryHeuristic(
diff --git a/chrome/browser/site_protection/site_protection_metrics_observer.h b/chrome/browser/site_protection/site_protection_metrics_observer.h index 9d61562..3731a81 100644 --- a/chrome/browser/site_protection/site_protection_metrics_observer.h +++ b/chrome/browser/site_protection/site_protection_metrics_observer.h
@@ -72,9 +72,11 @@ ukm::SourceId ukm_source_id = ukm::kInvalidSourceId; double site_engagement_score = 0; + bool url_on_safe_browsing_high_confidence_allowlist = false; GURL last_committed_url; url::Origin last_committed_origin; base::Time data_fetch_start_time; + std::optional<base::Time> last_visit_time; std::vector<SiteFamiliarityHeuristicName> matched_heuristics; SiteFamiliarityHistoryHeuristicName most_strict_matched_history_heuristic = SiteFamiliarityHistoryHeuristicName::kNoHeuristicMatch; @@ -103,11 +105,33 @@ std::unique_ptr<MetricsData> metrics_data, bool has_visit_older_than_a_day_ago); - void LogMetrics(std::unique_ptr<MetricsData> metrics_data, - bool url_on_safe_browsing_high_confidence_allowlist, - std::optional<safe_browsing::SafeBrowsingDatabaseManager:: - HighConfidenceAllowlistCheckLoggingDetails> - logging_details); + // Called with whether the site is on the high confidence allowlist. + void OnGotHighConfidenceAllowlistResult( + std::unique_ptr<MetricsData> metrics_data, + bool url_on_safe_browsing_high_confidence_allowlist, + std::optional<safe_browsing::SafeBrowsingDatabaseManager:: + HighConfidenceAllowlistCheckLoggingDetails> + logging_details); + + // Called with the history visit to the origin in `metrics_data` which + // occurred more than a day prior to the most recent visit to the origin. + void OnGotVisitToOriginOlderThanADayPriorToPreviousVisit( + std::unique_ptr<MetricsData> metrics_data, + history::HistoryLastVisitResult last_visit_result); + + // Called with the history visit to any site which occurred more than a day + // prior to the visit to the origin in `metrics_data`. + void OnGotVisitOlderThanADayPriorToPreviousVisit( + std::unique_ptr<MetricsData> metrics_data, + history::QueryResults query_results); + + // Called with whether there is a history visit to any site more than a day + // prior to the visit to the origin in `metrics_data`. + void OnKnowIfSiteWasLikelyPreviouslyFamiliar( + std::unique_ptr<MetricsData> metrics_data, + bool was_site_likely_previously_familiar); + + void LogMetrics(std::unique_ptr<MetricsData> metrics_data); WEB_CONTENTS_USER_DATA_KEY_DECL();
diff --git a/chrome/browser/site_protection/site_protection_metrics_observer_unittest.cc b/chrome/browser/site_protection/site_protection_metrics_observer_unittest.cc index 116be2d0d..84a04845 100644 --- a/chrome/browser/site_protection/site_protection_metrics_observer_unittest.cc +++ b/chrome/browser/site_protection/site_protection_metrics_observer_unittest.cc
@@ -184,6 +184,12 @@ return values.size() == 1u ? values[0] : -1; } + int64_t GetUkmHistoryFamiliarityHeuristicValue( + ukm::TestUkmRecorder& ukm_recorder) { + return GetUkmFamiliarityHeuristicValue(ukm_recorder, + "SiteFamiliarityHistoryHeuristic"); + } + void NavigateAndCheckRecordedHeuristicUkm(const GURL& url, const std::string& metric_name, int64_t expected_value) { @@ -222,8 +228,7 @@ {SiteFamiliarityHeuristicName::kNoVisitsToAnySiteMoreThanADayAgo}); EXPECT_EQ(static_cast<int>(SiteFamiliarityHistoryHeuristicName:: kNoVisitsToAnySiteMoreThanADayAgo), - GetUkmFamiliarityHeuristicValue(ukm_recorder, - "SiteFamiliarityHistoryHeuristic")); + GetUkmHistoryFamiliarityHeuristicValue(ukm_recorder)); } // Test the histograms and UKM which are logged by SiteProtectionMetricsObserver @@ -250,8 +255,7 @@ SiteFamiliarityHeuristicName::kVisitedMoreThanADayAgo}); EXPECT_EQ(static_cast<int>( SiteFamiliarityHistoryHeuristicName::kVisitedMoreThanADayAgo), - GetUkmFamiliarityHeuristicValue( - ukm_recorder, "SiteFamiliarityHistoryHeuristic")); + GetUkmHistoryFamiliarityHeuristicValue(ukm_recorder)); } { @@ -262,8 +266,7 @@ EXPECT_EQ( static_cast<int>( SiteFamiliarityHistoryHeuristicName::kVisitedMoreThanFourHoursAgo), - GetUkmFamiliarityHeuristicValue(ukm_recorder, - "SiteFamiliarityHistoryHeuristic")); + GetUkmHistoryFamiliarityHeuristicValue(ukm_recorder)); } { @@ -272,8 +275,7 @@ kUrlVisited1HourAgo, {SiteFamiliarityHeuristicName::kNoHeuristicMatch}); EXPECT_EQ(static_cast<int>( SiteFamiliarityHistoryHeuristicName::kNoHeuristicMatch), - GetUkmFamiliarityHeuristicValue( - ukm_recorder, "SiteFamiliarityHistoryHeuristic")); + GetUkmHistoryFamiliarityHeuristicValue(ukm_recorder)); } } @@ -383,6 +385,87 @@ } } +// Test that SiteProtectionMetricsObserver logs the correct histograms and UKM +// if the SiteFamiliarityHeuristicName::kVisitedMoreThanADayAgo heuristic +// applies for the current visit to the site but the heuristic did not apply +// to the previous visit to the site. +TEST_F(SiteProtectionMetricsObserverTest, SiteFamiliarWasPreviouslyUnfamiliar) { + GURL kPageUrl("https://bar.com"); + GURL kOtherUrl("https://baz.com"); + + base::Time now = base::Time::Now(); + base::Time kPageVisitTime1 = now - base::Hours(25); + base::Time kPageVisitTime2 = kPageVisitTime1 - base::Hours(25); + base::Time kOtherVisitTime = kPageVisitTime2 - base::Hours(25); + + GetRegularProfileHistoryService()->AddPage(kPageUrl, kPageVisitTime1, + history::SOURCE_BROWSED); + GetRegularProfileHistoryService()->AddPage(kOtherUrl, kOtherVisitTime, + history::SOURCE_BROWSED); + { + ukm::TestAutoSetUkmRecorder ukm_recorder; + NavigateAndCheckRecordedHeuristicHistograms( + kPageUrl, + {SiteFamiliarityHeuristicName::kVisitedMoreThanFourHoursAgo, + SiteFamiliarityHeuristicName::kVisitedMoreThanADayAgo, + SiteFamiliarityHeuristicName::kFamiliarLikelyPreviouslyUnfamiliar}); + EXPECT_EQ(static_cast<int>(SiteFamiliarityHistoryHeuristicName:: + kVisitedMoreThanADayAgoPreviouslyUnfamiliar), + GetUkmHistoryFamiliarityHeuristicValue(ukm_recorder)); + } + + GetRegularProfileHistoryService()->AddPage(kPageUrl, kPageVisitTime2, + history::SOURCE_BROWSED); + + { + ukm::TestAutoSetUkmRecorder ukm_recorder; + NavigateAndCheckRecordedHeuristicHistograms( + kPageUrl, {SiteFamiliarityHeuristicName::kVisitedMoreThanFourHoursAgo, + SiteFamiliarityHeuristicName::kVisitedMoreThanADayAgo}); + EXPECT_EQ(static_cast<int>( + SiteFamiliarityHistoryHeuristicName::kVisitedMoreThanADayAgo), + GetUkmHistoryFamiliarityHeuristicValue(ukm_recorder)); + } +} + +// Test that SiteProtectionMetricsObserver logs the correct histograms +// if: +// - SiteFamiliarityHeuristicName::kVisitedMoreThanADayAgo heuristic +// applies for the current visit. +// AND +// - SiteFamiliarityHeuristicName::kVisitedMoreThanADayAgo heuristic +// does not apply to the previous visit. +// AND +// - SiteFamiliarityHeuristicName::kNoVisitsToAnySiteMoreThanADayAgo +// applies to the previous visit. +TEST_F(SiteProtectionMetricsObserverTest, + SiteFamiliarWasPreviouslyUnfamiliarDueToNoOldHistory) { + GURL kPageUrl("https://bar.com"); + GURL kOtherUrl("https://baz.com"); + + base::Time now = base::Time::Now(); + base::Time kPageVisitTime = now - base::Hours(25); + base::Time kOtherVisitTime1 = kPageVisitTime - base::Hours(1); + base::Time kOtherVisitTime2 = kOtherVisitTime1 - base::Hours(100); + + GetRegularProfileHistoryService()->AddPage(kPageUrl, kPageVisitTime, + history::SOURCE_BROWSED); + GetRegularProfileHistoryService()->AddPage(kOtherUrl, kOtherVisitTime1, + history::SOURCE_BROWSED); + + NavigateAndCheckRecordedHeuristicHistograms( + kPageUrl, {SiteFamiliarityHeuristicName::kVisitedMoreThanFourHoursAgo, + SiteFamiliarityHeuristicName::kVisitedMoreThanADayAgo}); + + GetRegularProfileHistoryService()->AddPage(kOtherUrl, kOtherVisitTime2, + history::SOURCE_BROWSED); + NavigateAndCheckRecordedHeuristicHistograms( + kPageUrl, + {SiteFamiliarityHeuristicName::kVisitedMoreThanFourHoursAgo, + SiteFamiliarityHeuristicName::kVisitedMoreThanADayAgo, + SiteFamiliarityHeuristicName::kFamiliarLikelyPreviouslyUnfamiliar}); +} + // Test that SiteProtectionMetricsObserver logs whether any heuristics matched // to UKM. TEST_F(SiteProtectionMetricsObserverTest, AnyHeuristicsMatchUkm) {
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/PersistedTabData.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/PersistedTabData.java index 49e1183..3bc27ca 100644 --- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/PersistedTabData.java +++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/PersistedTabData.java
@@ -557,11 +557,10 @@ public static void performStorageMaintenance(List<Integer> liveTabIds) { ThreadUtils.assertOnUiThread(); for (Class<? extends PersistedTabData> clazz : sSupportedMaintenanceClasses) { + // Maintenance is supported only for regular Tabs. + boolean isEncrypted = false; PersistedTabDataConfiguration config = - PersistedTabDataConfiguration.get( - clazz, false - /** Maintenance is only supported for regular Tabs */ - ); + PersistedTabDataConfiguration.get(clazz, isEncrypted); PersistedTabDataStorage storage = config.getStorage(); storage.performMaintenance(liveTabIds, config.getId()); }
diff --git a/chrome/browser/thumbnail/generator/android/java/src/org/chromium/chrome/browser/thumbnail/generator/ThumbnailMediaParserTest.java b/chrome/browser/thumbnail/generator/android/java/src/org/chromium/chrome/browser/thumbnail/generator/ThumbnailMediaParserTest.java index aef2781..f0692db 100644 --- a/chrome/browser/thumbnail/generator/android/java/src/org/chromium/chrome/browser/thumbnail/generator/ThumbnailMediaParserTest.java +++ b/chrome/browser/thumbnail/generator/android/java/src/org/chromium/chrome/browser/thumbnail/generator/ThumbnailMediaParserTest.java
@@ -73,29 +73,21 @@ return result; } + /** Verify that the metadata from audio file can be retrieved correctly. */ @Test @LargeTest @Feature({"MediaParser"}) - /** - * Verify that the metadata from audio file can be retrieved correctly. - * - * @throws InterruptedException - */ public void testParseAudioMetatadata() { String filePath = UrlUtils.getIsolatedTestRoot() + "/media/test/data/sfx.mp3"; MediaParserResult result = parseMediaFile(filePath, "audio/mp3"); Assert.assertTrue("Failed to parse audio metadata.", result.mediaData != null); } + /** Verify metadata and thumbnail can be retrieved correctly from h264 video file. */ @Test @LargeTest @Feature({"MediaParser"}) @Restriction(DeviceFormFactor.PHONE) - /** - * Verify metadata and thumbnail can be retrieved correctly from h264 video file. - * - * @throws InterruptedException - */ public void testParseVideoH264() { String filePath = UrlUtils.getIsolatedTestRoot() + "/media/test/data/bear.mp4"; MediaParserResult result = parseMediaFile(filePath, "video/mp4"); @@ -106,14 +98,10 @@ "Failed to retrieve thumbnail.", result.mediaData.thumbnail.getHeight() > 0); } + /** Verify metadata and thumbnail can be retrieved correctly from vp8 video file. */ @Test @LargeTest @Feature({"MediaParser"}) - /** - * Verify metadata and thumbnail can be retrieved correctly from vp8 video file. - * - * @throws InterruptedException - */ public void testParseVideoThumbnailVp8() { String filePath = UrlUtils.getIsolatedTestRoot() + "/media/test/data/bear-vp8-webvtt.webm"; MediaParserResult result = parseMediaFile(filePath, "video/webm"); @@ -124,15 +112,13 @@ "Failed to retrieve thumbnail.", result.mediaData.thumbnail.getHeight() > 0); } - @Test - @LargeTest - @Feature({"MediaParser"}) /** * Verify metadata and thumbnail can be retrieved correctly from vp8 video file with alpha * plane. - * - * @throws InterruptedException */ + @Test + @LargeTest + @Feature({"MediaParser"}) public void testParseVideoThumbnailVp8WithAlphaPlane() { String filePath = UrlUtils.getIsolatedTestRoot() + "/media/test/data/bear-vp8a.webm"; MediaParserResult result = parseMediaFile(filePath, "video/webm"); @@ -143,14 +129,10 @@ "Failed to retrieve thumbnail.", result.mediaData.thumbnail.getHeight() > 0); } + /** Verify metadata and thumbnail can be retrieved correctly from vp9 video file. */ @Test @LargeTest @Feature({"MediaParser"}) - /** - * Verify metadata and thumbnail can be retrieved correctly from vp9 video file. - * - * @throws InterruptedException - */ public void testParseVideoThumbnailVp9() { String filePath = UrlUtils.getIsolatedTestRoot() + "/media/test/data/bear-vp9.webm"; MediaParserResult result = parseMediaFile(filePath, "video/webm"); @@ -161,14 +143,10 @@ "Failed to retrieve thumbnail.", result.mediaData.thumbnail.getHeight() > 0); } + /** Verify metadata and thumbnail can be retrieved correctly from av1 video file. */ @Test @LargeTest @Feature({"MediaParser"}) - /** - * Verify metadata and thumbnail can be retrieved correctly from av1 video file. - * - * @throws InterruptedException - */ public void testParseVideoThumbnailAv1() { String filePath = UrlUtils.getIsolatedTestRoot() + "/media/test/data/bear-av1.mp4"; MediaParserResult result = parseMediaFile(filePath, "video/mp4"); @@ -179,14 +157,10 @@ "Failed to retrieve thumbnail.", result.mediaData.thumbnail.getHeight() > 0); } + /** Verify metadata and thumbnail can be retrieved correctly from h265 video file. */ @Test @LargeTest @Feature({"MediaParser"}) - /** - * Verify metadata and thumbnail can be retrieved correctly from h265 video file. - * - * @throws InterruptedException - */ public void testParseVideoThumbnailH265() { String filePath = UrlUtils.getIsolatedTestRoot() + "/media/test/data/bear-hevc-frag.mp4"; MediaParserResult result = parseMediaFile(filePath, "video/mp4"); @@ -197,14 +171,10 @@ "Failed to retrieve thumbnail.", result.mediaData.thumbnail.getHeight() > 0); } + /** Verify graceful failure on parsing invalid video file. */ @Test @LargeTest @Feature({"MediaParser"}) - /** - * Verify graceful failure on parsing invalid video file. - * - * @throws InterruptedException - */ public void testParseInvalidVideoFile() throws Exception { File invalidFile = File.createTempFile("test", "webm"); MediaParserResult result = parseMediaFile(invalidFile.getAbsolutePath(), "video/webm");
diff --git a/chrome/browser/translate/android/java/src/org/chromium/chrome/browser/translate/AutoTranslateSnackbarControllerJavaTest.java b/chrome/browser/translate/android/java/src/org/chromium/chrome/browser/translate/AutoTranslateSnackbarControllerJavaTest.java index 869bb359..6ae84ee 100644 --- a/chrome/browser/translate/android/java/src/org/chromium/chrome/browser/translate/AutoTranslateSnackbarControllerJavaTest.java +++ b/chrome/browser/translate/android/java/src/org/chromium/chrome/browser/translate/AutoTranslateSnackbarControllerJavaTest.java
@@ -87,14 +87,14 @@ Assert.assertEquals("en", data.getTargetLanguage()); } - @Test - @SmallTest /** * The target language is stored in Translate format, which uses the old deprecated Java codes * for several languages (Hebrew, Indonesian), and uses "tl" while Chromium uses "fil" for * Tagalog/Filipino. This tests that when using Translate format codes the Chrome version is * displayed in the Snackbar. */ + @Test + @SmallTest public void testShowSnackbarChromeLanguage() throws Exception { // Use the Translate tag tl which Chrome should display as "Filipino" showSnackbar("tl");
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImplTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImplTest.java index 72028a9f..014ad6fd 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImplTest.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImplTest.java
@@ -121,6 +121,7 @@ verify(mViewTreeObserver).removeOnGlobalLayoutListener(mImpl); } + @Test public void testRecalculateOmniboxAlignment_phone() { doReturn(mAnchorView).when(mHorizontalAlignmentView).getParent(); doReturn(60).when(mHorizontalAlignmentView).getTop(); @@ -138,6 +139,7 @@ alignment); } + @Test public void testRecalculateOmniboxAlignment_bottomWindowPadding() { mBottomWindowPadding = 40; doReturn(mAnchorView).when(mHorizontalAlignmentView).getParent();
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java index d4568293..b947577 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
@@ -356,7 +356,8 @@ nextSuggestionLogicalIndex++; } else { assert false - : "Unsupported group render type: " + currentGroupConfig.getRenderType(); + : "Unsupported group render type: " + + currentGroupConfig.getRenderType().name(); } previousGroupConfig = currentGroupConfig;
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessorUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessorUnitTest.java index 261e97e6..f99e9839 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessorUnitTest.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessorUnitTest.java
@@ -339,7 +339,8 @@ for (AnswerType type : ANSWER_TYPES) { SuggestionTestHelper suggHelper = createAnswerSuggestion(type, "", 1, "", 1, null); // Note: model is re-created on every iteration. - Assert.assertNotNull("No icon associated with type: " + type, suggHelper.getIcon()); + Assert.assertNotNull( + "No icon associated with type: " + type.name(), suggHelper.getIcon()); } } @@ -348,7 +349,8 @@ for (AnswerType type : ANSWER_TYPES) { SuggestionTestHelper suggHelper = createRichAnswerSuggestion(type, 0, false); // Note: model is re-created on every iteration. - Assert.assertNotNull("No icon associated with type: " + type, suggHelper.getIcon()); + Assert.assertNotNull( + "No icon associated with type: " + type.name(), suggHelper.getIcon()); } }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/DynamicSpacingRecyclerViewItemDecorationUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/DynamicSpacingRecyclerViewItemDecorationUnitTest.java index 8ca3109e..a4a2f8b 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/DynamicSpacingRecyclerViewItemDecorationUnitTest.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/DynamicSpacingRecyclerViewItemDecorationUnitTest.java
@@ -223,7 +223,8 @@ // It's unlikely that the minimum spacing would guarantee 2.5 items to be shown, but we can // verify this fast. - assertNotEquals(CONTAINER_SIZE, LEAD_IN_SPACE + itemWidth * 2.5 + MIN_ELEMENT_SPACE * 2); + assertNotEquals( + CONTAINER_SIZE, (int) (LEAD_IN_SPACE + itemWidth * 2.5 + MIN_ELEMENT_SPACE * 2)); // However, we don't permit dynamic spacing in landscape mode, so this should fall back to // MIN_ELEMENT_SPACE.
diff --git a/chrome/browser/ui/android/plus_addresses/java/src/org/chromium/chrome/browser/ui/plus_addresses/PlusAddressCreationErrorStateInfo.java b/chrome/browser/ui/android/plus_addresses/java/src/org/chromium/chrome/browser/ui/plus_addresses/PlusAddressCreationErrorStateInfo.java index b2a4079..0892f1ed 100644 --- a/chrome/browser/ui/android/plus_addresses/java/src/org/chromium/chrome/browser/ui/plus_addresses/PlusAddressCreationErrorStateInfo.java +++ b/chrome/browser/ui/android/plus_addresses/java/src/org/chromium/chrome/browser/ui/plus_addresses/PlusAddressCreationErrorStateInfo.java
@@ -10,8 +10,8 @@ import org.jni_zero.JNINamespace; import org.jni_zero.JniType; -@JNINamespace("plus_addresses") /** Contains necessary information to show a meaningful error message to the user. */ +@JNINamespace("plus_addresses") class PlusAddressCreationErrorStateInfo { private final @PlusAddressCreationBottomSheetErrorType int mErrorType; private final String mTitle;
diff --git a/chrome/browser/ui/android/plus_addresses/java/src/org/chromium/chrome/browser/ui/plus_addresses/PlusAddressCreationNormalStateInfo.java b/chrome/browser/ui/android/plus_addresses/java/src/org/chromium/chrome/browser/ui/plus_addresses/PlusAddressCreationNormalStateInfo.java index 35d26d9..d705d40 100644 --- a/chrome/browser/ui/android/plus_addresses/java/src/org/chromium/chrome/browser/ui/plus_addresses/PlusAddressCreationNormalStateInfo.java +++ b/chrome/browser/ui/android/plus_addresses/java/src/org/chromium/chrome/browser/ui/plus_addresses/PlusAddressCreationNormalStateInfo.java
@@ -14,8 +14,8 @@ import java.util.Objects; -@JNINamespace("plus_addresses") /** Contains necessary information to show a meaningful error message to the user. */ +@JNINamespace("plus_addresses") class PlusAddressCreationNormalStateInfo { private final String mTitle; private final String mDescription;
diff --git a/chrome/browser/ui/android/searchactivityutils/java/src/org/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManagerTest.java b/chrome/browser/ui/android/searchactivityutils/java/src/org/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManagerTest.java index e2955f79..b64af8f 100644 --- a/chrome/browser/ui/android/searchactivityutils/java/src/org/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManagerTest.java +++ b/chrome/browser/ui/android/searchactivityutils/java/src/org/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManagerTest.java
@@ -144,8 +144,6 @@ SearchActivityPreferences p2 = new SearchActivityPreferences( "test", new GURL("https://test.url"), true, true, true); - Assert.assertEquals(p1, p1); - Assert.assertEquals(p2, p2); Assert.assertEquals(p1, p2); Assert.assertEquals(p1.hashCode(), p2.hashCode());
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/history_sync/HistorySyncTest.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/history_sync/HistorySyncTest.java index 262d84e..0d9aeb2 100644 --- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/history_sync/HistorySyncTest.java +++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/history_sync/HistorySyncTest.java
@@ -481,13 +481,13 @@ histogramWatcher.assertExpected(); } - @Test - @MediumTest /** * This tests ensure that onClickListeners are attached to the accept/decline buttons when the * HistorySyncCoordinator is created without a view and the MinorModeHelper resolves before a * View is set. */ + @Test + @MediumTest public void testOnClickListenersAttachedWithMinorModeAccount() { mSigninTestRule.addAccountThenSignin(AccountManagerTestRule.AADC_MINOR_ACCOUNT); @@ -532,13 +532,13 @@ }); } - @Test - @MediumTest /** * This tests ensure that onClickListeners are attached to the accept/decline buttons when the * HistorySyncCoordinator is created without a view and the MinorModeHelper resolves before a * View is set. */ + @Test + @MediumTest public void testOnClickListenersAttachedWithNonMinorModeAccount() { mSigninTestRule.addAccountThenSignin(AccountManagerTestRule.AADC_ADULT_ACCOUNT);
diff --git a/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc b/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc index a5d25b62..93be4045 100644 --- a/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc +++ b/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc
@@ -160,7 +160,8 @@ } } void DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) override {} + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) override {} void DispatchTreeDestroyedEvent(ui::AXTreeID tree_id) override {} void DispatchActionResult( const ui::AXActionData& data,
diff --git a/chrome/browser/ui/fullscreen_util_mac.cc b/chrome/browser/ui/fullscreen_util_mac.cc index 7a3ad19..b94cff2 100644 --- a/chrome/browser/ui/fullscreen_util_mac.cc +++ b/chrome/browser/ui/fullscreen_util_mac.cc
@@ -6,6 +6,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_window/public/browser_window_interface.h" #include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" #include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h" #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" @@ -15,12 +16,13 @@ namespace fullscreen_utils { -bool IsInContentFullscreen(Browser* browser) { - if (!browser->exclusive_access_manager()) { +bool IsInContentFullscreen(BrowserWindowInterface* browser_window_interface) { + if (!browser_window_interface->GetExclusiveAccessManager()) { return false; } - FullscreenController* controller = - browser->exclusive_access_manager()->fullscreen_controller(); + FullscreenController* const controller = + browser_window_interface->GetExclusiveAccessManager() + ->fullscreen_controller(); return controller && (controller->IsWindowFullscreenForTabOrPending() || controller->IsExtensionFullscreenOrPending()); }
diff --git a/chrome/browser/ui/fullscreen_util_mac.h b/chrome/browser/ui/fullscreen_util_mac.h index 1db44d4..96ab162 100644 --- a/chrome/browser/ui/fullscreen_util_mac.h +++ b/chrome/browser/ui/fullscreen_util_mac.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_UI_FULLSCREEN_UTIL_MAC_H_ class Browser; +class BrowserWindowInterface; namespace fullscreen_utils { @@ -13,7 +14,7 @@ // - `browser` is currently in fullscreen // - the fullscreen mode is web or extension API initiated (as opposed to via // macOS affordances like traffic lights -bool IsInContentFullscreen(Browser* browser); +bool IsInContentFullscreen(BrowserWindowInterface* browser_window_interface); // Whether the "Always Show Toolbar in Full Screen" setting is enabled. Properly // handles PWAs.
diff --git a/chrome/browser/ui/lens/lens_overlay_controller.cc b/chrome/browser/ui/lens/lens_overlay_controller.cc index d67fcd0..f4371cb 100644 --- a/chrome/browser/ui/lens/lens_overlay_controller.cc +++ b/chrome/browser/ui/lens/lens_overlay_controller.cc
@@ -2096,6 +2096,8 @@ // Add our blur layer to the view. overlay_view_->SetPaintToLayer(); overlay_view_->layer()->Add(lens_overlay_blur_layer_delegate_->layer()); + overlay_view_->layer()->StackAtBottom( + lens_overlay_blur_layer_delegate_->layer()); lens_overlay_blur_layer_delegate_->layer()->SetBounds( overlay_view_->layer()->bounds()); return;
diff --git a/chrome/browser/ui/search_engine_choice/OWNERS b/chrome/browser/ui/search_engine_choice/OWNERS index a8ff91d..c7aa42b 100644 --- a/chrome/browser/ui/search_engine_choice/OWNERS +++ b/chrome/browser/ui/search_engine_choice/OWNERS
@@ -1 +1 @@ -file://components/search_engines/search_engine_choice/OWNERS +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/chrome/browser/ui/toasts/toast_controller.cc b/chrome/browser/ui/toasts/toast_controller.cc index 3fd8031..e7c441b 100644 --- a/chrome/browser/ui/toasts/toast_controller.cc +++ b/chrome/browser/ui/toasts/toast_controller.cc
@@ -36,6 +36,10 @@ #include "ui/views/view.h" #include "ui/views/widget/widget.h" +#if BUILDFLAG(IS_MAC) +#include "chrome/browser/ui/fullscreen_util_mac.h" +#endif + ToastParams::ToastParams(ToastId id) : toast_id_(id) {} ToastParams::ToastParams(ToastParams&& other) noexcept = default; ToastParams& ToastParams::operator=(ToastParams&& other) noexcept = default; @@ -232,6 +236,18 @@ } } +bool ToastController::ShouldRenderToastOverWebContents() { + bool render_in_contents = + browser_window_interface_->ShouldHideUIForFullscreen(); + +#if BUILDFLAG(IS_MAC) + render_in_contents |= + fullscreen_utils::IsInContentFullscreen(browser_window_interface_); +#endif + + return render_in_contents; +} + void ToastController::WebContentsDestroyed() { omnibox_helper_observer_.Reset(); Observe(nullptr); @@ -274,13 +290,13 @@ void ToastController::CreateToast(const ToastParams& params, const ToastSpecification* spec) { - views::View* anchor_view = browser_window_interface_->TopContainer(); + views::View* const anchor_view = browser_window_interface_->TopContainer(); CHECK(anchor_view); auto toast_view = std::make_unique<toasts::ToastView>( anchor_view, FormatString(spec->body_string_id(), params.body_string_replacement_params_), - spec->icon(), browser_window_interface_->ShouldHideUIForFullscreen(), + spec->icon(), ShouldRenderToastOverWebContents(), base::BindRepeating(&RecordToastDismissReason, params.toast_id_)); if (spec->has_close_button()) { @@ -335,7 +351,7 @@ void ToastController::OnFullscreenStateChanged() { toast_view_->UpdateRenderToastOverWebContentsAndPaint( - browser_window_interface_->ShouldHideUIForFullscreen()); + ShouldRenderToastOverWebContents()); } void ToastController::ClearTabScopedToasts() {
diff --git a/chrome/browser/ui/toasts/toast_controller.h b/chrome/browser/ui/toasts/toast_controller.h index eb4f4f3..cd51a6cd 100644 --- a/chrome/browser/ui/toasts/toast_controller.h +++ b/chrome/browser/ui/toasts/toast_controller.h
@@ -91,6 +91,8 @@ views::Widget* GetToastWidgetForTesting() { return toast_widget_; } + toasts::ToastView* GetToastViewForTesting() { return toast_view_; } + base::OneShotTimer* GetToastCloseTimerForTesting(); private: @@ -104,6 +106,7 @@ std::vector<std::u16string> replacement); void ClearTabScopedToasts(); void UpdateToastWidgetVisibility(bool show_toast_widget); + bool ShouldRenderToastOverWebContents(); // FullscreenObserver: void OnFullscreenStateChanged() override;
diff --git a/chrome/browser/ui/toasts/toast_controller_interactive_ui_test.cc b/chrome/browser/ui/toasts/toast_controller_interactive_ui_test.cc index de623d6..7e062c1 100644 --- a/chrome/browser/ui/toasts/toast_controller_interactive_ui_test.cc +++ b/chrome/browser/ui/toasts/toast_controller_interactive_ui_test.cc
@@ -13,6 +13,8 @@ #include "chrome/browser/ui/browser_element_identifiers.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/browser_window/public/browser_window_features.h" +#include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h" +#include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" #include "chrome/browser/ui/location_bar/location_bar.h" #include "chrome/browser/ui/omnibox/omnibox_tab_helper.h" #include "chrome/browser/ui/toasts/api/toast_id.h" @@ -31,10 +33,12 @@ #include "content/public/test/browser_test.h" #include "net/dns/mock_host_resolver.h" #include "net/test/embedded_test_server/embedded_test_server.h" +#include "third_party/blink/public/mojom/frame/fullscreen.mojom.h" #include "ui/base/accelerators/accelerator.h" #include "ui/base/interaction/element_identifier.h" #include "ui/base/interaction/interactive_test.h" #include "ui/events/keycodes/keyboard_codes.h" +#include "ui/gfx/geometry/rect.h" #include "ui/views/bubble/bubble_dialog_delegate_view.h" #include "ui/views/focus/focus_manager.h" #include "ui/views/interaction/interactive_views_test.h" @@ -448,3 +452,30 @@ toasts::ToastCloseReason::kAbort, 1); })); } + +IN_PROC_BROWSER_TEST_F(ToastControllerInteractiveTest, + ToastRendersOverWebContents) { +#if BUILDFLAG(IS_MAC) + FullscreenController* const fullscreen_controller = + browser()->exclusive_access_manager()->fullscreen_controller(); + fullscreen_controller->set_is_tab_fullscreen_for_testing(true); +#else + ui_test_utils::FullscreenWaiter waiter(browser(), {.tab_fullscreen = true}); + content::WebContents* const active_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + active_contents->GetDelegate()->EnterFullscreenModeForTab( + active_contents->GetPrimaryMainFrame(), {}); + waiter.Wait(); +#endif + + ToastController* const toast_controller = GetToastController(); + EXPECT_TRUE( + toast_controller->MaybeShowToast(ToastParams(ToastId::kLinkCopied))); + const gfx::Rect toast_bounds = + toast_controller->GetToastViewForTesting()->GetBoundsInScreen(); + const gfx::Rect web_view_bounds = + BrowserView::GetBrowserViewForBrowser(browser()) + ->GetContentsWebView() + ->GetBoundsInScreen(); + EXPECT_TRUE(web_view_bounds.Contains(toast_bounds)); +}
diff --git a/chrome/browser/ui/toasts/toast_view.cc b/chrome/browser/ui/toasts/toast_view.cc index 4e9d9886..55542a8 100644 --- a/chrome/browser/ui/toasts/toast_view.cc +++ b/chrome/browser/ui/toasts/toast_view.cc
@@ -19,9 +19,11 @@ #include "ui/compositor/layer.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/animation/animation_builder.h" +#include "ui/views/border.h" #include "ui/views/controls/button/image_button.h" #include "ui/views/controls/button/image_button_factory.h" #include "ui/views/controls/highlight_path_generator.h" +#include "ui/views/layout/layout_provider.h" #include "ui/views/view_class_properties.h" #include "ui/views/widget/widget.h" #include "ui/views/window/dialog_client_view.h" @@ -143,10 +145,12 @@ close_button_callback_.Then( base::BindRepeating(&ToastView::Close, base::Unretained(this), ToastCloseReason::kCloseButton)), - vector_icons::kCloseIcon, - lp->GetDistanceMetric(DISTANCE_TOAST_BUBBLE_HEIGHT_CONTENT) - - lp->GetInsetsMetric(views::INSETS_VECTOR_IMAGE_BUTTON).height(), + vector_icons::kCloseChromeRefreshIcon, + lp->GetDistanceMetric(DISTANCE_TOAST_BUBBLE_ICON_SIZE), ui::kColorToastForeground)); + // Override the image button's border with the appropriate icon border size. + close_button_->SetBorder(views::CreateEmptyBorder( + lp->GetInsetsMetric(views::InsetsMetric::INSETS_ICON_BUTTON))); views::InstallCircleHighlightPathGenerator(close_button_); close_button_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_CLOSE)); close_button_->SetProperty(views::kElementIdentifierKey, kToastCloseButton); @@ -280,7 +284,7 @@ icon_view_->SetImage(ui::ImageModel::FromVectorIcon( *icon_, color_provider->GetColor(ui::kColorToastForeground), ChromeLayoutProvider::Get()->GetDistanceMetric( - DISTANCE_TOAST_BUBBLE_LEADING_ICON_SIZE))); + DISTANCE_TOAST_BUBBLE_ICON_SIZE))); } void ToastView::AnimateOut(base::OnceClosure callback,
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc index 4d32cec..0c66beb 100644 --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc
@@ -224,18 +224,6 @@ "SearchWebInSidePanel", base::FEATURE_DISABLED_BY_DEFAULT); -// Feature that controls whether or not feature engagement configurations can be -// used to control automatic triggering for side search. -BASE_FEATURE(kSideSearchAutoTriggering, - "SideSearchAutoTriggering", - base::FEATURE_ENABLED_BY_DEFAULT); - -// Feature param that determines how many times a user has to return to a given -// SRP before we automatically trigger the side search side panel for that SRP -// on a subsequent navigation. -const base::FeatureParam<int> kSideSearchAutoTriggeringReturnCount{ - &kSideSearchAutoTriggering, "SideSearchAutoTriggeringReturnCount", 2}; - BASE_FEATURE(kSidePanelWebView, "SidePanelWebView", base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/chrome/browser/ui/ui_features.h b/chrome/browser/ui/ui_features.h index 818cb38b..1c46163 100644 --- a/chrome/browser/ui/ui_features.h +++ b/chrome/browser/ui/ui_features.h
@@ -167,9 +167,6 @@ BASE_DECLARE_FEATURE(kSideSearchFeedback); BASE_DECLARE_FEATURE(kSearchWebInSidePanel); -BASE_DECLARE_FEATURE(kSideSearchAutoTriggering); -extern const base::FeatureParam<int> kSideSearchAutoTriggeringReturnCount; - BASE_DECLARE_FEATURE(kTabGroupsCollapseFreezing); BASE_DECLARE_FEATURE(kTabHoverCardImages);
diff --git a/chrome/browser/ui/views/chrome_layout_provider.cc b/chrome/browser/ui/views/chrome_layout_provider.cc index 3539939..9b189df 100644 --- a/chrome/browser/ui/views/chrome_layout_provider.cc +++ b/chrome/browser/ui/views/chrome_layout_provider.cc
@@ -172,7 +172,7 @@ return 36; case DISTANCE_TOAST_BUBBLE_HEIGHT_CONTENT: return 24; - case DISTANCE_TOAST_BUBBLE_LEADING_ICON_SIZE: + case DISTANCE_TOAST_BUBBLE_ICON_SIZE: return 20; case DISTANCE_TOAST_BUBBLE_LEADING_ICON_SIDE_MARGINS: return 2;
diff --git a/chrome/browser/ui/views/chrome_layout_provider.h b/chrome/browser/ui/views/chrome_layout_provider.h index 7d283922..d93d7fa 100644 --- a/chrome/browser/ui/views/chrome_layout_provider.h +++ b/chrome/browser/ui/views/chrome_layout_provider.h
@@ -110,8 +110,8 @@ DISTANCE_TOAST_BUBBLE_HEIGHT_ACTION_BUTTON, // Height of the toast text and close button icon. DISTANCE_TOAST_BUBBLE_HEIGHT_CONTENT, - // Width and height of the leading vector icon shown in the toast bubble. - DISTANCE_TOAST_BUBBLE_LEADING_ICON_SIZE, + // Width and height of the vector icons shown in the toast bubble. + DISTANCE_TOAST_BUBBLE_ICON_SIZE, // Left and right margins of the leading vector icon shown in the toast // bubble. DISTANCE_TOAST_BUBBLE_LEADING_ICON_SIDE_MARGINS,
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc index c31c546..079c462 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -317,20 +317,18 @@ // has placeholder text. Use that instead of the DSE placeholder text. if (!model()->keyword_placeholder().empty()) { SetPlaceholderText(model()->keyword_placeholder()); - return; - } - - // Otherwise, if a DSE is set, use the DSE placeholder text. - const TemplateURL* const default_provider = controller() - ->client() - ->GetTemplateURLService() - ->GetDefaultSearchProvider(); - if (default_provider) { + } else if (const auto* default_provider = controller() + ->client() + ->GetTemplateURLService() + ->GetDefaultSearchProvider()) { + // Otherwise, if a DSE is set, use the DSE placeholder text. SetPlaceholderText(l10n_util::GetStringFUTF16( IDS_OMNIBOX_PLACEHOLDER_TEXT, default_provider->short_name())); } else { SetPlaceholderText(std::u16string()); } + + UpdatePlaceholderTextColor(); } bool OmniboxViewViews::GetSelectionAtEnd() const { @@ -630,8 +628,7 @@ void OmniboxViewViews::OnThemeChanged() { views::Textfield::OnThemeChanged(); - set_placeholder_text_color( - GetColorProvider()->GetColor(kColorOmniboxTextDimmed)); + UpdatePlaceholderTextColor(); SetSelectionBackgroundColor( GetColorProvider()->GetColor(kColorOmniboxSelectionBackground)); SetSelectionTextColor( @@ -2004,6 +2001,18 @@ #endif } +void OmniboxViewViews::UpdatePlaceholderTextColor() { + // Keyword placeholders are dim to differentiate from user input. DSE + // placeholders are not dim to draw attention to the omnibox and because the + // omnibox is unfocused so there's less risk of confusion with user input. + // Null in tests. + if (!GetColorProvider()) + return; + set_placeholder_text_color(GetColorProvider()->GetColor( + model()->keyword_placeholder().empty() ? kColorOmniboxText + : kColorOmniboxTextDimmed)); +} + BEGIN_METADATA(OmniboxViewViews) ADD_READONLY_PROPERTY_METADATA(bool, SelectionAtEnd) ADD_READONLY_PROPERTY_METADATA(int, TextWidth)
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.h b/chrome/browser/ui/views/omnibox/omnibox_view_views.h index a39f58c6..e8377f0 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.h +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
@@ -84,9 +84,7 @@ // Exposes the RenderText for tests. #if defined(UNIT_TEST) - gfx::RenderText* GetRenderText() { - return views::Textfield::GetRenderText(); - } + gfx::RenderText* GetRenderText() { return views::Textfield::GetRenderText(); } #endif // For use when switching tabs, this saves the current state onto the tab so @@ -326,6 +324,10 @@ // Called when the popup view becomes visible. void OnPopupOpened(); + // Helper for updating placeholder color depending on whether its a keyword or + // DSE placeholder. + void UpdatePlaceholderTextColor(); + // When true, the location bar view is read only and also is has a slightly // different presentation (smaller font size). This is used for popups. bool popup_window_mode_;
diff --git a/chrome/browser/ui/views/search_engine_choice/OWNERS b/chrome/browser/ui/views/search_engine_choice/OWNERS index a8ff91d..c7aa42b 100644 --- a/chrome/browser/ui/views/search_engine_choice/OWNERS +++ b/chrome/browser/ui/views/search_engine_choice/OWNERS
@@ -1 +1 @@ -file://components/search_engines/search_engine_choice/OWNERS +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/chrome/browser/ui/views/side_search/unified_side_search_controller.cc b/chrome/browser/ui/views/side_search/unified_side_search_controller.cc index c6ad7543..7e5a490 100644 --- a/chrome/browser/ui/views/side_search/unified_side_search_controller.cc +++ b/chrome/browser/ui/views/side_search/unified_side_search_controller.cc
@@ -14,7 +14,6 @@ #include "chrome/browser/ui/browser_window/public/browser_window_features.h" #include "chrome/browser/ui/color/chrome_color_id.h" #include "chrome/browser/ui/side_search/side_search_utils.h" -#include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/side_panel/side_panel.h" @@ -322,8 +321,10 @@ const GURL& previously_committed_url = navigation_handle->GetPreviousPrimaryMainFrameURL(); const bool is_renderer_initiated = navigation_handle->IsRendererInitiated(); - const int auto_triggering_return_count = - features::kSideSearchAutoTriggeringReturnCount.Get(); + + // How many times a user has to return to a given SRP before we automatically + // trigger the side search side panel for that SRP on a subsequent navigation. + constexpr int kAutoTriggeringReturnCount = 2; // Trigger the side panel only if we've returned to the same SRP n times and // this is the first navigation after navigating away from the Google SRP. We @@ -332,7 +333,7 @@ // etc. return is_renderer_initiated && tab_contents_helper->returned_to_previous_srp_count() == - auto_triggering_return_count && + kAutoTriggeringReturnCount && previously_committed_url == tab_contents_helper->last_search_url(); }
diff --git a/chrome/browser/ui/views/web_apps/web_app_navigation_capturing_iph_interactive_uitest.cc b/chrome/browser/ui/views/web_apps/web_app_navigation_capturing_iph_interactive_uitest.cc index de77d71d..c0c7c16 100644 --- a/chrome/browser/ui/views/web_apps/web_app_navigation_capturing_iph_interactive_uitest.cc +++ b/chrome/browser/ui/views/web_apps/web_app_navigation_capturing_iph_interactive_uitest.cc
@@ -34,6 +34,7 @@ #include "third_party/blink/public/common/input/web_mouse_event.h" #include "ui/base/interaction/element_identifier.h" #include "ui/base/interaction/state_observer.h" +#include "ui/base/test/ui_controls.h" #include "ui/views/interaction/interaction_test_util_views.h" #include "url/gurl.h" @@ -158,51 +159,24 @@ // Clicks on the "launch app" link on the start page with element ID // `element_id`. The start page must be open in at least one browser. The // context of the last step is the browser window containing the start page. - auto ClickLaunchLink(test::ClickMethod click, const std::string& element_id) { - int mouse_button; - bool shift = false; - switch (click) { - case test::ClickMethod::kLeftClick: - mouse_button = 0; - break; - case test::ClickMethod::kMiddleClick: - mouse_button = 1; - break; - case test::ClickMethod::kShiftClick: - mouse_button = 0; - shift = true; - break; - case test::ClickMethod::kRightClickLaunchApp: - mouse_button = 2; - break; - } - const auto js = base::StringPrintf(R"( - function(el) { - const event = new MouseEvent( - 'click', - { - bubbles: true, - button: %d, - cancelable: true, - shiftKey: %s - } - ); - el.dispatchEvent(event); - } - )", - mouse_button, shift ? "true" : "false"); - - return InAnyContext(ExecuteJsAt(kStartPageId, {"#" + element_id}, js) - .SetDescription("ClickLaunchLink()")); + auto ClickLaunchLink( + const std::string& element_id, + ui_controls::MouseButton button, + ui_controls::AcceleratorState accel = ui_controls::kNoAccelerator) { + return InAnyContext( + ClickElement(kStartPageId, {"#" + element_id}, button, accel) + .SetDescription("ClickLaunchLink()")); } // Clicks on `element_id` in the start page, which must be open in at least // one browser, launching a new app window. The context of the last step is // the window in which the link was opened. - auto TriggerAppLaunch(test::ClickMethod click, - const std::string& element_id) { + auto TriggerAppLaunch( + const std::string& element_id, + ui_controls::MouseButton button, + ui_controls::AcceleratorState accel = ui_controls::kNoAccelerator) { auto steps = Steps( - ClickLaunchLink(click, element_id), + ClickLaunchLink(element_id, button, accel), InAnyContext( WaitForShow(kBrowserViewElementId).SetTransitionOnlyOnEvent(true)), InSameContext(CheckViewProperty(kBrowserViewElementId, @@ -230,11 +204,11 @@ IN_PROC_BROWSER_TEST_F(WebAppNavigationCapturingIphUiTest, IPHShownOnLinkLeftClick) { const webapps::AppId app_id = InstallTestWebApp(GetDestinationUrl()); - RunTestSequence(OpenStartPage(), - TriggerAppLaunch(test::ClickMethod::kLeftClick, - kToSiteBTargetBlankNoOpener), - InSameContext(WaitForPromo( - feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch))); + RunTestSequence( + OpenStartPage(), + TriggerAppLaunch(kToSiteBTargetBlankNoOpener, ui_controls::LEFT), + InSameContext(WaitForPromo( + feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch))); } // Middle click does not work (consistently?) on Mac; see @@ -247,11 +221,11 @@ IN_PROC_BROWSER_TEST_F(WebAppNavigationCapturingIphUiTest, MAYBE_IPHShownOnLinkMiddleClick) { const webapps::AppId app_id = InstallTestWebApp(GetStartUrl()); - RunTestSequence(OpenAppStartPage(app_id), - TriggerAppLaunch(test::ClickMethod::kMiddleClick, - kToSiteATargetBlankWithOpener), - InSameContext(WaitForPromo( - feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch))); + RunTestSequence( + OpenAppStartPage(app_id), + TriggerAppLaunch(kToSiteATargetBlankWithOpener, ui_controls::MIDDLE), + InSameContext(WaitForPromo( + feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch))); } // Shift-click click does not work (consistently?) on Mac; see @@ -266,8 +240,8 @@ const webapps::AppId app_id_a = InstallTestWebApp(GetStartUrl()); const webapps::AppId app_id_b = InstallTestWebApp(GetDestinationUrl()); RunTestSequence(OpenAppStartPage(app_id_a), - TriggerAppLaunch(test::ClickMethod::kShiftClick, - kToSiteBTargetBlankWithOpener), + TriggerAppLaunch(kToSiteBTargetBlankWithOpener, + ui_controls::LEFT, ui_controls::kShift), InSameContext(WaitForPromo( feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch))); } @@ -279,14 +253,14 @@ blink::Manifest::LaunchHandler( blink::mojom::ManifestLaunchHandler_ClientMode::kFocusExisting)); - RunTestSequence(OpenStartPage(), OpenApp(app_id), - ClickLaunchLink(test::ClickMethod::kLeftClick, - kToSiteBTargetBlankNoOpener), - // Switch back to the app browser's context and verify the IPH - // shows there. - InAnyContext(WithElement(kAppPageId, base::DoNothing())), - InSameContext(WaitForPromo( - feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch))); + RunTestSequence( + OpenStartPage(), OpenApp(app_id), + ClickLaunchLink(kToSiteBTargetBlankNoOpener, ui_controls::LEFT), + // Switch back to the app browser's context and verify the IPH + // shows there. + InAnyContext(WithElement(kAppPageId, base::DoNothing())), + InSameContext(WaitForPromo( + feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch))); } IN_PROC_BROWSER_TEST_F(WebAppNavigationCapturingIphUiTest, @@ -296,8 +270,7 @@ RunTestSequence( OpenAppStartPage(app_id_a), - TriggerAppLaunch(test::ClickMethod::kLeftClick, - kToSiteBTargetBlankWithOpener), + TriggerAppLaunch(kToSiteBTargetBlankWithOpener, ui_controls::LEFT), InSameContext(CheckPromoIsActive( feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch, false))); } @@ -308,8 +281,7 @@ RunTestSequence( OpenStartPage(), - TriggerAppLaunch(test::ClickMethod::kLeftClick, - kToSiteBTargetBlankNoOpener), + TriggerAppLaunch(kToSiteBTargetBlankNoOpener, ui_controls::LEFT), InSameContext(Steps( WaitForPromo(feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch), CheckActionCount("LinkCapturingIPHAppBubbleShown", 1), @@ -326,8 +298,7 @@ RunTestSequence( OpenStartPage(), - TriggerAppLaunch(test::ClickMethod::kLeftClick, - kToSiteBTargetBlankNoOpener), + TriggerAppLaunch(kToSiteBTargetBlankNoOpener, ui_controls::LEFT), InSameContext(Steps( WaitForPromo(feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch), CheckActionCount("LinkCapturingIPHAppBubbleShown", 1), @@ -342,8 +313,7 @@ RunTestSequence( OpenStartPage(), - TriggerAppLaunch(test::ClickMethod::kLeftClick, - kToSiteBTargetBlankNoOpener), + TriggerAppLaunch(kToSiteBTargetBlankNoOpener, ui_controls::LEFT), InSameContext(Steps( WaitForPromo(feature_engagement::kIPHDesktopPWAsLinkCapturingLaunch), PressDefaultPromoButton(),
diff --git a/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler.cc b/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler.cc index d1c3474..be2dc4d 100644 --- a/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler.cc +++ b/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler.h" +#include "base/i18n/time_formatting.h" #include "base/metrics/histogram_functions.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/feedback/show_feedback_page.h" @@ -122,6 +123,8 @@ item->relative_time = base::UTF16ToUTF8(ui::TimeFormat::Simple( ui::TimeFormat::FORMAT_ELAPSED, ui::TimeFormat::LENGTH_SHORT, base::Time::Now() - scored_url_row.row.last_visit())); + item->short_date_time = base::UTF16ToUTF8( + base::TimeFormatShortDate(scored_url_row.row.last_visit())); item->last_url_visit_timestamp = scored_url_row.row.last_visit().InMillisecondsFSinceUnixEpoch();
diff --git a/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler_unittest.cc b/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler_unittest.cc index 86823f70..b8bb99a 100644 --- a/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler_unittest.cc +++ b/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler_unittest.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler.h" +#include "base/i18n/time_formatting.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/mock_callback.h" #include "base/test/scoped_feature_list.h" @@ -209,6 +210,9 @@ base::UTF16ToUTF8(ui::TimeFormat::Simple( ui::TimeFormat::FORMAT_ELAPSED, ui::TimeFormat::LENGTH_SHORT, base::Time::Now() - scored_url_row.row.last_visit()))); + EXPECT_EQ(mojo_result->items[0]->short_date_time, + base::UTF16ToUTF8( + base::TimeFormatShortDate(scored_url_row.row.last_visit()))); EXPECT_EQ(mojo_result->items[0]->last_url_visit_timestamp, scored_url_row.row.last_visit().InMillisecondsFSinceUnixEpoch()); EXPECT_EQ(mojo_result->items[0]->url_for_display, "google.com");
diff --git a/chrome/browser/ui/webui/password_manager/password_manager_ui.cc b/chrome/browser/ui/webui/password_manager/password_manager_ui.cc index 5c08590..d63f1dd 100644 --- a/chrome/browser/ui/webui/password_manager/password_manager_ui.cc +++ b/chrome/browser/ui/webui/password_manager/password_manager_ui.cc
@@ -355,6 +355,8 @@ {"passwordManager", IDS_PASSWORD_BUBBLES_PASSWORD_MANAGER_LINK_TEXT_SYNCED_TO_ACCOUNT}, // Header for the page, always "Password Manager". + {"passwordManagerDescription", + IDS_PASSWORD_MANAGER_UI_DESCRIPTION}, {"passwordManagerPinChanged", IDS_PASSWORD_MANAGER_PIN_CHANGED}, {"passwordManagerString", IDS_PASSWORD_MANAGER_UI_TITLE}, // Page title, branded. "Google Password Manager" or "Password Manager"
diff --git a/chrome/browser/ui/webui/search_engine_choice/OWNERS b/chrome/browser/ui/webui/search_engine_choice/OWNERS index 89018e9..c591a23 100644 --- a/chrome/browser/ui/webui/search_engine_choice/OWNERS +++ b/chrome/browser/ui/webui/search_engine_choice/OWNERS
@@ -1,3 +1,3 @@ -file://components/search_engines/search_engine_choice/OWNERS +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/chrome/browser/ui/webui/settings/settings_interactive_uitest.cc b/chrome/browser/ui/webui/settings/settings_interactive_uitest.cc index 53902e5..786a66e 100644 --- a/chrome/browser/ui/webui/settings/settings_interactive_uitest.cc +++ b/chrome/browser/ui/webui/settings/settings_interactive_uitest.cc
@@ -106,15 +106,10 @@ UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::CompletedCallback, completed); UNCALLED_MOCK_CALLBACK(ui::InteractionSequence::AbortedCallback, aborted); - bool is_3pcd = base::FeatureList::IsEnabled( - content_settings::features::kTrackingProtection3pcd); - const std::string cookie_row_selector = - is_3pcd ? "cr-link-row#trackingProtectionLinkRow" - : "cr-link-row#thirdPartyCookiesLinkRow"; const GURL cookie_setting_url("chrome://settings/privacy"); const WebContentsInteractionTestUtil::DeepQuery cookies_link_row = { "settings-ui", "settings-main", "settings-basic-page", - "settings-privacy-page", cookie_row_selector}; + "settings-privacy-page", "cr-link-row#thirdPartyCookiesLinkRow"}; const WebContentsInteractionTestUtil::DeepQuery cookies_setting_page_help_icon = { "settings-ui", @@ -152,14 +147,8 @@ auto* util = element->AsA<TrackedElementWebContents>()->owner(); auto* const contents = util->web_contents(); - if (is_3pcd) { - EXPECT_EQ( - contents->GetURL(), - GURL(chrome::kTrackingProtectionHelpCenterURL)); - } else { - EXPECT_EQ(contents->GetURL(), - chrome::kCookiesSettingsHelpCenterURL); - } + EXPECT_EQ(contents->GetURL(), + chrome::kCookiesSettingsHelpCenterURL); })) .Build()) .Build();
diff --git a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc index 623fc7a..1b92d88 100644 --- a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc +++ b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc
@@ -241,8 +241,9 @@ } void ReadAnythingWebContentsObserver::AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) { - page_handler_->AccessibilityLocationChangesReceived(details); + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) { + page_handler_->AccessibilityLocationChangesReceived(tree_id, details); } void ReadAnythingWebContentsObserver::PrimaryPageChanged(content::Page& page) { @@ -390,9 +391,10 @@ } void ReadAnythingUntrustedPageHandler::AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) { + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) { if (features::IsReadAnythingDocsIntegrationEnabled()) { - page_->AccessibilityLocationChangesReceived(details); + page_->AccessibilityLocationChangesReceived(tree_id, details); } }
diff --git a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.h b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.h index 24968ac..abbf48be 100644 --- a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.h +++ b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.h
@@ -57,7 +57,8 @@ void AccessibilityEventReceived( const ui::AXUpdatesAndEvents& details) override; void AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) override; + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) override; void PrimaryPageChanged(content::Page& page) override; void WebContentsDestroyed() override; @@ -102,7 +103,8 @@ void AccessibilityEventReceived(const ui::AXUpdatesAndEvents& details); void AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details); + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details); void PrimaryPageChanged(); void WebContentsDestroyed();
diff --git a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler_unittest.cc b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler_unittest.cc index c18fff7..b45f4255 100644 --- a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler_unittest.cc +++ b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler_unittest.cc
@@ -26,7 +26,6 @@ #include "ui/accessibility/ax_node_id_forward.h" #include "ui/accessibility/ax_tree_id.h" #include "ui/accessibility/mojom/ax_event.mojom.h" -#include "ui/accessibility/mojom/ax_location_changes.mojom.h" #include "ui/accessibility/mojom/ax_tree_id.mojom.h" #include "ui/accessibility/mojom/ax_tree_update.mojom.h" #include "ui/gfx/geometry/size.h" @@ -51,7 +50,12 @@ const std::vector<ui::AXEvent>& events)); MOCK_METHOD(void, AccessibilityLocationChangesReceived, - (const std::vector<ui::AXLocationChanges>& details)); + (const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details)); + MOCK_METHOD(void, + AccessibilityLocationChangesReceived, + (const ui::AXTreeID& tree_id, + const ui::AXLocationAndScrollUpdates& details)); MOCK_METHOD(void, OnSettingsRestoredFromPrefs, (read_anything::mojom::LineSpacing line_spacing,
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 768145d..a2bc247 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1727791183-18ebb677bfded080d4fbccf41c258d8f5b869cce-5c8b1389ff74057dc8513e6687b93c9019d4a496.profdata +chrome-mac-arm-main-1727805595-7e9a010c1d8e5cb05c53975b96ca20fa6c385199-bdb53115de59bca1fe7e29f68cb950f5b1280da2.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index c7b36b7..5a4b2b4 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1727773147-71e35f3eeb906599fea4b886352dcd4a11b1a762-a163f2d7227da4a5b9792888bd14304ff72ce6f2.profdata +chrome-win64-main-1727783961-fa1fbfa59af5e894dd8c60c24877d4aaf771b088-f7bc99221b34f0a43ca97da3ec7dcc2ae2e90c0c.profdata
diff --git a/chrome/common/accessibility/read_anything.mojom b/chrome/common/accessibility/read_anything.mojom index 080c697..cf38aa56 100644 --- a/chrome/common/accessibility/read_anything.mojom +++ b/chrome/common/accessibility/read_anything.mojom
@@ -11,7 +11,7 @@ import "skia/public/mojom/bitmap.mojom"; import "ui/accessibility/ax_features.mojom"; import "ui/accessibility/mojom/ax_event.mojom"; -import "ui/accessibility/mojom/ax_location_changes.mojom"; +import "ui/accessibility/mojom/ax_location_and_scroll_updates.mojom"; import "ui/accessibility/mojom/ax_tree_id.mojom"; import "ui/accessibility/mojom/ax_tree_update.mojom"; import "mojo/public/mojom/base/values.mojom"; @@ -226,7 +226,9 @@ // Send a location change notification to the WebUI. The WebUI updates the // locations for each node in the vector. This does not trigger a distillation. [RuntimeFeature=ax.mojom.features.kReadAnythingDocsIntegration] - AccessibilityLocationChangesReceived(array<ax.mojom.AXLocationChanges> details); + AccessibilityLocationChangesReceived( + ax.mojom.AXTreeID tree_id, + ax.mojom.AXLocationAndScrollUpdates details); // Sends the active AXTreeID to the WebUI. This is not guaranteed to be called // after the tree_id was previously passed to AccessibilityEventsReceived.
diff --git a/chrome/enterprise_companion/enterprise_companion_client.cc b/chrome/enterprise_companion/enterprise_companion_client.cc index bf8d438..2b4cc72 100644 --- a/chrome/enterprise_companion/enterprise_companion_client.cc +++ b/chrome/enterprise_companion/enterprise_companion_client.cc
@@ -96,6 +96,7 @@ VLOG(1) << "Failed to connect to EnterpriseCompanionService remote. " "The service could not be launched."; std::move(callback).Run({}); + return; } mojo::PlatformChannelEndpoint endpoint =
diff --git a/chrome/renderer/accessibility/read_anything_app_controller.cc b/chrome/renderer/accessibility/read_anything_app_controller.cc index 6992db7..8154fbb 100644 --- a/chrome/renderer/accessibility/read_anything_app_controller.cc +++ b/chrome/renderer/accessibility/read_anything_app_controller.cc
@@ -47,6 +47,7 @@ #include "third_party/skia/include/core/SkImageInfo.h" #include "ui/accessibility/accessibility_features.h" #include "ui/accessibility/ax_enums.mojom-shared.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_node.h" #include "ui/accessibility/ax_node_id_forward.h" #include "ui/accessibility/ax_role_properties.h" @@ -523,10 +524,18 @@ } void ReadAnythingAppController::AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) { + const ui::AXTreeID& tree_id, + const ui::AXLocationAndScrollUpdates& details) { + NOTREACHED() << "Non-const ref version of this method should be used as a " + "performance optimization."; +} + +void ReadAnythingAppController::AccessibilityLocationChangesReceived( + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) { // Listen to location change notifications to update locations of the nodes // accordingly. - for (auto& change : details) { + for (auto& change : details.location_changes) { ui::AXNode* ax_node = model_.GetAXNode(change.id); if (!ax_node) { continue;
diff --git a/chrome/renderer/accessibility/read_anything_app_controller.h b/chrome/renderer/accessibility/read_anything_app_controller.h index 974648b..b6f9fad 100644 --- a/chrome/renderer/accessibility/read_anything_app_controller.h +++ b/chrome/renderer/accessibility/read_anything_app_controller.h
@@ -25,6 +25,7 @@ #include "services/metrics/public/cpp/ukm_source_id.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkColor.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_node_id_forward.h" #include "ui/accessibility/ax_node_position.h" #include "ui/accessibility/ax_position.h" @@ -121,7 +122,11 @@ const std::vector<ui::AXTreeUpdate>& updates, const std::vector<ui::AXEvent>& events) override; void AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) override; + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) override; + void AccessibilityLocationChangesReceived( + const ui::AXTreeID& tree_id, + const ui::AXLocationAndScrollUpdates& details) override; void OnActiveAXTreeIDChanged(const ui::AXTreeID& tree_id, ukm::SourceId ukm_source_id, bool is_pdf) override;
diff --git a/chrome/renderer/accessibility/read_anything_app_controller_browsertest.cc b/chrome/renderer/accessibility/read_anything_app_controller_browsertest.cc index 414e831..ac37ac2 100644 --- a/chrome/renderer/accessibility/read_anything_app_controller_browsertest.cc +++ b/chrome/renderer/accessibility/read_anything_app_controller_browsertest.cc
@@ -24,6 +24,7 @@ #include "services/strings/grit/services_strings.h" #include "testing/gmock/include/gmock/gmock.h" #include "ui/accessibility/accessibility_features.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_node.h" #include "ui/accessibility/ax_node_id_forward.h" #include "ui/accessibility/ax_serializable_tree.h" @@ -292,8 +293,9 @@ } void AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) { - controller_->AccessibilityLocationChangesReceived(details); + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) { + controller_->AccessibilityLocationChangesReceived(tree_id, details); } // Since a11y events happen asynchronously, they can come between the time @@ -1732,13 +1734,11 @@ ui::AXRelativeBounds location_update; location_update.offset_container_id = 1; location_update.bounds = gfx::RectF(5, 5, 100, 100); - ui::AXLocationChanges location_changes; - location_changes.id = 2; - location_changes.ax_tree_id = id_1; - location_changes.new_location = location_update; + ui::AXLocationAndScrollUpdates location_and_scroll_updates; + location_and_scroll_updates.location_changes.emplace_back(2, location_update); // Test that the node data updates correctly - AccessibilityLocationChangesReceived({location_changes}); + AccessibilityLocationChangesReceived(id_1, location_and_scroll_updates); node = GetNodeData(2); EXPECT_EQ(node.relative_bounds, location_update); }
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeBrowserTestRule.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeBrowserTestRule.java index 1416c84..443786b 100644 --- a/chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeBrowserTestRule.java +++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeBrowserTestRule.java
@@ -25,10 +25,8 @@ new Statement() { @Override public void evaluate() throws Throwable { - /** - * Loads the native library on the activity UI thread. After loading the library, - * this will initialize the browser process if necessary. - */ + // Loads the native library on the activity UI thread. After loading the + // library, this will initialize the browser process if necessary. NativeLibraryTestUtils.loadNativeLibraryAndInitBrowserProcess(); base.evaluate(); }
diff --git a/chrome/test/base/chrome_unit_test_suite.cc b/chrome/test/base/chrome_unit_test_suite.cc index 0ea9af3a..fb961c4 100644 --- a/chrome/test/base/chrome_unit_test_suite.cc +++ b/chrome/test/base/chrome_unit_test_suite.cc
@@ -52,8 +52,11 @@ #include "components/web_package/signed_web_bundles/signed_web_bundle_id.h" #endif // !BUILDFLAG(IS_ANDROID) -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) #include "chrome/common/initialize_extensions_client.h" +#endif + +#if BUILDFLAG(ENABLE_EXTENSIONS) #include "extensions/common/extension_paths.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS) @@ -176,7 +179,9 @@ #if BUILDFLAG(ENABLE_EXTENSIONS) extensions::RegisterPathProvider(); +#endif +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) EnsureExtensionsClientInitialized(); #endif
diff --git a/chrome/test/base/testing_browser_process.cc b/chrome/test/base/testing_browser_process.cc index 1f214167..1778d1bc 100644 --- a/chrome/test/base/testing_browser_process.cc +++ b/chrome/test/base/testing_browser_process.cc
@@ -68,6 +68,10 @@ #include "components/storage_monitor/test_storage_monitor.h" #endif +#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS) +#include "chrome/browser/extensions/desktop_android/desktop_android_extensions_browser_client.h" +#endif + #if BUILDFLAG(ENABLE_PRINT_PREVIEW) #include "chrome/browser/printing/background_printing_manager.h" #include "chrome/browser/printing/print_preview_dialog_controller.h" @@ -175,7 +179,11 @@ test_network_connection_tracker_.get()); } -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS) + extensions_browser_client_ = + std::make_unique<extensions::DesktopAndroidExtensionsBrowserClient>(); + extensions::ExtensionsBrowserClient::Set(extensions_browser_client_.get()); +#elif BUILDFLAG(ENABLE_EXTENSIONS) extensions_browser_client_ = std::make_unique<extensions::ChromeExtensionsBrowserClient>(); extensions_browser_client_->AddAPIProvider(
diff --git a/chrome/test/base/testing_browser_process.h b/chrome/test/base/testing_browser_process.h index 8ef74cb..617e441 100644 --- a/chrome/test/base/testing_browser_process.h +++ b/chrome/test/base/testing_browser_process.h
@@ -267,7 +267,9 @@ #if BUILDFLAG(ENABLE_EXTENSIONS) std::unique_ptr<MediaFileSystemRegistry> media_file_system_registry_; +#endif +#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) std::unique_ptr<extensions::ExtensionsBrowserClient> extensions_browser_client_; #endif
diff --git a/chrome/test/data/click.html b/chrome/test/data/click.html new file mode 100644 index 0000000..ab726b0 --- /dev/null +++ b/chrome/test/data/click.html
@@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html> +<body> +<button id="button">Button</button> +<script> +const button = document.getElementById('button'); +button.addEventListener('click', function(event) { + button.lastClickEvent = event; +}); +</script> +</body> +</html>
diff --git a/chrome/test/data/webui/commerce/product_specifications/loading_state_test.ts b/chrome/test/data/webui/commerce/product_specifications/loading_state_test.ts index de7c847..4053a91 100644 --- a/chrome/test/data/webui/commerce/product_specifications/loading_state_test.ts +++ b/chrome/test/data/webui/commerce/product_specifications/loading_state_test.ts
@@ -17,6 +17,19 @@ document.body.appendChild(loadingElement); }); + function resizeContainer(width: number): Promise<void> { + // A ResizeObserver is used to ensure the ResizeObserver callback that shows + // the last column gradient has completed. + return new Promise<void>(resolve => { + const observer = new ResizeObserver(() => { + resolve(); + observer.unobserve(loadingElement.$.loadingContainer); + }); + observer.observe(loadingElement.$.loadingContainer); + loadingElement.$.loadingContainer.style.width = `${width}px`; + }); + } + test( 'last column gradient appears when SVG is wider than its container', async () => { @@ -31,7 +44,7 @@ // Container should be smaller than the loading gradient, so the last // column gradient should appear. - document.body.style.width = '200px'; + await resizeContainer(200); await microtasksFinished(); assertTrue(isVisible(lastColumnGradient)); });
diff --git a/chrome/test/data/webui/cr_components/history_embeddings/history_embeddings_test.ts b/chrome/test/data/webui/cr_components/history_embeddings/history_embeddings_test.ts index 6f0775a7..fe5a6f0 100644 --- a/chrome/test/data/webui/cr_components/history_embeddings/history_embeddings_test.ts +++ b/chrome/test/data/webui/cr_components/history_embeddings/history_embeddings_test.ts
@@ -29,6 +29,7 @@ url: {url: 'http://google.com'}, urlForDisplay: 'google.com', relativeTime: '2 hours ago', + shortDateTime: 'Sept 2, 2022', sourcePassage: 'Google description', lastUrlVisitTimestamp: 1000, answerData: null, @@ -38,6 +39,7 @@ url: {url: 'http://youtube.com'}, urlForDisplay: 'youtube.com', relativeTime: '4 hours ago', + shortDateTime: 'Sept 2, 2022', sourcePassage: 'Youtube description', lastUrlVisitTimestamp: 2000, answerData: null, @@ -464,6 +466,7 @@ url: {url: 'http://answer.com'}, urlForDisplay: 'Answer.com', relativeTime: '2 months ago', + shortDateTime: 'Sept 2, 2022', sourcePassage: 'Answer description', lastUrlVisitTimestamp: 2000, answerData: {answerTextDirectives: []}, @@ -482,9 +485,11 @@ assertTrue(!!answerSource); assertFalse(answerSource.hidden); assertEquals('http://answer.com', answerSource.getAttribute('href')); - assertEquals( - 'Answer.com', - answerSource.querySelector<HTMLElement>('.result-url')!.innerText); + + const answerUrlAndDate = + answerSource.querySelector<HTMLElement>('.result-url')!.innerText; + assertTrue(answerUrlAndDate.startsWith('Answer.com')); + assertTrue(answerUrlAndDate.endsWith('Sept 2, 2022')); assertEquals( getFaviconForPageURL('http://answer.com', true), answerSource.querySelector<HTMLElement>(
diff --git a/chrome/test/data/webui/side_panel/customize_chrome/categories_test.ts b/chrome/test/data/webui/side_panel/customize_chrome/categories_test.ts index 1468442..3073bb1 100644 --- a/chrome/test/data/webui/side_panel/customize_chrome/categories_test.ts +++ b/chrome/test/data/webui/side_panel/customize_chrome/categories_test.ts
@@ -6,7 +6,7 @@ import type {CategoriesElement} from 'chrome://customize-chrome-side-panel.top-chrome/categories.js'; import {CHANGE_CHROME_THEME_CLASSIC_ELEMENT_ID, CHROME_THEME_COLLECTION_ELEMENT_ID} from 'chrome://customize-chrome-side-panel.top-chrome/categories.js'; -import {CustomizeChromeAction} from 'chrome://customize-chrome-side-panel.top-chrome/common.js'; +import {CustomizeChromeAction, NtpImageType} from 'chrome://customize-chrome-side-panel.top-chrome/common.js'; import type {BackgroundCollection, CustomizeChromePageRemote} from 'chrome://customize-chrome-side-panel.top-chrome/customize_chrome.mojom-webui.js'; import {CustomizeChromePageCallbackRouter, CustomizeChromePageHandlerRemote} from 'chrome://customize-chrome-side-panel.top-chrome/customize_chrome.mojom-webui.js'; import {CustomizeChromeApiProxy} from 'chrome://customize-chrome-side-panel.top-chrome/customize_chrome_api_proxy.js'; @@ -21,6 +21,11 @@ import {$$, createBackgroundImage, createTheme, installMock} from './test_support.js'; +interface CollectionOptions { + numCollections: number; + shouldReplaceBrokenImages?: boolean; +} + function createTestCollections(length: number): BackgroundCollection[] { const testCollections: BackgroundCollection[] = []; for (let i = 1; i < length + 1; i++) { @@ -41,16 +46,21 @@ let callbackRouterRemote: CustomizeChromePageRemote; let metrics: MetricsTracker; - async function setInitialSettings(numCollections: number) { + async function setInitialSettings( + {numCollections, shouldReplaceBrokenImages = false}: CollectionOptions) { handler.setResultFor('getBackgroundCollections', Promise.resolve({ collections: createTestCollections(numCollections), })); if (loadTimeData.getBoolean('imageErrorDetectionEnabled')) { handler.setResultMapperFor( 'getReplacementCollectionPreviewImage', (collectionId: string) => { - return Promise.resolve({ - previewImageUrl: {url: `https://replaced-${collectionId}.jpg`}, - }); + if (shouldReplaceBrokenImages) { + return Promise.resolve({ + previewImageUrl: {url: `https://replaced-${collectionId}.jpg`}, + }); + } else { + return Promise.resolve(null); + } }); } categoriesElement = document.createElement('customize-chrome-categories'); @@ -73,7 +83,7 @@ test('hide collection elements when collections empty', async () => { const numCollections = 0; - await setInitialSettings(numCollections); + await setInitialSettings({numCollections: numCollections}); const collections = categoriesElement.shadowRoot!.querySelectorAll('.collection'); @@ -90,8 +100,7 @@ test('collection visibility based on error detection', async () => { const numCollections = 2; - await setInitialSettings(numCollections); - await microtasksFinished(); + await setInitialSettings({numCollections: numCollections}); const collections = categoriesElement.shadowRoot!.querySelectorAll('.collection'); @@ -114,7 +123,8 @@ test('collection image src based on error detection', async () => { const numCollections = 2; - await setInitialSettings(numCollections); + await setInitialSettings( + {numCollections: numCollections, shouldReplaceBrokenImages: true}); const images = categoriesElement.shadowRoot!.querySelectorAll<CrAutoImgElement>( @@ -128,6 +138,10 @@ if (!errorDetectionEnabled) { assertEquals('https://collection-1.jpg', images[0]!.autoSrc); assertEquals('https://collection-2.jpg', images[1]!.autoSrc); + assertEquals( + 0, + metrics.count( + 'NewTabPage.BackgroundService.Images.Headers.ErrorDetected')); } else { assertEquals('https://replaced-1.jpg', images[0]!.autoSrc); assertEquals('https://replaced-2.jpg', images[1]!.autoSrc); @@ -135,17 +149,16 @@ }); test('collections surface if their images load', async () => { - await setInitialSettings(1); + await setInitialSettings({numCollections: 1}); await microtasksFinished(); const collection = $$(categoriesElement, '.collection'); assertTrue(!!collection); - const img1 = collection!.querySelector<CrAutoImgElement>('img'); - assertTrue(!!img1); - if (errorDetectionEnabled) { assertFalse(isVisible(collection)); } + const img1 = collection!.querySelector<CrAutoImgElement>('img'); + assertTrue(!!img1); img1.dispatchEvent(new Event('load')); await microtasksFinished(); @@ -155,13 +168,44 @@ metrics.count( 'NewTabPage.Images.ShownTime.CollectionPreviewImage')); }); + + test('error detection metrics fire correctly', async () => { + const numCollections = 2; + await setInitialSettings({numCollections: 2}); + + const images = + categoriesElement.shadowRoot!.querySelectorAll<CrAutoImgElement>( + '.collection img'); + assertEquals(numCollections, images.length); + const img1Error = eventToPromise('error', images[0]!); + const img2Error = eventToPromise('error', images[1]!); + await Promise.all([img1Error, img2Error]); + await microtasksFinished(); + + if (!errorDetectionEnabled) { + assertEquals( + 0, + metrics.count( + 'NewTabPage.BackgroundService.Images.Headers.ErrorDetected')); + } else { + assertEquals( + 2, + metrics.count( + 'NewTabPage.BackgroundService.Images.Headers.ErrorDetected')); + assertEquals( + 2, + metrics.count( + 'NewTabPage.BackgroundService.Images.Headers.ErrorDetected', + NtpImageType.COLLECTIONS)); + } + }); }); }); test('collection preview images create metrics when loaded', async () => { const startTime = 123.45; windowProxy.setResultFor('now', startTime); - await setInitialSettings(1); + await setInitialSettings({numCollections: 1}); assertEquals(1, windowProxy.getCallCount('now')); const imageLoadTime = 678.90; windowProxy.setResultFor('now', imageLoadTime); @@ -180,7 +224,7 @@ }); test('clicking collection sends event', async () => { - await setInitialSettings(1); + await setInitialSettings({numCollections: 1}); const eventPromise = eventToPromise('collection-select', categoriesElement); const category = @@ -193,7 +237,7 @@ }); test('back button creates event', async () => { - await setInitialSettings(0); + await setInitialSettings({numCollections: 0}); const eventPromise = eventToPromise('back-click', categoriesElement); categoriesElement.$.heading.getBackButton().click(); const event = await eventPromise; @@ -201,7 +245,7 @@ }); test('clicking classic chrome sets theme', async () => { - await setInitialSettings(0); + await setInitialSettings({numCollections: 0}); categoriesElement.$.classicChromeTile.click(); assertEquals(1, handler.getCallCount('removeBackgroundImage')); assertEquals(1, handler.getCallCount('setDefaultColor')); @@ -214,7 +258,7 @@ loadTimeData.overrideValues({ updatedToUploadedImage: 'Theme updated to uploaded image', }); - await setInitialSettings(0); + await setInitialSettings({numCollections: 0}); handler.setResultFor('chooseLocalCustomBackground', Promise.resolve({ success: true, })); @@ -239,14 +283,14 @@ }); test('clicking Chrome Web Store tile opens Chrome Web Store', async () => { - await setInitialSettings(0); + await setInitialSettings({numCollections: 0}); categoriesElement.$.chromeWebStoreTile.click(); assertEquals(1, handler.getCallCount('openChromeWebStore')); }); test('checks selected category', async () => { - await setInitialSettings(2); + await setInitialSettings({numCollections: 2}); // Set an empty theme with no color and no background. const theme = createTheme(); @@ -314,7 +358,7 @@ }); test('help bubble can correctly find anchor elements', async () => { - await setInitialSettings(5); + await setInitialSettings({numCollections: 5}); assertDeepEquals( categoriesElement.getSortedAnchorStatusesForTesting(), [ @@ -325,7 +369,7 @@ }); test('classic chrome tile shows correct image', async () => { - await setInitialSettings(0); + await setInitialSettings({numCollections: 0}); assertEquals( $$<HTMLImageElement>( @@ -346,7 +390,7 @@ test( `wallpaper search does ${flagEnabled ? '' : 'not '}show`, async () => { - await setInitialSettings(0); + await setInitialSettings({numCollections: 0}); assertEquals( !!categoriesElement.shadowRoot!.querySelector( '#wallpaperSearchTile'), @@ -354,7 +398,7 @@ }); test('check category for wallpaper search background', async () => { - await setInitialSettings(1); + await setInitialSettings({numCollections: 1}); // Set a theme with wallpaper search background. const theme = createTheme(); @@ -392,7 +436,7 @@ }); test('choosing collection sets metric', async () => { - await setInitialSettings(1); + await setInitialSettings({numCollections: 1}); const tile = categoriesElement.shadowRoot!.querySelector('.collection'); assertTrue(!!tile); @@ -409,7 +453,7 @@ }); test('choosing default chrome sets metric', async () => { - await setInitialSettings(0); + await setInitialSettings({numCollections: 0}); categoriesElement.$.classicChromeTile.click(); @@ -423,7 +467,7 @@ }); test('choosing wallpaper search sets metric', async () => { - await setInitialSettings(0); + await setInitialSettings({numCollections: 0}); const tile = categoriesElement.shadowRoot!.querySelector('#wallpaperSearchTile'); @@ -440,7 +484,7 @@ }); test('choosing upload sets metric', async () => { - await setInitialSettings(0); + await setInitialSettings({numCollections: 0}); categoriesElement.$.uploadImageTile.click();
diff --git a/chrome/test/data/webui/side_panel/customize_chrome/themes_test.ts b/chrome/test/data/webui/side_panel/customize_chrome/themes_test.ts index 2482f8c..8e9eba6 100644 --- a/chrome/test/data/webui/side_panel/customize_chrome/themes_test.ts +++ b/chrome/test/data/webui/side_panel/customize_chrome/themes_test.ts
@@ -4,7 +4,7 @@ import 'chrome://customize-chrome-side-panel.top-chrome/themes.js'; -import {CustomizeChromeAction} from 'chrome://customize-chrome-side-panel.top-chrome/common.js'; +import {CustomizeChromeAction, NtpImageType} from 'chrome://customize-chrome-side-panel.top-chrome/common.js'; import type {BackgroundCollection, CollectionImage, CustomizeChromePageRemote} from 'chrome://customize-chrome-side-panel.top-chrome/customize_chrome.mojom-webui.js'; import {CustomizeChromePageCallbackRouter, CustomizeChromePageHandlerRemote} from 'chrome://customize-chrome-side-panel.top-chrome/customize_chrome.mojom-webui.js'; import {CustomizeChromeApiProxy} from 'chrome://customize-chrome-side-panel.top-chrome/customize_chrome_api_proxy.js'; @@ -98,13 +98,13 @@ }); test('get collection images when collection changes', async () => { - let numThemes = 3; - await setCollection('test1', numThemes); + let numImages = 3; + await setCollection('test1', numImages); let header = themesElement.$.heading; assertEquals('test1', header.textContent!.trim()); let themes = themesElement.shadowRoot!.querySelectorAll('.theme'); - assertEquals(themes.length, numThemes); + assertEquals(themes.length, numImages); assertEquals( 'https://preview_1.jpg', themes[0]!.querySelector('img')!.getAttribute('auto-src')); @@ -115,13 +115,13 @@ 'https://preview_3.jpg', themes[2]!.querySelector('img')!.getAttribute('auto-src')); - numThemes = 5; - await setCollection('test2', numThemes); + numImages = 5; + await setCollection('test2', numImages); header = themesElement.$.heading; assertEquals('test2', header.textContent!.trim()); themes = themesElement.shadowRoot!.querySelectorAll('.theme'); - assertEquals(themes.length, numThemes); + assertEquals(themes.length, numImages); assertEquals( 'https://preview_1.jpg', themes[0]!.querySelector('img')!.getAttribute('auto-src')); @@ -350,11 +350,11 @@ }); test('theme visibility based on error detection', async () => { - const numThemes = 2; - await setCollection('test1', numThemes); + const numImages = 2; + await setCollection('test1', numImages); const themes = themesElement.shadowRoot!.querySelectorAll('.theme'); - assertEquals(numThemes, themes.length); + assertEquals(numImages, themes.length); if (!errorDetectionEnabled) { assertTrue(isVisible(themes[0]!)); assertTrue(isVisible(themes[1]!)); @@ -369,17 +369,43 @@ const theme = $$(themesElement, '.theme'); assertTrue(!!theme); - const img1 = theme!.querySelector<CrAutoImgElement>('img'); - assertTrue(!!img1); + const img = theme!.querySelector<CrAutoImgElement>('img'); + assertTrue(!!img); if (errorDetectionEnabled) { assertFalse(isVisible(theme)); } - img1.dispatchEvent(new Event('load')); + img.dispatchEvent(new Event('load')); + await microtasksFinished(); + + assertTrue(isVisible(theme)); + }); + + test('error detection metrics fire correctly', async () => { + const numImages = 1; + await setCollection('test1', numImages); + const img = $$(themesElement, '.theme img'); + assertTrue(!!img); await microtasksFinished(); - assertTrue(isVisible(theme)); + + if (!errorDetectionEnabled) { + assertEquals( + 0, + metrics.count( + 'NewTabPage.BackgroundService.Images.Headers.ErrorDetected')); + } else { + assertEquals( + numImages, + metrics.count( + 'NewTabPage.BackgroundService.Images.Headers.ErrorDetected')); + assertEquals( + numImages, + metrics.count( + 'NewTabPage.BackgroundService.Images.Headers.ErrorDetected', + NtpImageType.BACKGROUND_IMAGE)); + } }); }); });
diff --git a/chrome/test/interaction/README.md b/chrome/test/interaction/README.md index 77b1f5be..5ac3db9 100644 --- a/chrome/test/interaction/README.md +++ b/chrome/test/interaction/README.md
@@ -146,6 +146,8 @@ - `ScrollIntoView()` [Views, Browser] - Recommended before doing anything that needs the screen coordinates of a UI or DOM element that is in a scrollable container. + - `ClickElement()` [Browser] + - For use with instrumented webcontents; see below. - **Mouse** verbs simulate mouse input to the entire application, and are therefore only reliable in test fixtures that run as exclusive processes (e.g. interactive_browser_tests). Examples include:
diff --git a/chrome/test/interaction/interactive_browser_test.cc b/chrome/test/interaction/interactive_browser_test.cc index cc310100..6ae3aeb 100644 --- a/chrome/test/interaction/interactive_browser_test.cc +++ b/chrome/test/interaction/interactive_browser_test.cc
@@ -40,6 +40,7 @@ #include "ui/base/interaction/interaction_sequence.h" #include "ui/base/interaction/interaction_test_util.h" #include "ui/base/interaction/interactive_test_internal.h" +#include "ui/base/test/ui_controls.h" #include "ui/views/controls/webview/webview.h" #include "ui/views/interaction/interaction_test_util_views.h" #include "ui/views/interaction/interactive_views_test.h" @@ -762,6 +763,70 @@ .SetDescription("ScrollIntoView()")); } +ui::InteractionSequence::StepBuilder InteractiveBrowserTestApi::ClickElement( + ui::ElementIdentifier web_contents, + const DeepQuery& where, + ui_controls::MouseButton button, + ui_controls::AcceleratorState modifiers) { + int js_button; + switch (button) { + case ui_controls::LEFT: + js_button = 0; + break; + case ui_controls::MIDDLE: + js_button = 1; + break; + case ui_controls::RIGHT: + js_button = 2; + break; + } + + const bool shift = modifiers & ui_controls::AcceleratorState::kShift; + const bool alt = modifiers & ui_controls::AcceleratorState::kAlt; + const bool ctrl = modifiers & ui_controls::AcceleratorState::kControl; + const bool meta = modifiers & ui_controls::AcceleratorState::kCommand; + + auto b2s = [](bool b) { return b ? "true" : "false"; }; + + const std::string command = base::StringPrintf( + R"( + function(el) { + const rect = el.getBoundingClientRect(); + const left = Math.max(0, rect.x); + const top = Math.max(0, rect.y); + const right = Math.min(rect.x + rect.width, window.innerWidth); + const bottom = Math.min(rect.y + rect.height, window.innerHeight); + if (right <= left || bottom <= top) { + throw new Error( + 'Target element is zero size or ' + + 'has empty intersection with the viewport.'); + } + const x = (left + right) / 2; + const y = (top + bottom) / 2; + + const event = new MouseEvent( + 'click', + { + bubbles: true, + cancelable: true, + clientX: x, + clientY: y, + button: %d, + shiftKey: %s, + altKey: %s, + ctrlKey: %s, + metaKey: %s + } + ); + el.dispatchEvent(event); + } + )", + js_button, b2s(shift), b2s(alt), b2s(ctrl), b2s(meta)); + + return std::move(ExecuteJsAt(web_contents, where, command) + .SetDescription("ClickElement()")); +} + // static InteractiveBrowserTestApi::RelativePositionCallback InteractiveBrowserTestApi::DeepQueryToRelativePosition(const DeepQuery& query) {
diff --git a/chrome/test/interaction/interactive_browser_test.h b/chrome/test/interaction/interactive_browser_test.h index 360e034..75c1eba7 100644 --- a/chrome/test/interaction/interactive_browser_test.h +++ b/chrome/test/interaction/interactive_browser_test.h
@@ -358,6 +358,22 @@ [[nodiscard]] StepBuilder ScrollIntoView(ui::ElementIdentifier web_contents, const DeepQuery& where); + // Simulates clicking on an HTML element by injecting the click event directly + // into the DOM. You can specify the mouse button and additional modifier + // keys (default is left-click, no modifiers). + // + // Normally, clicking with buttons other than the left mouse button generates + // an auxclick event rather than a click event. However, injecting auxclick + // does not e.g. trigger navigation when clicking a link, so in all these + // cases, vanilla click events are sent, which should be handled normally for + // backwards-compatibility reasons. + [[nodiscard]] StepBuilder ClickElement( + ui::ElementIdentifier web_contents, + const DeepQuery& where, + ui_controls::MouseButton button = ui_controls::LEFT, + ui_controls::AcceleratorState modifiers = + ui_controls::AcceleratorState::kNoAccelerator); + protected: explicit InteractiveBrowserTestApi( std::unique_ptr<internal::InteractiveBrowserTestPrivate>
diff --git a/chrome/test/interaction/interactive_browser_test_browsertest.cc b/chrome/test/interaction/interactive_browser_test_browsertest.cc index 669177d..9e32acd8 100644 --- a/chrome/test/interaction/interactive_browser_test_browsertest.cc +++ b/chrome/test/interaction/interactive_browser_test_browsertest.cc
@@ -4,6 +4,9 @@ #include "chrome/test/interaction/interactive_browser_test.h" +#include <sstream> +#include <tuple> + #include "base/command_line.h" #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" @@ -19,6 +22,7 @@ #include "ui/base/interaction/expect_call_in_scope.h" #include "ui/base/interaction/interaction_sequence.h" #include "ui/base/mojom/ui_base_types.mojom-shared.h" +#include "ui/base/test/ui_controls.h" #include "ui/base/ui_base_types.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/native_widget_types.h" @@ -30,6 +34,7 @@ DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kWebContentsId); constexpr char kDocumentWithNamedElement[] = "/select.html"; constexpr char kDocumentWithLinks[] = "/links.html"; +constexpr char kDocumentWithClickDetection[] = "/click.html"; constexpr char kScrollableDocument[] = "/scroll/scrollable_page_with_content.html"; } // namespace @@ -561,6 +566,99 @@ WaitForStateChange(kTabId, state_change))); } +using ClickElementParams = + std::tuple<ui_controls::MouseButton, ui_controls::AcceleratorState>; + +class InteractiveBrowserTestClickElementTest + : public InteractiveBrowserTestBrowsertest, + public testing::WithParamInterface<ClickElementParams> { + public: + InteractiveBrowserTestClickElementTest() = default; + ~InteractiveBrowserTestClickElementTest() override = default; +}; + +INSTANTIATE_TEST_SUITE_P( + , + InteractiveBrowserTestClickElementTest, + testing::Combine( + testing::Values(ui_controls::LEFT, + ui_controls::MIDDLE, + ui_controls::RIGHT), + testing::Values(ui_controls::AcceleratorState::kNoAccelerator, + ui_controls::AcceleratorState::kShift, + ui_controls::AcceleratorState::kControl, + ui_controls::AcceleratorState::kAlt, + ui_controls::AcceleratorState::kCommand, + static_cast<ui_controls::AcceleratorState>( + ui_controls::AcceleratorState::kAlt | + ui_controls::AcceleratorState::kShift), + static_cast<ui_controls::AcceleratorState>( + ui_controls::AcceleratorState::kControl | + ui_controls::AcceleratorState::kCommand | + ui_controls::AcceleratorState::kAlt | + ui_controls::AcceleratorState::kShift))), + [](const testing::TestParamInfo<ClickElementParams>& params) { + std::ostringstream oss; + switch (std::get<0>(params.param)) { + case ui_controls::LEFT: + oss << "Left"; + break; + case ui_controls::MIDDLE: + oss << "Middle"; + break; + case ui_controls::RIGHT: + oss << "Right"; + break; + } + const auto accel = std::get<1>(params.param); + if (accel & ui_controls::AcceleratorState::kControl) { + oss << "_Control"; + } + if (accel & ui_controls::AcceleratorState::kAlt) { + oss << "_Alt"; + } + if (accel & ui_controls::AcceleratorState::kShift) { + oss << "_Shift"; + } + if (accel & ui_controls::AcceleratorState::kCommand) { + oss << "_Meta"; + } + return oss.str(); + }); + +IN_PROC_BROWSER_TEST_P(InteractiveBrowserTestClickElementTest, ClickElement) { + const GURL url = embedded_test_server()->GetURL(kDocumentWithClickDetection); + const auto mouse_button = std::get<0>(GetParam()); + const auto modifier = std::get<1>(GetParam()); + const DeepQuery kButton = {"#button"}; + RunTestSequence( + InstrumentTab(kWebContentsId), NavigateWebContents(kWebContentsId, url), + ClickElement(kWebContentsId, kButton, mouse_button, modifier), + CheckJsResultAt(kWebContentsId, kButton, "el => el.lastClickEvent.button", + static_cast<int>(mouse_button)), + CheckJsResultAt(kWebContentsId, kButton, "el => el.lastClickEvent.altKey", + (modifier & ui_controls::AcceleratorState::kAlt) != 0), + CheckJsResultAt(kWebContentsId, kButton, + "el => el.lastClickEvent.shiftKey", + (modifier & ui_controls::AcceleratorState::kShift) != 0), + CheckJsResultAt( + kWebContentsId, kButton, "el => el.lastClickEvent.ctrlKey", + (modifier & ui_controls::AcceleratorState::kControl) != 0), + CheckJsResultAt( + kWebContentsId, kButton, "el => el.lastClickEvent.metaKey", + (modifier & ui_controls::AcceleratorState::kCommand) != 0), + CheckJsResultAt(kWebContentsId, kButton, + R"( + function(el) { + const x = el.lastClickEvent.x; + const y = el.lastClickEvent.y; + const rect = el.getBoundingClientRect(); + return x >= rect.left && x < rect.right && + y >= rect.top && y < rect.bottom; + } + )")); +} + // Parameter for WebUI coverage tests. struct CoverageConfig { // Whether to set the --devtools-code-coverage flag. If it's not set, nothing
diff --git a/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/AudioSinkAudioTrackImpl.java b/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/AudioSinkAudioTrackImpl.java index 848e5c14..2626ee8 100644 --- a/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/AudioSinkAudioTrackImpl.java +++ b/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/AudioSinkAudioTrackImpl.java
@@ -454,11 +454,8 @@ return (playtimeLeftNsecs < 0) ? 0 : playtimeLeftNsecs / 1000; // return usecs } + /** Closes the instance by stopping playback and releasing the AudioTrack object. */ @CalledByNative - /** - * Closes the instance by stopping playback and releasing the AudioTrack - * object. - */ private void close() { Log.i(mTag, "Close AudioSinkAudioTrackImpl!"); if (!isStopped()) mAudioTrack.stop();
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM index 2585f39..ce8a8656 100644 --- a/chromeos/CHROMEOS_LKGM +++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@ -16049.0.0-1063698 \ No newline at end of file +16050.0.0-1063704 \ No newline at end of file
diff --git a/chromeos/ash/components/boca/babelorca/BUILD.gn b/chromeos/ash/components/boca/babelorca/BUILD.gn index 67e203b..26e69b8 100644 --- a/chromeos/ash/components/boca/babelorca/BUILD.gn +++ b/chromeos/ash/components/boca/babelorca/BUILD.gn
@@ -25,7 +25,8 @@ "tachyon_registrar.cc", "tachyon_registrar.h", "tachyon_request_data_provider.h", - "tachyon_request_error.h", + "tachyon_response.cc", + "tachyon_response.h", "tachyon_utils.cc", "tachyon_utils.h", "token_data_wrapper.h", @@ -83,6 +84,7 @@ "tachyon_authed_client_impl_unittest.cc", "tachyon_client_impl_unittest.cc", "tachyon_registrar_unittest.cc", + "tachyon_response_unittest.cc", "token_manager_impl_unittest.cc", "transcript_sender_unittest.cc", ]
diff --git a/chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.cc b/chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.cc index 054d42f..9692683 100644 --- a/chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.cc +++ b/chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.cc
@@ -12,7 +12,7 @@ #include "base/run_loop.h" #include "base/types/expected.h" #include "chromeos/ash/components/boca/babelorca/request_data_wrapper.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" #include "third_party/protobuf/src/google/protobuf/message_lite.h" namespace ash::babelorca { @@ -40,7 +40,7 @@ } void FakeTachyonAuthedClient::ExecuteResponseCallback( - base::expected<std::string, TachyonRequestError> response) { + TachyonResponse response) { CHECK(response_cb_); std::move(response_cb_).Run(std::move(response)); }
diff --git a/chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.h b/chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.h index 4ad3db5..6686098 100644 --- a/chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.h +++ b/chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.h
@@ -9,13 +9,13 @@ #include <string> #include "base/run_loop.h" -#include "base/types/expected.h" #include "chromeos/ash/components/boca/babelorca/request_data_wrapper.h" #include "chromeos/ash/components/boca/babelorca/tachyon_authed_client.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" namespace ash::babelorca { +class TachyonResponse; + class FakeTachyonAuthedClient : public TachyonAuthedClient { public: FakeTachyonAuthedClient(); @@ -33,8 +33,7 @@ std::unique_ptr<RequestDataWrapper> request_data, std::string request_string) override; - void ExecuteResponseCallback( - base::expected<std::string, TachyonRequestError> response); + void ExecuteResponseCallback(TachyonResponse response); RequestDataWrapper::ResponseCallback TakeResponseCallback();
diff --git a/chromeos/ash/components/boca/babelorca/request_data_wrapper.h b/chromeos/ash/components/boca/babelorca/request_data_wrapper.h index 8285249..2d60e47 100644 --- a/chromeos/ash/components/boca/babelorca/request_data_wrapper.h +++ b/chromeos/ash/components/boca/babelorca/request_data_wrapper.h
@@ -9,15 +9,14 @@ #include <string_view> #include "base/functional/callback.h" -#include "base/types/expected.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" #include "net/traffic_annotation/network_traffic_annotation.h" namespace ash::babelorca { +class TachyonResponse; + struct RequestDataWrapper { - using ResponseCallback = base::OnceCallback<void( - base::expected<std::string, TachyonRequestError>)>; + using ResponseCallback = base::OnceCallback<void(TachyonResponse)>; RequestDataWrapper( const net::NetworkTrafficAnnotationTag& annotation_tag_param,
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_authed_client_impl.cc b/chromeos/ash/components/boca/babelorca/tachyon_authed_client_impl.cc index a900e4f..53501289 100644 --- a/chromeos/ash/components/boca/babelorca/tachyon_authed_client_impl.cc +++ b/chromeos/ash/components/boca/babelorca/tachyon_authed_client_impl.cc
@@ -16,10 +16,9 @@ #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "base/task/thread_pool.h" -#include "base/types/expected.h" #include "chromeos/ash/components/boca/babelorca/request_data_wrapper.h" #include "chromeos/ash/components/boca/babelorca/tachyon_client.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" #include "chromeos/ash/components/boca/babelorca/token_manager.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "third_party/protobuf/src/google/protobuf/message_lite.h" @@ -70,7 +69,7 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!request_string) { std::move(request_data->response_cb) - .Run(base::unexpected(TachyonRequestError::kInternalError)); + .Run(TachyonResponse(TachyonResponse::Status::kInternalError)); return; } request_data->content_data = std::move(*request_string); @@ -91,7 +90,7 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!has_oauth_token) { std::move(request_data->response_cb) - .Run(base::unexpected(TachyonRequestError::kAuthError)); + .Run(TachyonResponse(TachyonResponse::Status::kAuthError)); return; } std::string oauth_token = *(oauth_token_manager_->GetTokenString()); @@ -108,7 +107,7 @@ static int constexpr kMaxAuthRetries = 1; if (request_data->oauth_retry_num >= kMaxAuthRetries) { std::move(request_data->response_cb) - .Run(base::unexpected(TachyonRequestError::kAuthError)); + .Run(TachyonResponse(TachyonResponse::Status::kAuthError)); return; } ++(request_data->oauth_retry_num);
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_authed_client_impl_unittest.cc b/chromeos/ash/components/boca/babelorca/tachyon_authed_client_impl_unittest.cc index 3381d50..cdf95ff9 100644 --- a/chromeos/ash/components/boca/babelorca/tachyon_authed_client_impl_unittest.cc +++ b/chromeos/ash/components/boca/babelorca/tachyon_authed_client_impl_unittest.cc
@@ -11,12 +11,11 @@ #include "base/memory/raw_ptr.h" #include "base/test/task_environment.h" #include "base/test/test_future.h" -#include "base/types/expected.h" #include "chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_client.h" #include "chromeos/ash/components/boca/babelorca/fakes/fake_token_manager.h" #include "chromeos/ash/components/boca/babelorca/proto/testing_message.pb.h" #include "chromeos/ash/components/boca/babelorca/request_data_wrapper.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -24,8 +23,6 @@ namespace ash::babelorca { namespace { -using ExpectedTestingMessage = base::expected<std::string, TachyonRequestError>; - constexpr char kOAuthToken1[] = "oauth-token1"; constexpr char kOAuthToken2[] = "oauth-token2"; constexpr int kMaxRetries = 2; @@ -64,7 +61,7 @@ test_future_.GetCallback()); } - base::test::TestFuture<ExpectedTestingMessage>* test_future() { + base::test::TestFuture<TachyonResponse>* test_future() { return &test_future_; } @@ -76,7 +73,7 @@ FakeTokenManager fake_token_manager_; std::unique_ptr<TestingMessage> request_message_; std::string request_string_; - base::test::TestFuture<ExpectedTestingMessage> test_future_; + base::test::TestFuture<TachyonResponse> test_future_; }; TEST_F(TachyonAuthedClientImplTest, InitiallyAuthed) { @@ -215,8 +212,7 @@ fake_client_ptr()->WaitForRequest(); fake_client_ptr()->ExecuteAuthFailCb(); - EXPECT_EQ(test_future()->Get(), - base::unexpected(TachyonRequestError::kAuthError)); + EXPECT_EQ(test_future()->Get().status(), TachyonResponse::Status::kAuthError); } TEST_F(TachyonAuthedClientImplTest, TokenFetchFailed) { @@ -226,8 +222,7 @@ fake_token_manager()->WaitForForceFetchRequest(); fake_token_manager()->ExecuteFetchCallback(/*success=*/false); - EXPECT_EQ(test_future()->Get(), - base::unexpected(TachyonRequestError::kAuthError)); + EXPECT_EQ(test_future()->Get().status(), TachyonResponse::Status::kAuthError); } } // namespace
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_client_impl.cc b/chromeos/ash/components/boca/babelorca/tachyon_client_impl.cc index 003d4a0..270b022 100644 --- a/chromeos/ash/components/boca/babelorca/tachyon_client_impl.cc +++ b/chromeos/ash/components/boca/babelorca/tachyon_client_impl.cc
@@ -5,6 +5,7 @@ #include "chromeos/ash/components/boca/babelorca/tachyon_client_impl.h" #include <memory> +#include <optional> #include <string> #include <utility> @@ -13,9 +14,8 @@ #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/strings/stringprintf.h" -#include "base/types/expected.h" #include "chromeos/ash/components/boca/babelorca/request_data_wrapper.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" #include "net/base/load_flags.h" #include "net/base/net_errors.h" #include "net/http/http_request_headers.h" @@ -80,34 +80,17 @@ std::unique_ptr<RequestDataWrapper> request_data, AuthFailureCallback auth_failure_cb, std::unique_ptr<std::string> response_body) { - if (url_loader->NetError() != net::OK && - url_loader->NetError() != net::ERR_HTTP_RESPONSE_CODE_FAILURE) { - std::move(request_data->response_cb) - .Run(base::unexpected(TachyonRequestError::kNetworkError)); - return; + std::optional<int> http_status_code; + if (url_loader->ResponseInfo() && url_loader->ResponseInfo()->headers) { + http_status_code = url_loader->ResponseInfo()->headers->response_code(); } - if (!url_loader->ResponseInfo() || !url_loader->ResponseInfo()->headers) { - std::move(request_data->response_cb) - .Run(base::unexpected(TachyonRequestError::kInternalError)); - return; - } - const int response_code = - url_loader->ResponseInfo()->headers->response_code(); - if (response_code == net::HttpStatusCode::HTTP_UNAUTHORIZED) { + TachyonResponse response(url_loader->NetError(), http_status_code, + std::move(response_body)); + if (response.status() == TachyonResponse::Status::kAuthError) { std::move(auth_failure_cb).Run(std::move(request_data)); return; } - if (!network::IsSuccessfulStatus(response_code)) { - std::move(request_data->response_cb) - .Run(base::unexpected(TachyonRequestError::kHttpError)); - return; - } - if (!response_body) { - std::move(request_data->response_cb) - .Run(base::unexpected(TachyonRequestError::kInternalError)); - return; - } - std::move(request_data->response_cb).Run(std::move(*response_body)); + std::move(request_data->response_cb).Run(std::move(response)); } } // namespace ash::babelorca
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_client_impl_unittest.cc b/chromeos/ash/components/boca/babelorca/tachyon_client_impl_unittest.cc index 6d7b4ad2..01cd300 100644 --- a/chromeos/ash/components/boca/babelorca/tachyon_client_impl_unittest.cc +++ b/chromeos/ash/components/boca/babelorca/tachyon_client_impl_unittest.cc
@@ -10,10 +10,9 @@ #include "base/memory/scoped_refptr.h" #include "base/test/task_environment.h" #include "base/test/test_future.h" -#include "base/types/expected.h" #include "chromeos/ash/components/boca/babelorca/proto/testing_message.pb.h" #include "chromeos/ash/components/boca/babelorca/request_data_wrapper.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" #include "net/base/net_errors.h" #include "net/http/http_status_code.h" #include "net/traffic_annotation/network_traffic_annotation.h" @@ -27,7 +26,6 @@ namespace ash::babelorca { namespace { -using ExpectedTestingMessage = base::expected<std::string, TachyonRequestError>; using RequestDataPtr = std::unique_ptr<RequestDataWrapper>; constexpr char kOAuthToken[] = "oauth-token"; @@ -50,13 +48,13 @@ return &auth_failure_future_; } - base::test::TestFuture<ExpectedTestingMessage>* result_future() { + base::test::TestFuture<TachyonResponse>* result_future() { return &result_future_; } private: base::test::TestFuture<RequestDataPtr> auth_failure_future_; - base::test::TestFuture<ExpectedTestingMessage> result_future_; + base::test::TestFuture<TachyonResponse> result_future_; base::test::TaskEnvironment task_env_; }; @@ -70,10 +68,10 @@ client.StartRequest(request_data(), kOAuthToken, auth_failure_future()->GetCallback()); - auto result = result_future()->Get(); - ASSERT_TRUE(result.has_value()); + auto result = result_future()->Take(); + EXPECT_TRUE(result.ok()); TestingMessage result_proto; - ASSERT_TRUE(result_proto.ParseFromString(result.value())); + ASSERT_TRUE(result_proto.ParseFromString(result.response_body())); EXPECT_EQ(result_proto.int_field(), 9999); EXPECT_FALSE(auth_failure_future()->IsReady()); } @@ -88,9 +86,8 @@ client.StartRequest(request_data(), kOAuthToken, auth_failure_future()->GetCallback()); - auto result = result_future()->Get(); - ASSERT_FALSE(result.has_value()); - EXPECT_EQ(result.error(), TachyonRequestError::kNetworkError); + auto result = result_future()->Take(); + EXPECT_EQ(result.status(), TachyonResponse::Status::kNetworkError); EXPECT_FALSE(auth_failure_future()->IsReady()); } @@ -103,9 +100,8 @@ client.StartRequest(request_data(), kOAuthToken, auth_failure_future()->GetCallback()); - auto result = result_future()->Get(); - ASSERT_FALSE(result.has_value()); - EXPECT_EQ(result.error(), TachyonRequestError::kHttpError); + auto result = result_future()->Take(); + EXPECT_EQ(result.status(), TachyonResponse::Status::kHttpError); EXPECT_FALSE(auth_failure_future()->IsReady()); }
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_registrar.cc b/chromeos/ash/components/boca/babelorca/tachyon_registrar.cc index 28d13a1..5041ebac 100644 --- a/chromeos/ash/components/boca/babelorca/tachyon_registrar.cc +++ b/chromeos/ash/components/boca/babelorca/tachyon_registrar.cc
@@ -12,7 +12,6 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/sequence_checker.h" -#include "base/types/expected.h" #include "base/uuid.h" #include "chromeos/ash/components/boca/babelorca/proto/tachyon.pb.h" #include "chromeos/ash/components/boca/babelorca/proto/tachyon_common.pb.h" @@ -20,6 +19,7 @@ #include "chromeos/ash/components/boca/babelorca/request_data_wrapper.h" #include "chromeos/ash/components/boca/babelorca/tachyon_authed_client.h" #include "chromeos/ash/components/boca/babelorca/tachyon_constants.h" +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" #include "chromeos/ash/components/boca/babelorca/tachyon_utils.h" #include "net/traffic_annotation/network_traffic_annotation.h" @@ -69,16 +69,15 @@ return tachyon_token_; } -void TachyonRegistrar::OnResponse( - base::OnceCallback<void(bool)> success_cb, - base::expected<std::string, TachyonRequestError> response) { +void TachyonRegistrar::OnResponse(base::OnceCallback<void(bool)> success_cb, + TachyonResponse response) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (!response.has_value()) { + if (!response.ok()) { std::move(success_cb).Run(false); return; } SignInGaiaResponse signin_response; - if (!signin_response.ParseFromString(response.value())) { + if (!signin_response.ParseFromString(response.response_body())) { std::move(success_cb).Run(false); return; }
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_registrar.h b/chromeos/ash/components/boca/babelorca/tachyon_registrar.h index 7f079cf..3b14125 100644 --- a/chromeos/ash/components/boca/babelorca/tachyon_registrar.h +++ b/chromeos/ash/components/boca/babelorca/tachyon_registrar.h
@@ -15,13 +15,12 @@ #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "base/thread_annotations.h" -#include "base/types/expected.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" #include "net/traffic_annotation/network_traffic_annotation.h" namespace ash::babelorca { class TachyonAuthedClient; +class TachyonResponse; // Register user with Tachyon and store tachyon token to be used by other // tachyon requests. @@ -45,7 +44,7 @@ private: void OnResponse(base::OnceCallback<void(bool)> success_cb, - base::expected<std::string, TachyonRequestError> response); + TachyonResponse response); SEQUENCE_CHECKER(sequence_checker_);
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_registrar_unittest.cc b/chromeos/ash/components/boca/babelorca/tachyon_registrar_unittest.cc index 8b9a0a9..4b5aa66d 100644 --- a/chromeos/ash/components/boca/babelorca/tachyon_registrar_unittest.cc +++ b/chromeos/ash/components/boca/babelorca/tachyon_registrar_unittest.cc
@@ -9,10 +9,11 @@ #include "base/test/task_environment.h" #include "base/test/test_future.h" -#include "base/types/expected.h" #include "chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.h" #include "chromeos/ash/components/boca/babelorca/proto/tachyon.pb.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" +#include "net/base/net_errors.h" +#include "net/http/http_status_code.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -31,7 +32,9 @@ registrar.Register(kClientUuid, test_future.GetCallback()); SignInGaiaResponse signin_response; signin_response.mutable_auth_token()->set_payload(kTachyonToken); - authed_client.ExecuteResponseCallback(signin_response.SerializeAsString()); + authed_client.ExecuteResponseCallback(TachyonResponse( + net::OK, net::HttpStatusCode::HTTP_OK, + std::make_unique<std::string>(signin_response.SerializeAsString()))); EXPECT_TRUE(test_future.Get()); std::optional<std::string> tachyon_token = registrar.GetTachyonToken(); @@ -47,7 +50,7 @@ registrar.Register(kClientUuid, test_future.GetCallback()); authed_client.ExecuteResponseCallback( - base::unexpected(TachyonRequestError::kHttpError)); + TachyonResponse(TachyonResponse::Status::kHttpError)); EXPECT_FALSE(test_future.Get()); std::optional<std::string> tachyon_token = registrar.GetTachyonToken();
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_request_error.h b/chromeos/ash/components/boca/babelorca/tachyon_request_error.h deleted file mode 100644 index 41ae4f4..0000000 --- a/chromeos/ash/components/boca/babelorca/tachyon_request_error.h +++ /dev/null
@@ -1,19 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROMEOS_ASH_COMPONENTS_BOCA_BABELORCA_TACHYON_REQUEST_ERROR_H_ -#define CHROMEOS_ASH_COMPONENTS_BOCA_BABELORCA_TACHYON_REQUEST_ERROR_H_ - -namespace ash::babelorca { - -enum class TachyonRequestError { - kHttpError, - kNetworkError, - kInternalError, - kAuthError -}; - -} - -#endif // CHROMEOS_ASH_COMPONENTS_BOCA_BABELORCA_TACHYON_REQUEST_ERROR_H_
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_response.cc b/chromeos/ash/components/boca/babelorca/tachyon_response.cc new file mode 100644 index 0000000..b2695a1 --- /dev/null +++ b/chromeos/ash/components/boca/babelorca/tachyon_response.cc
@@ -0,0 +1,66 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" + +#include <memory> +#include <string> +#include <utility> + +#include "net/base/net_errors.h" +#include "net/http/http_status_code.h" +#include "services/network/public/cpp/header_util.h" + +namespace ash::babelorca { + +TachyonResponse::TachyonResponse(Status status) : status_(status) {} + +TachyonResponse::TachyonResponse(int rpc_code, + const std::string& error_message) { + constexpr int kOkCode = 0; + constexpr int kUnauthenticatedCode = 16; + switch (rpc_code) { + case kOkCode: + status_ = Status::kOk; + break; + case kUnauthenticatedCode: + status_ = Status::kAuthError; + break; + default: + status_ = Status::kHttpError; + } + error_message_ = error_message; +} + +TachyonResponse::TachyonResponse(int net_error, + std::optional<int> http_status_code, + std::unique_ptr<std::string> response_body) { + if (net_error != net::OK && + net_error != net::ERR_HTTP_RESPONSE_CODE_FAILURE) { + status_ = Status::kNetworkError; + return; + } + if (!http_status_code.has_value()) { + status_ = Status::kInternalError; + return; + } + if (http_status_code == net::HttpStatusCode::HTTP_UNAUTHORIZED) { + status_ = Status::kAuthError; + return; + } + if (!network::IsSuccessfulStatus(http_status_code.value())) { + status_ = Status::kHttpError; + return; + } + response_body_ = response_body ? std::move(*response_body) : ""; + status_ = Status::kOk; +} + +TachyonResponse::~TachyonResponse() = default; + +bool TachyonResponse::ok() const { + return status_ == Status::kOk; +} + +} // namespace ash::babelorca
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_response.h b/chromeos/ash/components/boca/babelorca/tachyon_response.h new file mode 100644 index 0000000..a2d7950c --- /dev/null +++ b/chromeos/ash/components/boca/babelorca/tachyon_response.h
@@ -0,0 +1,51 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_ASH_COMPONENTS_BOCA_BABELORCA_TACHYON_RESPONSE_H_ +#define CHROMEOS_ASH_COMPONENTS_BOCA_BABELORCA_TACHYON_RESPONSE_H_ + +#include <memory> +#include <string> + +namespace ash::babelorca { + +class TachyonResponse { + public: + enum class Status { + kOk, + kHttpError, + kNetworkError, + kInternalError, + kAuthError + }; + explicit TachyonResponse(Status status); + explicit TachyonResponse(int rpc_code, const std::string& error_message = ""); + TachyonResponse(int net_error, + std::optional<int> http_status_code, + std::unique_ptr<std::string> response_body); + + TachyonResponse(TachyonResponse&& other) = default; + TachyonResponse& operator=(TachyonResponse&& other) = default; + + ~TachyonResponse(); + + bool ok() const; + + Status status() const { return status_; } + + // Empty string if there is no response body. + const std::string& response_body() const { return response_body_; } + + // Empty string if there is no error message. + const std::string& error_message() const { return error_message_; } + + private: + Status status_; + std::string response_body_; + std::string error_message_; +}; + +} // namespace ash::babelorca + +#endif // CHROMEOS_ASH_COMPONENTS_BOCA_BABELORCA_TACHYON_RESPONSE_H_
diff --git a/chromeos/ash/components/boca/babelorca/tachyon_response_unittest.cc b/chromeos/ash/components/boca/babelorca/tachyon_response_unittest.cc new file mode 100644 index 0000000..c414e574 --- /dev/null +++ b/chromeos/ash/components/boca/babelorca/tachyon_response_unittest.cc
@@ -0,0 +1,96 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" + +#include <memory> +#include <string> + +#include "net/base/net_errors.h" +#include "net/http/http_status_code.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace ash::babelorca { +namespace { + +struct TachyonResponseTestCase { + std::string test_name; + int net_error; + std::optional<int> http_status_code; + std::string response_body; + TachyonResponse::Status expected_status; +}; + +using TachyonResponseTest = testing::TestWithParam<TachyonResponseTestCase>; + +TEST(TachyonResponseTest, InternalErrorStatus) { + TachyonResponse response(TachyonResponse::Status::kInternalError); + EXPECT_FALSE(response.ok()); + EXPECT_EQ(response.status(), TachyonResponse::Status::kInternalError); + EXPECT_THAT(response.error_message(), testing::IsEmpty()); + EXPECT_THAT(response.response_body(), testing::IsEmpty()); +} + +TEST(TachyonResponseTest, OkRpcCode) { + TachyonResponse response(/*rpc_code=*/0); + EXPECT_TRUE(response.ok()); + EXPECT_EQ(response.status(), TachyonResponse::Status::kOk); + EXPECT_THAT(response.error_message(), testing::IsEmpty()); + EXPECT_THAT(response.response_body(), testing::IsEmpty()); +} + +TEST(TachyonResponseTest, AuthErrorRpcCode) { + constexpr char kAuthErrorMessage[] = "auth error"; + TachyonResponse response(/*rpc_code=*/16, + /*error_message=*/kAuthErrorMessage); + EXPECT_FALSE(response.ok()); + EXPECT_EQ(response.status(), TachyonResponse::Status::kAuthError); + EXPECT_THAT(response.error_message(), testing::StrEq(kAuthErrorMessage)); + EXPECT_THAT(response.response_body(), testing::IsEmpty()); +} + +TEST(TachyonResponseTest, OtherRpcCode) { + constexpr char kResourcedMessage[] = "resource exhausted"; + TachyonResponse response(/*rpc_code=*/8, /*error_message=*/kResourcedMessage); + EXPECT_FALSE(response.ok()); + EXPECT_EQ(response.status(), TachyonResponse::Status::kHttpError); + EXPECT_THAT(response.error_message(), testing::StrEq(kResourcedMessage)); + EXPECT_THAT(response.response_body(), testing::IsEmpty()); +} + +TEST_P(TachyonResponseTest, HttpHeader) { + TachyonResponse response( + GetParam().net_error, GetParam().http_status_code, + std::make_unique<std::string>(GetParam().response_body)); + EXPECT_EQ(response.status(), GetParam().expected_status); + EXPECT_THAT(response.response_body(), + testing::StrEq(GetParam().response_body)); + EXPECT_THAT(response.error_message(), testing::IsEmpty()); +} + +INSTANTIATE_TEST_SUITE_P( + TachyonResponseTestSuiteInstantiation, + TachyonResponseTest, + testing::ValuesIn<TachyonResponseTestCase>({ + {"NetError", net::ERR_TOO_MANY_RETRIES, std::nullopt, "", + TachyonResponse::Status::kNetworkError}, + {"NoHttpStatus", net::OK, std::nullopt, "", + TachyonResponse::Status::kInternalError}, + {"AuthError", net::ERR_HTTP_RESPONSE_CODE_FAILURE, + net::HttpStatusCode::HTTP_UNAUTHORIZED, "", + TachyonResponse::Status::kAuthError}, + {"OtherHttpError", net::ERR_HTTP_RESPONSE_CODE_FAILURE, + net::HttpStatusCode::HTTP_PRECONDITION_FAILED, "", + TachyonResponse::Status::kHttpError}, + {"Success", net::ERR_HTTP_RESPONSE_CODE_FAILURE, + net::HttpStatusCode::HTTP_OK, "response", + TachyonResponse::Status::kOk}, + }), + [](const testing::TestParamInfo<TachyonResponseTest::ParamType>& info) { + return info.param.test_name; + }); + +} // namespace +} // namespace ash::babelorca
diff --git a/chromeos/ash/components/boca/babelorca/transcript_sender.cc b/chromeos/ash/components/boca/babelorca/transcript_sender.cc index 3e4ba0b..532278f 100644 --- a/chromeos/ash/components/boca/babelorca/transcript_sender.cc +++ b/chromeos/ash/components/boca/babelorca/transcript_sender.cc
@@ -28,7 +28,7 @@ #include "chromeos/ash/components/boca/babelorca/tachyon_authed_client.h" #include "chromeos/ash/components/boca/babelorca/tachyon_constants.h" #include "chromeos/ash/components/boca/babelorca/tachyon_request_data_provider.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" #include "chromeos/ash/components/boca/babelorca/tachyon_utils.h" #include "media/mojo/mojom/speech_recognition_result.h" #include "net/traffic_annotation/network_traffic_annotation.h" @@ -203,10 +203,9 @@ std::move(request_string)); } -void TranscriptSender::OnSendResponse( - base::expected<std::string, TachyonRequestError> response) { +void TranscriptSender::OnSendResponse(TachyonResponse response) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (response.has_value()) { + if (response.ok()) { errors_num_ = 0; return; }
diff --git a/chromeos/ash/components/boca/babelorca/transcript_sender.h b/chromeos/ash/components/boca/babelorca/transcript_sender.h index d34a310..f97ee73 100644 --- a/chromeos/ash/components/boca/babelorca/transcript_sender.h +++ b/chromeos/ash/components/boca/babelorca/transcript_sender.h
@@ -18,8 +18,6 @@ #include "base/sequence_checker.h" #include "base/thread_annotations.h" #include "base/time/time.h" -#include "base/types/expected.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" #include "net/traffic_annotation/network_traffic_annotation.h" namespace media { @@ -35,6 +33,7 @@ class BabelOrcaMessage; class TachyonAuthedClient; class TachyonRequestDataProvider; +class TachyonResponse; // Class to send transcriptions. class TranscriptSender { @@ -74,8 +73,7 @@ void Send(int max_retries, std::string message); - void OnSendResponse( - base::expected<std::string, TachyonRequestError> response); + void OnSendResponse(TachyonResponse response); SEQUENCE_CHECKER(sequence_checker_);
diff --git a/chromeos/ash/components/boca/babelorca/transcript_sender_unittest.cc b/chromeos/ash/components/boca/babelorca/transcript_sender_unittest.cc index a87f7e0..0969b1e 100644 --- a/chromeos/ash/components/boca/babelorca/transcript_sender_unittest.cc +++ b/chromeos/ash/components/boca/babelorca/transcript_sender_unittest.cc
@@ -4,12 +4,13 @@ #include "chromeos/ash/components/boca/babelorca/transcript_sender.h" +#include <optional> #include <string> +#include <utility> #include "base/test/task_environment.h" #include "base/test/test_future.h" #include "base/time/time.h" -#include "base/types/expected.h" #include "chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_authed_client.h" #include "chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_client.h" #include "chromeos/ash/components/boca/babelorca/fakes/fake_tachyon_request_data_provider.h" @@ -18,8 +19,10 @@ #include "chromeos/ash/components/boca/babelorca/proto/tachyon_enums.pb.h" #include "chromeos/ash/components/boca/babelorca/request_data_wrapper.h" #include "chromeos/ash/components/boca/babelorca/tachyon_constants.h" -#include "chromeos/ash/components/boca/babelorca/tachyon_request_error.h" +#include "chromeos/ash/components/boca/babelorca/tachyon_response.h" #include "media/mojo/mojom/speech_recognition_result.h" +#include "net/base/net_errors.h" +#include "net/http/http_status_code.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -72,8 +75,9 @@ /*is_final=*/false); EXPECT_TRUE(sender.SendTranscriptionUpdate(transcript, kLanguage)); authed_client.WaitForRequest(); - authed_client.ExecuteResponseCallback( - InboxSendResponse().SerializeAsString()); + authed_client.ExecuteResponseCallback(TachyonResponse( + net::OK, net::HttpStatusCode::HTTP_OK, + std::make_unique<std::string>(InboxSendResponse().SerializeAsString()))); EXPECT_FALSE(failure_future.IsReady()); InboxSendRequest sent_request; @@ -135,16 +139,18 @@ EXPECT_TRUE(sender.SendTranscriptionUpdate(transcript1, kLanguage)); authed_client.WaitForRequest(); request_string1 = authed_client.GetRequestString(); - authed_client.ExecuteResponseCallback( - InboxSendResponse().SerializeAsString()); + authed_client.ExecuteResponseCallback(TachyonResponse( + net::OK, net::HttpStatusCode::HTTP_OK, + std::make_unique<std::string>(InboxSendResponse().SerializeAsString()))); media::SpeechRecognitionResult transcript2(kTranscriptText, /*is_final=*/false); EXPECT_TRUE(sender.SendTranscriptionUpdate(transcript2, kLanguage)); authed_client.WaitForRequest(); request_string2 = authed_client.GetRequestString(); - authed_client.ExecuteResponseCallback( - InboxSendResponse().SerializeAsString()); + authed_client.ExecuteResponseCallback(TachyonResponse( + net::OK, net::HttpStatusCode::HTTP_OK, + std::make_unique<std::string>(InboxSendResponse().SerializeAsString()))); EXPECT_FALSE(failure_future.IsReady()); InboxSendRequest sent_request1; @@ -194,14 +200,14 @@ EXPECT_TRUE(sender.SendTranscriptionUpdate(transcript1, kLanguage)); authed_client.WaitForRequest(); authed_client.ExecuteResponseCallback( - base::unexpected(TachyonRequestError::kHttpError)); + TachyonResponse(TachyonResponse::Status::kHttpError)); media::SpeechRecognitionResult transcript2(kTranscriptText, /*is_final=*/false); EXPECT_TRUE(sender.SendTranscriptionUpdate(transcript2, kLanguage)); authed_client.WaitForRequest(); authed_client.ExecuteResponseCallback( - base::unexpected(TachyonRequestError::kHttpError)); + TachyonResponse(TachyonResponse::Status::kHttpError)); media::SpeechRecognitionResult transcript3(kTranscriptText, /*is_final=*/false); @@ -230,15 +236,16 @@ EXPECT_TRUE(sender.SendTranscriptionUpdate(transcript1, kLanguage)); authed_client.WaitForRequest(); authed_client.ExecuteResponseCallback( - base::unexpected(TachyonRequestError::kHttpError)); + TachyonResponse(TachyonResponse::Status::kHttpError)); // Successful request, should reset error count. media::SpeechRecognitionResult transcript2(kTranscriptText, /*is_final=*/false); EXPECT_TRUE(sender.SendTranscriptionUpdate(transcript2, kLanguage)); authed_client.WaitForRequest(); - authed_client.ExecuteResponseCallback( - InboxSendResponse().SerializeAsString()); + authed_client.ExecuteResponseCallback(TachyonResponse( + net::OK, net::HttpStatusCode::HTTP_OK, + std::make_unique<std::string>(InboxSendResponse().SerializeAsString()))); // Failed request, should not trigger failure callback since the error count // was reset. @@ -247,7 +254,7 @@ EXPECT_TRUE(sender.SendTranscriptionUpdate(transcript3, kLanguage)); authed_client.WaitForRequest(); authed_client.ExecuteResponseCallback( - base::unexpected(TachyonRequestError::kHttpError)); + TachyonResponse(TachyonResponse::Status::kHttpError)); EXPECT_FALSE(failure_future.IsReady()); } @@ -288,14 +295,14 @@ authed_client.TakeResponseCallback(); std::move(response_cb1) - .Run(base::unexpected(TachyonRequestError::kHttpError)); + .Run(TachyonResponse(TachyonResponse::Status::kHttpError)); std::move(response_cb2) - .Run(base::unexpected(TachyonRequestError::kHttpError)); + .Run(TachyonResponse(TachyonResponse::Status::kHttpError)); EXPECT_TRUE(failure_future.IsReady()); std::move(response_cb3) - .Run(base::unexpected(TachyonRequestError::kHttpError)); + .Run(TachyonResponse(TachyonResponse::Status::kHttpError)); media::SpeechRecognitionResult transcript4(kTranscriptText, /*is_final=*/false);
diff --git a/chromeos/profiles/arm.afdo.newest.txt b/chromeos/profiles/arm.afdo.newest.txt index 7c19afd68..efe8bc0 100644 --- a/chromeos/profiles/arm.afdo.newest.txt +++ b/chromeos/profiles/arm.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-arm-none-131-6723.9-1727662744-benchmark-131.0.6749.0-r1-redacted.afdo.xz +chromeos-chrome-arm-none-131-6723.9-1727662744-benchmark-131.0.6750.0-r1-redacted.afdo.xz
diff --git a/clank b/clank index 59c00202..4120c4d 160000 --- a/clank +++ b/clank
@@ -1 +1 @@ -Subproject commit 59c00202c7c9270d760bf9a57ffd242ef6b0f271 +Subproject commit 4120c4d811f4c534ae4be631037163de6f797935
diff --git a/components/OWNERS b/components/OWNERS index e0ba2bb..6fa527a 100644 --- a/components/OWNERS +++ b/components/OWNERS
@@ -48,8 +48,8 @@ per-file privacy_sandbox_strings.grd=file://components/privacy_sandbox/OWNERS per-file reset_password_strings.grdp=file://components/safe_browsing/OWNERS per-file saved_tab_groups_strings.grdp=file://components/saved_tab_groups/OWNERS -per-file search_engine_choice_strings.grdp=file://components/search_engines/search_engine_choice/OWNERS -per-file search_engine_descriptions_strings.grd=file://components/search_engines/search_engine_choice/OWNERS +per-file search_engine_choice_strings.grdp=file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS +per-file search_engine_descriptions_strings.grd=file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS per-file security_interstitials_strings.grdp=file://components/security_interstitials/OWNERS per-file send_tab_to_self_strings.grdp=file://components/send_tab_to_self/OWNERS per-file site_settings_strings.grdp=file://components/browser_ui/site_settings/OWNERS
diff --git a/components/autofill/android/java/src/org/chromium/components/autofill/payments/AutofillSaveIbanUiInfo.java b/components/autofill/android/java/src/org/chromium/components/autofill/payments/AutofillSaveIbanUiInfo.java index e11ead6..1ab20afa 100644 --- a/components/autofill/android/java/src/org/chromium/components/autofill/payments/AutofillSaveIbanUiInfo.java +++ b/components/autofill/android/java/src/org/chromium/components/autofill/payments/AutofillSaveIbanUiInfo.java
@@ -17,11 +17,11 @@ import java.util.List; import java.util.Objects; -@JNINamespace("autofill") /** * The android version of the C++ AutofillSaveIbanUiInfo providing UI resources for the save IBAN * bottom sheet. */ +@JNINamespace("autofill") public class AutofillSaveIbanUiInfo { private final String mAcceptText; private final String mCancelText; @@ -64,8 +64,6 @@ return mTitleText; } - @CalledByNative - @VisibleForTesting /** * Construct the {@link AutofillSaveIbanUiInfo} given all the members. This constructor is used * for native binding purposes. @@ -80,6 +78,8 @@ * {@code 0} for local save. * @param titleText A bottom sheet title UI string. This value must not be {@code null}. */ + @CalledByNative + @VisibleForTesting /* package */ AutofillSaveIbanUiInfo( @JniType("std::u16string") String acceptText, @JniType("std::u16string") String cancelText,
diff --git a/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_filling_engine_impl.cc b/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_filling_engine_impl.cc index a1ba10c..9e01583 100644 --- a/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_filling_engine_impl.cc +++ b/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_filling_engine_impl.cc
@@ -154,6 +154,10 @@ // in the suggestion as the main text. select_option_text = predicted_select_option_it->text; } + // Skip predictions for non-empty text fields. + else if (field.IsTextInputElement() && !field.value().empty()) { + continue; + } const std::u16string label = filled_form_field_proto.normalized_label().empty()
diff --git a/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_filling_engine_impl_unittest.cc b/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_filling_engine_impl_unittest.cc index f1ee7f68..b58c00f 100644 --- a/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_filling_engine_impl_unittest.cc +++ b/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_filling_engine_impl_unittest.cc
@@ -108,6 +108,7 @@ AddFieldToResponse(response, "Country - response equals selected value, not filled", "", "2"); + AddFieldToResponse(response, "Field has value, not filled", "", "value"); optimization_guide::proto::Any any; any.set_type_url(response.GetTypeName()); response.SerializeToString(any.mutable_value()); @@ -139,7 +140,8 @@ .value = u"2", .form_control_type = autofill::FormControlType::kSelectOne, .select_options = {{.value = u"1", .text = u"France"}, - {.value = u"2", .text = u"Spain"}}}}}; + {.value = u"2", .text = u"Spain"}}}, + {.label = u"Field has value, not filled", .value = u"value"}}}; autofill::FormData form = autofill::test::GetFormData(form_description); optimization_guide::proto::AXTreeUpdate ax_tree;
diff --git a/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_manager.cc b/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_manager.cc index e923a85..09f11c2 100644 --- a/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_manager.cc +++ b/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_manager.cc
@@ -36,6 +36,8 @@ namespace { +constexpr int kNumberFieldsToShowInSuggestionLabel = 2; + // Define `field_types_to_fill` as Autofill address types + // `IMPROVED_PREDICTION`. // TODO(crbug.com/364808228): Remove `UNKNOWN_TYPE` from `field_types_to_fill`. @@ -213,8 +215,6 @@ // Add a `kFillPredictionImprovements` suggestion with a separator to // `suggestion.children` before the field-by-field filling entries. { - // TODO(crbug.com/361434879): Add hardcoded string to an appropriate grd - // file. autofill::Suggestion fill_all_child( l10n_util::GetStringUTF16( IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_ALL_MAIN_TEXT), @@ -225,7 +225,13 @@ } // Add the child suggestion for the triggering field on top. suggestion.children.emplace_back(CreateChildSuggestionForFilling(prediction)); - // Then add child suggestions for all remaining, non-empty fields. + // Initialize as 1 because of the suggestion added above. + size_t n_fields_to_fill = 1; + // The label depends on the fields that will be filled. + std::u16string label = + l10n_util::GetStringUTF16( + IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_LABEL_TEXT) + + u" " + prediction.label; for (const auto& [child_field_global_id, child_prediction] : (*cache_)) { // Only add a child suggestion if the field is not the triggering field and // the value to fill is not empty. @@ -235,16 +241,34 @@ } suggestion.children.emplace_back( CreateChildSuggestionForFilling(child_prediction)); + ++n_fields_to_fill; + if (n_fields_to_fill == 2) { + label += l10n_util::GetStringUTF16( + IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_LABEL_SEPARATOR) + + child_prediction.label; + } } - if (!suggestion.children.empty()) { - suggestion.labels.emplace_back(); - // TODO(crbug.com/361434879): Add hardcoded string to an appropriate grd - // file. - suggestion.labels.back().emplace_back(u"& more"); - suggestion.children.emplace_back(autofill::SuggestionType::kSeparator); - suggestion.children.emplace_back( - CreateEditPredictionImprovementsInformation()); + + suggestion.children.emplace_back(autofill::SuggestionType::kSeparator); + suggestion.children.emplace_back( + CreateEditPredictionImprovementsInformation()); + + if (n_fields_to_fill > kNumberFieldsToShowInSuggestionLabel) { + // When more than `kNumberFieldsToShowInSuggestionLabel` are filled, include + // the "& More". + size_t number_of_more_fields_to_fill = + n_fields_to_fill - kNumberFieldsToShowInSuggestionLabel; + const std::u16string more_fields_label_substr = + number_of_more_fields_to_fill > 1 + ? l10n_util::GetStringFUTF16( + IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_SUGGESTION_AND_N_MORE_FIELDS, + base::NumberToString16(number_of_more_fields_to_fill)) + : l10n_util::GetStringUTF16( + IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_SUGGESTION_AND_ONE_MORE_FIELD); + label = base::StrCat({label, u" ", more_fields_label_substr}); } + suggestion.labels.emplace_back(); + suggestion.labels.back().emplace_back(label); // TODO(crbug.com/365512352): Figure out how to handle Undo suggestion. std::vector<autofill::Suggestion> filling_suggestions = {suggestion};
diff --git a/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_manager_unittest.cc b/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_manager_unittest.cc index 4d18f16..3c291858 100644 --- a/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_manager_unittest.cc +++ b/components/autofill_prediction_improvements/core/browser/autofill_prediction_improvements_manager_unittest.cc
@@ -509,6 +509,81 @@ HasType(SuggestionType::kPredictionImprovementsFeedback))); } +// Tests that the filling suggestion label is correct when only one field can be +// filled. +TEST_F( + AutofillPredictionImprovementsManagerTest, + FillingSuggestion_OneFieldCanBeFilled_CreateLabelThatContainsOnlyOneFieldData) { + autofill::test::FormDescription form_description = { + .fields = {{.role = autofill::NAME_FIRST, + .heuristic_type = autofill::NAME_FIRST}}}; + autofill::FormData form = autofill::test::GetFormData(form_description); + test_api(*manager_).SetCache(PredictionsByGlobalId{ + {form.fields()[0].global_id(), {u"Jane", u"First name"}}}); + + std::vector<Suggestion> suggestions_to_show; + EXPECT_TRUE( + manager_->MaybeUpdateSuggestions(suggestions_to_show, form.fields()[0], + /*should_add_trigger_suggestion=*/true)); + EXPECT_EQ(suggestions_to_show[0].labels[0][0].value, u"Fill First name"); +} + +// Tests that the filling suggestion label is correct when 3 fields can be +// filled. +TEST_F(AutofillPredictionImprovementsManagerTest, + FillingSuggestion_ThreeFieldsCanBeFilled_UserSingularAndMoreString) { + autofill::test::FormDescription form_description = { + .fields = {{.role = autofill::NAME_FIRST, + .heuristic_type = autofill::NAME_FIRST}, + {.role = autofill::ADDRESS_HOME_STREET_NAME, + .heuristic_type = autofill::ADDRESS_HOME_STREET_NAME}, + {.role = autofill::ADDRESS_HOME_STATE, + .heuristic_type = autofill::ADDRESS_HOME_STATE, + .form_control_type = autofill::FormControlType::kSelectOne}}}; + autofill::FormData form = autofill::test::GetFormData(form_description); + test_api(*manager_).SetCache(PredictionsByGlobalId{ + {form.fields()[0].global_id(), {u"Jane", u"First name"}}, + {form.fields()[1].global_id(), {u"Country roads str", u"Street name"}}, + {form.fields()[2].global_id(), {u"33", u"state", u"West Virginia"}}}); + + std::vector<Suggestion> suggestions_to_show; + EXPECT_TRUE( + manager_->MaybeUpdateSuggestions(suggestions_to_show, form.fields()[0], + /*should_add_trigger_suggestion=*/true)); + EXPECT_EQ(suggestions_to_show[0].labels[0][0].value, + u"Fill First name, Street name & 1 more field"); +} + +// Tests that the filling suggestion label is correct when more than 3 fields +// can be filled. +TEST_F( + AutofillPredictionImprovementsManagerTest, + FillingSuggestion_MoreThanThreeFieldsCanBeFilled_UserPluralAndMoreString) { + autofill::test::FormDescription form_description = { + .fields = { + {.role = autofill::NAME_FIRST, + .heuristic_type = autofill::NAME_FIRST}, + {.role = autofill::NAME_LAST, .heuristic_type = autofill::NAME_LAST}, + {.role = autofill::ADDRESS_HOME_STREET_NAME, + .heuristic_type = autofill::ADDRESS_HOME_STREET_NAME}, + {.role = autofill::ADDRESS_HOME_STATE, + .heuristic_type = autofill::ADDRESS_HOME_STATE, + .form_control_type = autofill::FormControlType::kSelectOne}}}; + autofill::FormData form = autofill::test::GetFormData(form_description); + test_api(*manager_).SetCache(PredictionsByGlobalId{ + {form.fields()[0].global_id(), {u"Jane", u"First name"}}, + {form.fields()[1].global_id(), {u"Doe", u"Last name"}}, + {form.fields()[2].global_id(), {u"Country roads str", u"Street name"}}, + {form.fields()[3].global_id(), {u"33", u"state", u"West Virginia"}}}); + + std::vector<Suggestion> suggestions_to_show; + EXPECT_TRUE( + manager_->MaybeUpdateSuggestions(suggestions_to_show, form.fields()[0], + /*should_add_trigger_suggestion=*/true)); + EXPECT_EQ(suggestions_to_show[0].labels[0][0].value, + u"Fill First name, Last name & 2 more fields"); +} + class AutofillPredictionImprovementsManagerUserFeedbackTest : public AutofillPredictionImprovementsManagerTest, public testing::WithParamInterface<
diff --git a/components/autofill_prediction_improvements_strings.grdp b/components/autofill_prediction_improvements_strings.grdp index 7e5eae2..05e52fe 100644 --- a/components/autofill_prediction_improvements_strings.grdp +++ b/components/autofill_prediction_improvements_strings.grdp
@@ -9,8 +9,17 @@ <message name="IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_ALL_MAIN_TEXT" desc="Suggestion shown when the user focuses a prediction improvements field." translateable="false"> Fill all </message> - <message name="IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_SUGGESTION_AND_MORE" desc="Text displayed as label to indicate more fields will be filled." translateable="false"> - & more + <message name="IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_LABEL_TEXT" desc="Text shown as a label when the user sees a prediction improvements suggestion." translateable="false"> + Fill + </message> + <message name="IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_LABEL_SEPARATOR" desc="The separator character used in the prediction improvements label." translateable="false"> + , ''' + </message> + <message name="IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_SUGGESTION_AND_ONE_MORE_FIELD" desc="Text displayed as label to indicate more fields will be filled." translateable="false"> + & 1 more field + </message> + <message name="IDS_AUTOFILL_PREDICTION_IMPROVEMENTS_FILL_SUGGESTION_AND_N_MORE_FIELDS" desc="Text displayed as label to indicate more fields will be filled." translateable="false"> + & <ph name="N_FIELDS">$1<ex>4</ex></ph> more fields </message> <!-- Save prompt -->
diff --git a/components/browser_ui/media/android/java/src/org/chromium/components/browser_ui/media/MediaNotificationInfoTest.java b/components/browser_ui/media/android/java/src/org/chromium/components/browser_ui/media/MediaNotificationInfoTest.java index 70ba875a..bd7009d3 100644 --- a/components/browser_ui/media/android/java/src/org/chromium/components/browser_ui/media/MediaNotificationInfoTest.java +++ b/components/browser_ui/media/android/java/src/org/chromium/components/browser_ui/media/MediaNotificationInfoTest.java
@@ -90,7 +90,6 @@ assertNotNull(info); // Make sure hashCode() doesn't crash. - int hashValue = info.hashCode(); - assertNotNull(hashValue); + info.hashCode(); } }
diff --git a/components/browser_ui/widget/android/java/res/layout/title_and_description_layout.xml b/components/browser_ui/widget/android/java/res/layout/title_and_description_layout.xml index 0504a27..52d15a98 100644 --- a/components/browser_ui/widget/android/java/res/layout/title_and_description_layout.xml +++ b/components/browser_ui/widget/android/java/res/layout/title_and_description_layout.xml
@@ -5,79 +5,83 @@ found in the LICENSE file. --> -<LinearLayout +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1" - android:orientation="vertical" - android:layout_gravity="center_vertical" > + android:layout_weight="1" > - <LinearLayout - android:layout_width="match_parent" + <ImageView + android:id="@+id/before_title_icon" + android:layout_marginEnd="6dp" + android:layout_marginTop="4dp" + android:layout_marginBottom="2dp" + android:layout_width="16dp" + android:layout_height="16dp" + android:contentDescription="@null" + android:visibility="gone" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@+id/title" /> + + <TextView + android:id="@+id/title" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="start" - android:orientation="horizontal" - tools:ignore="UseCompoundDrawables" > + android:maxLines="1" + android:ellipsize="end" + android:textAppearance="@style/TextAppearance.TextLarge.Primary" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constrainedWidth="true" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toEndOf="@+id/before_title_icon" + app:layout_constraintEnd_toStartOf="@+id/space_anchor" /> - <ImageView - android:id="@+id/icon" - android:layout_marginEnd="6dp" - android:layout_marginTop="4dp" - android:layout_marginBottom="2dp" - android:layout_width="16dp" - android:layout_height="16dp" - android:contentDescription="@null" - android:visibility="gone" /> + <!-- Anchor to ensure the chain terminates without any elements being pushed offscreen. --> + <Space + android:id="@+id/space_anchor" + android:layout_width="0dp" + android:layout_height="match_parent" + app:layout_constraintEnd_toEndOf="parent" /> - <TextView - android:id="@+id/title" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:maxLines="1" - android:ellipsize="end" - android:textAppearance="@style/TextAppearance.TextLarge.Primary" /> - </LinearLayout> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/chip_description" - android:layout_width="match_parent" + <TextView + android:id="@+id/description" + android:layout_gravity="center_vertical|start" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="horizontal"> + android:maxLines="1" + android:ellipsize="end" + android:textAppearance="@style/TextAppearance.TextMedium.Secondary" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintTop_toBottomOf="@+id/title" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@+id/chip" /> - <TextView - android:id="@+id/description" - android:layout_gravity="center_vertical|start" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:maxLines="1" - android:ellipsize="end" - android:textAppearance="@style/TextAppearance.TextMedium.Secondary" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <!-- An optional chip view. Used for history.TODO(b/331856225): Consider adding min_width - to prevent the description view from occupying the whole space. --> - <org.chromium.components.browser_ui.widget.chips.ChipView - android:id="@+id/chip" - android:layout_gravity="center_vertical|start" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:visibility="gone" - app:layout_constrainedWidth="true" - app:layout_constraintBottom_toBottomOf="@+id/description" - app:layout_constraintStart_toEndOf="@+id/description" - app:layout_constraintTop_toTopOf="@+id/description" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0" - style="@style/HistoryAppChip" /> - </androidx.constraintlayout.widget.ConstraintLayout> + <!-- An optional chip view. Used for history. --> + <org.chromium.components.browser_ui.widget.chips.ChipView + android:id="@+id/chip" + android:layout_gravity="center_vertical|start" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:visibility="gone" + app:layout_constrainedWidth="true" + app:layout_constraintTop_toTopOf="@+id/description" + app:layout_constraintBottom_toBottomOf="@+id/description" + app:layout_constraintStart_toEndOf="@+id/description" + app:layout_constraintEnd_toStartOf="@+id/space_anchor" + style="@style/HistoryAppChip" /> <FrameLayout android:id="@+id/custom_content_container" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> -</LinearLayout> + android:layout_height="wrap_content" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/description" /> +</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/selectable_list/SelectableItemViewBaseTest.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/selectable_list/SelectableItemViewBaseTest.java index e28bdd80..89cc040b2 100644 --- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/selectable_list/SelectableItemViewBaseTest.java +++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/selectable_list/SelectableItemViewBaseTest.java
@@ -61,7 +61,7 @@ SelectionDelegate<Integer> selectionDelegate = new SelectionDelegate<>(); mSelectableItemViewBase.setSelectionDelegate(selectionDelegate); - Integer item = new Integer(1); + Integer item = 1; assertNull(mSelectableItemViewBase.getItem()); mSelectableItemViewBase.setItem(item); assertEquals(item, mSelectableItemViewBase.getItem()); @@ -87,7 +87,7 @@ @Test public void testSelection_NullDelegate() { - Integer item = new Integer(1); + Integer item = 1; assertNull(mSelectableItemViewBase.getItem()); mSelectableItemViewBase.setItem(item); assertNull(mSelectableItemViewBase.getItem());
diff --git a/components/cronet/android/api/src/org/chromium/net/apihelpers/ContentTypeParametersParser.java b/components/cronet/android/api/src/org/chromium/net/apihelpers/ContentTypeParametersParser.java index 3394c465..d3a56a9 100644 --- a/components/cronet/android/api/src/org/chromium/net/apihelpers/ContentTypeParametersParser.java +++ b/components/cronet/android/api/src/org/chromium/net/apihelpers/ContentTypeParametersParser.java
@@ -172,7 +172,7 @@ } private static boolean isAscii(char ch) { - return (char) 0 <= ch && ch <= (char) 127; + return ch <= 127; } private static boolean isWhitespace(char c) {
diff --git a/components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleTest.java b/components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleTest.java index 8090371..1af4c5ab 100644 --- a/components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleTest.java +++ b/components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleTest.java
@@ -18,6 +18,6 @@ @Test @SmallTest public void testSimple() throws Exception { - assertThat(1).isEqualTo(1); + assertThat(1 + 1).isEqualTo(2); } }
diff --git a/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/Options.java b/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/Options.java index 74c77bc..09d0176 100644 --- a/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/Options.java +++ b/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/Options.java
@@ -14,29 +14,34 @@ import java.util.Map; /** - * Adding an option here will make it show up in the list of available options. - * Each {@link Option} has the following attributes: + * Adding an option here will make it show up in the list of available options. Each {@link Option} + * has the following attributes: + * * <ul> - * <li>A short name which appears in bold on the options list.</li> - * <li>A description which provides a thorough explanation of what this option does.</li> - * <li>An {@link Action} which is applied on CronetEngine's Builder each time the user hits "Reset - * Engine". </li> <li>A default value, every option must have a default value.</li> + * <li>A short name which appears in bold on the options list. + * <li>A description which provides a thorough explanation of what this option does. + * <li>An {@link Action} which is applied on CronetEngine's Builder each time the user hits "Reset + * Engine". + * <li>A default value, every option must have a default value. * </ul> + * * <b>NOTE</b>: Each option must map to one {@link OptionsIdentifier OptionsIdentifier}. This is * necessary to provide custom implementation for options that does not configure the builders. See * {@link OptionsIdentifier#SLOW_DOWNLOAD} as an example. * - * <p> To add a new option, do the following: + * <p>To add a new option, do the following: + * * <ol> - * <li> Add a new optionIdentifier {@link OptionsIdentifier} </li> - * <li> Inject a new Option instance into your optionIdentifier enum value. </li> - * <li> Implement the logic for the new option within a new {@link Action}. </li> - * <li> If the {@link Action} interface is not enough to satisfy the use-case. Feel free to add - * custom logic, See {@link OptionsIdentifier#SLOW_DOWNLOAD} as an example.</li> - * <li> Restart the APK and verify that your option is working as intended. </li> + * <li>Add a new optionIdentifier {@link OptionsIdentifier} + * <li>Inject a new Option instance into your optionIdentifier enum value. + * <li>Implement the logic for the new option within a new {@link Action}. + * <li>If the {@link Action} interface is not enough to satisfy the use-case. Feel free to add + * custom logic, See {@link OptionsIdentifier#SLOW_DOWNLOAD} as an example. + * <li>Restart the APK and verify that your option is working as intended. * </ol> */ public class Options { + @SuppressWarnings("ImmutableEnumChecker") public enum OptionsIdentifier { MIGRATE_SESSIONS_ON_NETWORK_CHANGE_V2( new BooleanOption( @@ -57,9 +62,9 @@ new BooleanOption( "migrate_sessions_early_v2", "Enable QUIC early session migration. This will make quic send probing" - + " packets when the network is degrading, QUIC will migrate the " - + "sessions to a different network even before the original network " - + "has disconnected.", + + " packets when the network is degrading, QUIC will migrate the" + + " sessions to a different network even before the original network" + + " has disconnected.", new Action<Boolean>() { @Override @OptIn(markerClass = ConnectionMigrationOptions.Experimental.class) @@ -72,7 +77,8 @@ SLOW_DOWNLOAD( new BooleanOption( "Slow Download (10s)", - "Hang the onReadCompleted for 10s before proceeding. This should simulate slow connection.", + "Hang the onReadCompleted for 10s before proceeding. This should simulate" + + " slow connection.", new Action<>() {}, false));
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRule.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRule.java index b1c75f7..240d8a3 100644 --- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRule.java +++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRule.java
@@ -678,6 +678,8 @@ ExperimentalCronetEngine.Builder getCronetEngineBuilder(Context context); } + // Warning should go away once we can use java.util.function.Function. + @SuppressWarnings("ImmutableEnumChecker") public enum CronetImplementation { STATICALLY_LINKED( context ->
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java index 92bd66a..914c621 100644 --- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java +++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
@@ -1813,17 +1813,11 @@ String url = NativeTestServer.getFileURL("/cacheable.txt"); // When cache is disabled, making a request does not write to the cache. - checkRequestCaching( - cronetEngine, url, false, true - /** disable cache */ - ); + checkRequestCaching(cronetEngine, url, false, true); checkRequestCaching(cronetEngine, url, false); // When cache is enabled, the second request is cached. - checkRequestCaching( - cronetEngine, url, false, true - /** disable cache */ - ); + checkRequestCaching(cronetEngine, url, false, true); checkRequestCaching(cronetEngine, url, true); // Shut down the server, next request should have a cached response.
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java index dc544afd..9bde7eb 100644 --- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java +++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
@@ -2875,12 +2875,12 @@ } } - @Test - @SmallTest /** * Open many connections and cancel them right away. This test verifies all internal sockets and * other Closeables are properly closed. See crbug.com/726193. */ + @Test + @SmallTest public void testGzipCancel() throws Exception { String url = NativeTestServer.getFileURL("/gzipped.html"); for (int i = 0; i < 100; i++) { @@ -2912,10 +2912,10 @@ } } + /** Do a HEAD request and get back a 404. */ @Test @SmallTest @RequiresMinApi(8) // JavaUrlRequest fixed in API level 8: crrev.com/499303 - /** Do a HEAD request and get back a 404. */ public void test404Head() throws Exception { TestUrlRequestCallback callback = new TestUrlRequestCallback(); UrlRequest.Builder builder = @@ -2997,12 +2997,12 @@ assertThat(CronetTestUtil.nativeGetTaggedBytes(tag)).isGreaterThan(priorBytes); } - @Test - @SmallTest /** * Initiate many requests concurrently to make sure neither Cronet implementation crashes. * Regression test for https://crbug.com/844031. */ + @Test + @SmallTest public void testManyRequests() throws Exception { String url = NativeTestServer.getMultiRedirectURL(); final int numRequests = 2000;
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java b/components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java index 4191b21..11e51d43 100644 --- a/components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java +++ b/components/cronet/android/test/javatests/src/org/chromium/net/TestUrlRequestCallback.java
@@ -198,7 +198,7 @@ // Termination shouldn't take long. Use 1 min which should be more than enough. mExecutorService.awaitTermination(1, TimeUnit.MINUTES); } catch (InterruptedException e) { - fail("ExecutorService is interrupted while waiting for termination"); + throw new RuntimeException(e); } assertThat(mExecutorService.isTerminated()).isTrue(); }
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java index 1fd392d..75e19256 100644 --- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java +++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java
@@ -88,6 +88,7 @@ @Test @SmallTest + @SuppressWarnings("AddressSelection") public void testOpenConnectionWithProxy() throws Exception { URL url = new URL(NativeTestServer.getEchoMethodURL()); CronetHttpURLStreamHandler streamHandler =
diff --git a/components/embedder_support/android/native_java_unittests/src/org/chromium/components/embedder_support/util/InputStreamUnittest.java b/components/embedder_support/android/native_java_unittests/src/org/chromium/components/embedder_support/util/InputStreamUnittest.java index f1863018..1f1352cd 100644 --- a/components/embedder_support/android/native_java_unittests/src/org/chromium/components/embedder_support/util/InputStreamUnittest.java +++ b/components/embedder_support/android/native_java_unittests/src/org/chromium/components/embedder_support/util/InputStreamUnittest.java
@@ -9,6 +9,7 @@ import java.io.IOException; import java.io.InputStream; +@SuppressWarnings("InputStreamSlowMultibyteRead") class InputStreamUnittest { private InputStreamUnittest() {}
diff --git a/components/facilitated_payments/core/browser/facilitated_payments_manager.cc b/components/facilitated_payments/core/browser/facilitated_payments_manager.cc index f810f95..aa71cc4 100644 --- a/components/facilitated_payments/core/browser/facilitated_payments_manager.cc +++ b/components/facilitated_payments/core/browser/facilitated_payments_manager.cc
@@ -60,11 +60,7 @@ ukm_source_id_ = ukm_source_id; trigger_source_ = TriggerSource::kCopyEvent; // Check whether the domain for the render_frame_host_url is allowlisted. - auto decision = optimization_guide_decider_->CanApplyOptimization( - render_frame_host_url, - optimization_guide::proto::PIX_MERCHANT_ORIGINS_ALLOWLIST, - /*optimization_metadata=*/nullptr); - if (decision != optimization_guide::OptimizationGuideDecision::kTrue) { + if (!IsMerchantAllowlisted(render_frame_host_url)) { // The merchant is not part of the allowlist, ignore the copy event. return; } @@ -79,21 +75,20 @@ void FacilitatedPaymentsManager::RegisterPixAllowlist() const { optimization_guide_decider_->RegisterOptimizationTypes( - {optimization_guide::proto::PIX_PAYMENT_MERCHANT_ALLOWLIST, - optimization_guide::proto::PIX_MERCHANT_ORIGINS_ALLOWLIST}); + {optimization_guide::proto::PIX_MERCHANT_ORIGINS_ALLOWLIST}); } -optimization_guide::OptimizationGuideDecision -FacilitatedPaymentsManager::GetAllowlistCheckResult(const GURL& url) const { +bool FacilitatedPaymentsManager::IsMerchantAllowlisted(const GURL& url) const { // Since the optimization guide decider integration corresponding to PIX // merchant lists are allowlists for the question "Can this site be // optimized?", a match on the allowlist answers the question with "yes". - // Therefore, `kTrue` indicates that `url` is allowed for running PIX code - // detection. If the optimization type was not registered in time when we + // Therefore, `kTrue` indicates that `url` is allowed for detecting PIX code + // on copy events. If the optimization type was not registered in time when we // queried it, it will be `kUnknown`. return optimization_guide_decider_->CanApplyOptimization( - url, optimization_guide::proto::PIX_PAYMENT_MERCHANT_ALLOWLIST, - /*optimization_metadata=*/nullptr); + url, optimization_guide::proto::PIX_MERCHANT_ORIGINS_ALLOWLIST, + /*optimization_metadata=*/nullptr) == + optimization_guide::OptimizationGuideDecision::kTrue; } void FacilitatedPaymentsManager::OnPixCodeValidated(
diff --git a/components/facilitated_payments/core/browser/facilitated_payments_manager.h b/components/facilitated_payments/core/browser/facilitated_payments_manager.h index 7c70c47..2bbbc3e 100644 --- a/components/facilitated_payments/core/browser/facilitated_payments_manager.h +++ b/components/facilitated_payments/core/browser/facilitated_payments_manager.h
@@ -223,8 +223,8 @@ // 1. In the allowlist // 2. Not in the allowlist // 3. Infra for querying is not ready - optimization_guide::OptimizationGuideDecision GetAllowlistCheckResult( - const GURL& url) const; + // Returns true if the result is [1]. + bool IsMerchantAllowlisted(const GURL& url) const; // Called by the utility process after validation of the `pix_code`. If the // utility processes has disconnected (e.g., due to a crash in the validation
diff --git a/components/facilitated_payments/core/browser/facilitated_payments_manager_unittest.cc b/components/facilitated_payments/core/browser/facilitated_payments_manager_unittest.cc index c1e382a..dc0f365 100644 --- a/components/facilitated_payments/core/browser/facilitated_payments_manager_unittest.cc +++ b/components/facilitated_payments/core/browser/facilitated_payments_manager_unittest.cc
@@ -242,7 +242,6 @@ TEST_F(FacilitatedPaymentsManagerTest, RegisterPixAllowlist) { EXPECT_CALL(*optimization_guide_decider_, RegisterOptimizationTypes(testing::ElementsAre( - optimization_guide::proto::PIX_PAYMENT_MERCHANT_ALLOWLIST, optimization_guide::proto::PIX_MERCHANT_ORIGINS_ALLOWLIST))) .Times(1);
diff --git a/components/ip_protection/common/ip_protection_token_manager_impl.cc b/components/ip_protection/common/ip_protection_token_manager_impl.cc index 8823367..389fadf 100644 --- a/components/ip_protection/common/ip_protection_token_manager_impl.cc +++ b/components/ip_protection/common/ip_protection_token_manager_impl.cc
@@ -262,7 +262,9 @@ return; } - VLOG(2) << "IPPATC::OnGotAuthTokens got " << tokens->size() << " tokens"; + VLOG(2) << "IPPATC::OnGotAuthTokens got " << tokens->size() + << " tokens for proxy " + << int(proxy_layer_); try_get_auth_tokens_after_ = base::Time(); RemoveExpiredTokens();
diff --git a/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/SplitCompatEngineTest.java b/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/SplitCompatEngineTest.java index d168f62..ece61a8 100644 --- a/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/SplitCompatEngineTest.java +++ b/components/module_installer/android/junit/src/org/chromium/components/module_installer/engine/SplitCompatEngineTest.java
@@ -86,12 +86,8 @@ // Arrange. String installedModule = "m1"; String uninstalledModule = "m2"; - Set<String> installedModules = - new HashSet<String>() { - { - add(installedModule); - } - }; + Set<String> installedModules = new HashSet<String>(); + installedModules.add(installedModule); doReturn(installedModules).when(mManager).getInstalledModules(); // Act & Assert.
diff --git a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java index d53b337..e8b4249 100644 --- a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java +++ b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java
@@ -509,6 +509,7 @@ } @Override + @SuppressWarnings("LiteProtoToString") public String toString() { List<String> pieces = Arrays.asList(
diff --git a/components/paint_preview/player/android/junit/src/org/chromium/components/paintpreview/player/frame/PlayerFrameMediatorTest.java b/components/paint_preview/player/android/junit/src/org/chromium/components/paintpreview/player/frame/PlayerFrameMediatorTest.java index 76cc7d0..14543ea 100644 --- a/components/paint_preview/player/android/junit/src/org/chromium/components/paintpreview/player/frame/PlayerFrameMediatorTest.java +++ b/components/paint_preview/player/android/junit/src/org/chromium/components/paintpreview/player/frame/PlayerFrameMediatorTest.java
@@ -341,9 +341,7 @@ // we should have only one column. Bitmap[][] bitmapMatrix = mModel.get(PlayerFrameProperties.BITMAP_MATRIX); Assert.assertTrue(Arrays.deepEquals(bitmapMatrix, new Bitmap[4][1])); - Assert.assertEquals( - new ArrayList<Pair<View, Rect>>(), - mModel.get(PlayerFrameProperties.SUBFRAME_VIEWS)); + Assert.assertEquals(List.of(), mModel.get(PlayerFrameProperties.SUBFRAME_VIEWS)); } /**
diff --git a/components/payments/content/android/java/src/org/chromium/components/payments/JniPaymentApp.java b/components/payments/content/android/java/src/org/chromium/components/payments/JniPaymentApp.java index 0bb4fd1..176e0bd5 100644 --- a/components/payments/content/android/java/src/org/chromium/components/payments/JniPaymentApp.java +++ b/components/payments/content/android/java/src/org/chromium/components/payments/JniPaymentApp.java
@@ -235,6 +235,8 @@ mNativeObject = 0; } + // TODO(crbug.com/40286193): Use an explicit destroy() method. + @SuppressWarnings("Finalize") @Override public void finalize() throws Throwable { dismissInstrument();
diff --git a/components/performance_manager/public/scenarios/loading_scenario_observer.h b/components/performance_manager/public/scenarios/loading_scenario_observer.h index cd61194..b68eef62 100644 --- a/components/performance_manager/public/scenarios/loading_scenario_observer.h +++ b/components/performance_manager/public/scenarios/loading_scenario_observer.h
@@ -5,7 +5,6 @@ #ifndef COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_SCENARIOS_LOADING_SCENARIO_OBSERVER_H_ #define COMPONENTS_PERFORMANCE_MANAGER_PUBLIC_SCENARIOS_LOADING_SCENARIO_OBSERVER_H_ -#include "base/numerics/clamped_math.h" #include "base/sequence_checker.h" #include "components/performance_manager/public/graph/graph.h" #include "components/performance_manager/public/graph/page_node.h" @@ -40,9 +39,9 @@ LoadingScenario GetScenario() const; private: - base::ClampedNumeric<size_t> focused_loading_pages_; - base::ClampedNumeric<size_t> visible_loading_pages_; - base::ClampedNumeric<size_t> loading_pages_; + size_t focused_loading_pages_ = 0; + size_t visible_loading_pages_ = 0; + size_t loading_pages_ = 0; }; LoadingScenarioObserver() = default;
diff --git a/components/performance_manager/scenarios/loading_scenario_observer.cc b/components/performance_manager/scenarios/loading_scenario_observer.cc index af68b40..ea734a2 100644 --- a/components/performance_manager/scenarios/loading_scenario_observer.cc +++ b/components/performance_manager/scenarios/loading_scenario_observer.cc
@@ -8,6 +8,7 @@ #include "base/check_op.h" #include "base/notreached.h" +#include "base/numerics/checked_math.h" #include "base/sequence_checker.h" #include "components/performance_manager/public/graph/graph.h" #include "components/performance_manager/public/graph/page_node.h" @@ -31,6 +32,16 @@ NOTREACHED(); } +// Increments `num` in-place, and CHECK's on overflow. +void CheckIncrement(size_t& num) { + num = base::CheckAdd(num, 1).ValueOrDie(); +} + +// Decrements `num` in-place, and CHECK's on underflow. +void CheckDecrement(size_t& num) { + num = base::CheckSub(num, 1).ValueOrDie(); +} + } // namespace LoadingScenario LoadingScenarioObserver::LoadingCounts::GetScenario() const { @@ -49,27 +60,24 @@ void LoadingScenarioObserver::LoadingCounts::IncrementLoadingPageCounts( bool visible, bool focused) { - loading_pages_++; + CheckIncrement(loading_pages_); if (visible) { - visible_loading_pages_++; + CheckIncrement(visible_loading_pages_); } if (focused) { - focused_loading_pages_++; + CheckIncrement(focused_loading_pages_); } } void LoadingScenarioObserver::LoadingCounts::DecrementLoadingPageCounts( bool visible, bool focused) { - CHECK_GT(loading_pages_.RawValue(), 0u); - loading_pages_--; + CheckDecrement(loading_pages_); if (visible) { - CHECK_GT(visible_loading_pages_.RawValue(), 0u); - visible_loading_pages_--; + CheckDecrement(visible_loading_pages_); } if (focused) { - CHECK_GT(focused_loading_pages_.RawValue(), 0u); - focused_loading_pages_--; + CheckDecrement(focused_loading_pages_); } }
diff --git a/components/privacy_sandbox/privacy_sandbox_features.cc b/components/privacy_sandbox/privacy_sandbox_features.cc index fdfe248..44f7ad80 100644 --- a/components/privacy_sandbox/privacy_sandbox_features.cc +++ b/components/privacy_sandbox/privacy_sandbox_features.cc
@@ -148,7 +148,7 @@ BASE_FEATURE(kTrackingProtection3pcdUx, "TrackingProtection3pcdUx", - base::FEATURE_ENABLED_BY_DEFAULT); + base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kFingerprintingProtectionUserBypass, "FingerprintingProtectionUserBypass",
diff --git a/components/resources/OWNERS b/components/resources/OWNERS index cff876a..ec153ba 100644 --- a/components/resources/OWNERS +++ b/components/resources/OWNERS
@@ -13,7 +13,7 @@ per-file offline_pages_resources.grdp=file://components/offline_pages/OWNERS per-file policy_resources.grdp=file://components/policy/OWNERS per-file printing_resources.grdp=file://printing/OWNERS -per-file search_engine_choice_scaled_resources.grdp=file://components/search_engines/search_engine_choice/OWNERS +per-file search_engine_choice_scaled_resources.grdp=file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS per-file security_interstitials_dev_ui_resources.grdp=file://components/security_interstitials/OWNERS per-file security_interstitials_resources.grdp=file://components/security_interstitials/OWNERS per-file sync_driver_resources.grdp=file://components/sync/OWNERS
diff --git a/components/resources/default_100_percent/search_engine_choice/OWNERS b/components/resources/default_100_percent/search_engine_choice/OWNERS index a8ff91d..c7aa42b 100644 --- a/components/resources/default_100_percent/search_engine_choice/OWNERS +++ b/components/resources/default_100_percent/search_engine_choice/OWNERS
@@ -1 +1 @@ -file://components/search_engines/search_engine_choice/OWNERS +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/components/resources/default_200_percent/search_engine_choice/OWNERS b/components/resources/default_200_percent/search_engine_choice/OWNERS index a8ff91d..c7aa42b 100644 --- a/components/resources/default_200_percent/search_engine_choice/OWNERS +++ b/components/resources/default_200_percent/search_engine_choice/OWNERS
@@ -1 +1 @@ -file://components/search_engines/search_engine_choice/OWNERS +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/components/resources/default_300_percent/search_engine_choice/OWNERS b/components/resources/default_300_percent/search_engine_choice/OWNERS index a8ff91d..c7aa42b 100644 --- a/components/resources/default_300_percent/search_engine_choice/OWNERS +++ b/components/resources/default_300_percent/search_engine_choice/OWNERS
@@ -1 +1 @@ -file://components/search_engines/search_engine_choice/OWNERS +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/components/safe_browsing/android/remote_database_manager.cc b/components/safe_browsing/android/remote_database_manager.cc index 525753a..ddb40db 100644 --- a/components/safe_browsing/android/remote_database_manager.cc +++ b/components/safe_browsing/android/remote_database_manager.cc
@@ -55,83 +55,40 @@ // class RemoteSafeBrowsingDatabaseManager::ClientRequest { public: - enum class CallbackType { - BROWSE_URL, - DOWNLOAD_URL, - }; - ClientRequest(Client* client, - CallbackType callback_type, RemoteSafeBrowsingDatabaseManager* db_manager, - const std::vector<GURL>& urls); + const GURL& url); + void OnRequestDone(SBThreatType matched_threat_type, const ThreatMetadata& metadata); - void AddPendingCheck(); // Accessors Client* client() const { return client_; } - const std::vector<GURL>& urls() const { return urls_; } - size_t pending_checks() const { return pending_checks_; } + const GURL& url() const { return url_; } base::WeakPtr<ClientRequest> GetWeakPtr() { return weak_factory_.GetWeakPtr(); } private: - void CompleteCheck(); - raw_ptr<Client, DanglingUntriaged> client_; - CallbackType callback_type_; raw_ptr<RemoteSafeBrowsingDatabaseManager, DanglingUntriaged> db_manager_; - std::vector<GURL> urls_; - size_t pending_checks_ = 0; - SBThreatType most_severe_threat_type_ = SBThreatType::SB_THREAT_TYPE_SAFE; - ThreatMetadata most_severe_metadata_; + GURL url_; base::ElapsedTimer timer_; base::WeakPtrFactory<ClientRequest> weak_factory_{this}; }; RemoteSafeBrowsingDatabaseManager::ClientRequest::ClientRequest( Client* client, - CallbackType callback_type, RemoteSafeBrowsingDatabaseManager* db_manager, - const std::vector<GURL>& urls) - : client_(client), - callback_type_(callback_type), - db_manager_(db_manager), - urls_(urls) {} + const GURL& url) + : client_(client), db_manager_(db_manager), url_(url) {} void RemoteSafeBrowsingDatabaseManager::ClientRequest::OnRequestDone( SBThreatType matched_threat_type, const ThreatMetadata& metadata) { DVLOG(1) << "OnRequestDone took " << timer_.Elapsed().InMilliseconds() - << " ms for client " << client_; - - if (most_severe_threat_type_ == SBThreatType::SB_THREAT_TYPE_SAFE) { - most_severe_threat_type_ = matched_threat_type; - most_severe_metadata_ = metadata; - } - - --pending_checks_; - - if (pending_checks_ == 0) { - CompleteCheck(); - } -} - -void RemoteSafeBrowsingDatabaseManager::ClientRequest::AddPendingCheck() { - ++pending_checks_; -} - -void RemoteSafeBrowsingDatabaseManager::ClientRequest::CompleteCheck() { - switch (callback_type_) { - case CallbackType::BROWSE_URL: - client_->OnCheckBrowseUrlResult(urls_[0], most_severe_threat_type_, - most_severe_metadata_); - break; - case CallbackType::DOWNLOAD_URL: - client_->OnCheckDownloadUrlResult(urls_, most_severe_threat_type_); - break; - } + << " ms for client " << client_ << " and URL " << url_; + client_->OnCheckBrowseUrlResult(url_, matched_threat_type, metadata); UMA_HISTOGRAM_TIMES("SB2.RemoteCall.Elapsed", timer_.Elapsed()); // CancelCheck() will delete *this. db_manager_->CancelCheck(client_); @@ -155,6 +112,7 @@ for (auto itr = current_requests_.begin(); itr != current_requests_.end(); ++itr) { if ((*itr)->client() == client) { + DVLOG(2) << "Canceling check for URL " << (*itr)->url(); current_requests_.erase(itr); return; } @@ -184,14 +142,11 @@ return true; // Safe, continue right away. } - auto req = std::make_unique<ClientRequest>( - client, ClientRequest::CallbackType::BROWSE_URL, this, - std::vector<GURL>{url}); + auto req = std::make_unique<ClientRequest>(client, this, url); DVLOG(1) << "Checking for client " << client << " and URL " << url; - SafeBrowsingApiHandlerBridge::ResponseCallback callback = + auto callback = base::BindOnce(&ClientRequest::OnRequestDone, req->GetWeakPtr()); - req->AddPendingCheck(); switch (check_type) { case CheckBrowseUrlType::kHashDatabase: SafeBrowsingApiHandlerBridge::GetInstance().StartHashDatabaseUrlCheck( @@ -210,45 +165,8 @@ bool RemoteSafeBrowsingDatabaseManager::CheckDownloadUrl( const std::vector<GURL>& url_chain, Client* client) { - DCHECK(ui_task_runner()->RunsTasksInCurrentSequence()); - - if (!enabled_) { - return true; - } - - auto req = std::make_unique<ClientRequest>( - client, ClientRequest::CallbackType::DOWNLOAD_URL, this, url_chain); - - // Must add pending checks in a separate loop so that synchronous responses - // from the SafeBrowsingApiHandlerBridge can't complete the check early. - for (const GURL& url : url_chain) { - if (!CanCheckUrl(url)) { - continue; - } - req->AddPendingCheck(); - } - - if (req->pending_checks() == 0) { - return true; - } - - for (const GURL& url : url_chain) { - if (!CanCheckUrl(url)) { - continue; - } - DVLOG(1) << "Checking for client " << client << " and URL " << url; - auto callback = SafeBrowsingApiHandlerBridge::ResponseCallback( - base::BindOnce(&ClientRequest::OnRequestDone, req->GetWeakPtr())); - SafeBrowsingApiHandlerBridge::GetInstance().StartHashDatabaseUrlCheck( - std::move(callback), url, - CreateSBThreatTypeSet({SBThreatType::SB_THREAT_TYPE_URL_MALWARE, - SBThreatType::SB_THREAT_TYPE_URL_UNWANTED})); - } - - current_requests_.push_back(std::move(req)); - - // Defer the resource load. - return false; + NOTREACHED_IN_MIGRATION(); + return true; } bool RemoteSafeBrowsingDatabaseManager::CheckExtensionIDs( @@ -291,14 +209,11 @@ return true; } - auto req = std::make_unique<ClientRequest>( - client, ClientRequest::CallbackType::BROWSE_URL, this, - std::vector<GURL>{url}); + auto req = std::make_unique<ClientRequest>(client, this, url); DVLOG(1) << "Checking for client " << client << " and URL " << url; - auto callback = SafeBrowsingApiHandlerBridge::ResponseCallback( - base::BindOnce(&ClientRequest::OnRequestDone, req->GetWeakPtr())); - req->AddPendingCheck(); + auto callback = + base::BindOnce(&ClientRequest::OnRequestDone, req->GetWeakPtr()); SafeBrowsingApiHandlerBridge::GetInstance().StartHashDatabaseUrlCheck( std::move(callback), url, CreateSBThreatTypeSet({SBThreatType::SB_THREAT_TYPE_SUBRESOURCE_FILTER, @@ -369,6 +284,7 @@ std::vector<std::unique_ptr<ClientRequest>> to_callback( std::move(current_requests_)); for (const std::unique_ptr<ClientRequest>& req : to_callback) { + DVLOG(1) << "Stopping: Invoking unfinished req for URL " << req->url(); req->OnRequestDone(SBThreatType::SB_THREAT_TYPE_SAFE, ThreatMetadata()); } SafeBrowsingApiHandlerBridge::GetInstance().ClearArtificialDatabase();
diff --git a/components/safe_browsing/android/remote_database_manager_unittest.cc b/components/safe_browsing/android/remote_database_manager_unittest.cc index 846abd26..e992ea5 100644 --- a/components/safe_browsing/android/remote_database_manager_unittest.cc +++ b/components/safe_browsing/android/remote_database_manager_unittest.cc
@@ -76,12 +76,6 @@ is_callback_called_ = true; } - void OnCheckDownloadUrlResult(const std::vector<GURL>& url_chain, - SBThreatType threat_type) override { - EXPECT_EQ(expected_threat_type_, threat_type); - is_callback_called_ = true; - } - bool IsCallbackCalled() { return is_callback_called_; } private: @@ -178,21 +172,4 @@ db_->GetBrowseUrlThreatSource(CheckBrowseUrlType::kHashRealTime)); } -TEST_F(RemoteDatabaseManagerTest, CheckDownloadUrl) { - GURL url("https://example.com"); - GURL referrer_url("https://unrelated.com"); - url_interceptor_->SetSafeBrowsingThreatTypeForUrl(url, - SB_THREAT_TYPE_URL_MALWARE); - url_interceptor_->SetSafeBrowsingThreatTypeForUrl(referrer_url, - SB_THREAT_TYPE_SAFE); - - TestClient client(db_, /*expected_url=*/url, - /*expected_threat_type=*/SB_THREAT_TYPE_URL_MALWARE); - - db_->CheckDownloadUrl({GURL("https://unrelated.com/"), url}, &client); - - task_environment_.RunUntilIdle(); - EXPECT_TRUE(client.IsCallbackCalled()); -} - } // namespace safe_browsing
diff --git a/components/search_engine_choice_strings_grdp/OWNERS b/components/search_engine_choice_strings_grdp/OWNERS index a8ff91d..c7aa42b 100644 --- a/components/search_engine_choice_strings_grdp/OWNERS +++ b/components/search_engine_choice_strings_grdp/OWNERS
@@ -1 +1 @@ -file://components/search_engines/search_engine_choice/OWNERS +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/components/signin/internal/identity_manager/profile_oauth2_token_service_delegate.cc b/components/signin/internal/identity_manager/profile_oauth2_token_service_delegate.cc index 73a381c..e06cd7b 100644 --- a/components/signin/internal/identity_manager/profile_oauth2_token_service_delegate.cc +++ b/components/signin/internal/identity_manager/profile_oauth2_token_service_delegate.cc
@@ -70,6 +70,9 @@ case SourceForRefreshTokenOperation:: kAccountReconcilor_RevokeTokensNotInCookies: return "AccountReconcilor::RevokeTokensNotInCookies"; + case SourceForRefreshTokenOperation:: + kEnterpriseForcedProfileCreation_UserDecline: + return "DiceWebSigninInterceptor::OnEnterpriseProfileCreationResult"; } }
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/base/AccountCapabilities.java b/components/signin/public/android/java/src/org/chromium/components/signin/base/AccountCapabilities.java index d710f7b..e8f6c67c 100644 --- a/components/signin/public/android/java/src/org/chromium/components/signin/base/AccountCapabilities.java +++ b/components/signin/public/android/java/src/org/chromium/components/signin/base/AccountCapabilities.java
@@ -37,7 +37,7 @@ } @VisibleForTesting - public AccountCapabilities(HashMap<String, Boolean> accountCapabilities) { + public AccountCapabilities(Map<String, Boolean> accountCapabilities) { mAccountCapabilities = accountCapabilities; } @@ -49,7 +49,7 @@ Map<String, Integer> capabilityResponses) { assert capabilityResponses.size() == AccountCapabilitiesConstants.SUPPORTED_ACCOUNT_CAPABILITY_NAMES.size(); - HashMap<String, Boolean> capabilities = new HashMap<>(); + Map<String, Boolean> capabilities = new HashMap<>(); for (String capabilityName : AccountCapabilitiesConstants.SUPPORTED_ACCOUNT_CAPABILITY_NAMES) { assert capabilityResponses.containsKey(capabilityName);
diff --git a/components/signin/public/android/junit/src/org/chromium/components/signin/base/AccountCapabilitiesTest.java b/components/signin/public/android/junit/src/org/chromium/components/signin/base/AccountCapabilitiesTest.java index 66a203b..e73a3156 100644 --- a/components/signin/public/android/junit/src/org/chromium/components/signin/base/AccountCapabilitiesTest.java +++ b/components/signin/public/android/junit/src/org/chromium/components/signin/base/AccountCapabilitiesTest.java
@@ -27,6 +27,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.Map; /** Test class for {@link AccountCapabilities}. */ @RunWith(ParameterizedRunner.class) @@ -81,7 +82,7 @@ } /** Populates all capabilities with the given response value. */ - public static HashMap<String, Integer> populateCapabilitiesResponse( + public static Map<String, Integer> populateCapabilitiesResponse( @AccountManagerDelegate.CapabilityResponse int value) { HashMap<String, Integer> response = new HashMap<>(); for (String capabilityName : @@ -182,33 +183,21 @@ @Test @ParameterAnnotations.UseMethodParameter(CapabilitiesTestParams.class) public void testCapabilityResponseException(String capabilityName) { - AccountCapabilities capabilities = new AccountCapabilities(new HashMap<>()); + AccountCapabilities capabilities = new AccountCapabilities(Map.of()); Assert.assertEquals(getCapability(capabilityName, capabilities), Tribool.UNKNOWN); } @Test @ParameterAnnotations.UseMethodParameter(CapabilitiesTestParams.class) public void testCapabilityResponseYes(String capabilityName) { - AccountCapabilities capabilities = - new AccountCapabilities( - new HashMap<String, Boolean>() { - { - put(capabilityName, true); - } - }); + AccountCapabilities capabilities = new AccountCapabilities(Map.of(capabilityName, true)); Assert.assertEquals(getCapability(capabilityName, capabilities), Tribool.TRUE); } @Test @ParameterAnnotations.UseMethodParameter(CapabilitiesTestParams.class) public void testCapabilityResponseNo(String capabilityName) { - AccountCapabilities capabilities = - new AccountCapabilities( - new HashMap<String, Boolean>() { - { - put(capabilityName, false); - } - }); + AccountCapabilities capabilities = new AccountCapabilities(Map.of(capabilityName, false)); Assert.assertEquals(getCapability(capabilityName, capabilities), Tribool.FALSE); }
diff --git a/components/signin/public/base/signin_metrics.h b/components/signin/public/base/signin_metrics.h index 90216fe..a8eb61b 100644 --- a/components/signin/public/base/signin_metrics.h +++ b/components/signin/public/base/signin_metrics.h
@@ -478,8 +478,9 @@ kAccountReconcilor_RevokeTokensNotInCookies = 21, // DEPRECATED on 05/2024 // kDiceResponseHandler_PasswordPromoSignin = 22, + kEnterpriseForcedProfileCreation_UserDecline = 23, - kMaxValue = kAccountReconcilor_RevokeTokensNotInCookies, + kMaxValue = kEnterpriseForcedProfileCreation_UserDecline, }; // Different types of reporting. This is used as a histogram suffix.
diff --git a/components/signin/public/base/signin_switches.cc b/components/signin/public/base/signin_switches.cc index 0550079..501f8235 100644 --- a/components/signin/public/base/signin_switches.cc +++ b/components/signin/public/base/signin_switches.cc
@@ -179,12 +179,6 @@ base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_CHROMEOS_ASH) -// Enables showing the enterprise dialog after every signin into a managed -// account. -BASE_FEATURE(kShowEnterpriseDialogForAllManagedAccountsSignin, - "ShowEnterpriseDialogForAllManagedAccountsSignin", - base::FEATURE_DISABLED_BY_DEFAULT); - // Disables signout for enteprise managed profiles BASE_FEATURE(kDisallowManagedProfileSignout, "DisallowManagedProfileSignout",
diff --git a/components/signin/public/base/signin_switches.h b/components/signin/public/base/signin_switches.h index fd0e55a..688b85a 100644 --- a/components/signin/public/base/signin_switches.h +++ b/components/signin/public/base/signin_switches.h
@@ -158,9 +158,6 @@ #endif // BUILDFLAG(IS_CHROMEOS_ASH) COMPONENT_EXPORT(SIGNIN_SWITCHES) -BASE_DECLARE_FEATURE(kShowEnterpriseDialogForAllManagedAccountsSignin); - -COMPONENT_EXPORT(SIGNIN_SWITCHES) BASE_DECLARE_FEATURE(kDisallowManagedProfileSignout); #if BUILDFLAG(ENABLE_MIRROR) && !BUILDFLAG(IS_IOS)
diff --git a/components/strings/OWNERS b/components/strings/OWNERS index 44ecb6b6..09bc2d1a4 100644 --- a/components/strings/OWNERS +++ b/components/strings/OWNERS
@@ -4,4 +4,4 @@ # official Blink launch process. per-file components_locale_settings_*.xtb=file://third_party/blink/API_OWNERS -per-file search_engine_descriptions_strings_*.xtb=file://components/search_engines/search_engine_choice/OWNERS +per-file search_engine_descriptions_strings_*.xtb=file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/components/sync/service/backend_migrator.h b/components/sync/service/backend_migrator.h index 897c255..af9e385 100644 --- a/components/sync/service/backend_migrator.h +++ b/components/sync/service/backend_migrator.h
@@ -8,6 +8,7 @@ #include <string> #include "base/compiler_specific.h" +#include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h"
diff --git a/components/sync/service/data_type_manager.h b/components/sync/service/data_type_manager.h index 74f43a7c..ee995ce 100644 --- a/components/sync/service/data_type_manager.h +++ b/components/sync/service/data_type_manager.h
@@ -8,19 +8,20 @@ #include <set> #include <string> +#include "base/functional/callback_forward.h" #include "base/values.h" #include "components/sync/base/data_type.h" #include "components/sync/base/sync_stop_metadata_fate.h" #include "components/sync/engine/configure_reason.h" #include "components/sync/model/sync_error.h" -#include "components/sync/service/data_type_controller.h" -#include "components/sync/service/data_type_status_table.h" +#include "components/sync/model/type_entities_count.h" #include "components/sync/service/type_status_map_for_debugging.h" namespace syncer { struct ConfigureContext; class DataTypeConfigurer; +class DataTypeController; struct LocalDataDescription; // This interface is for managing the start up and shut down life cycle @@ -46,7 +47,6 @@ struct ConfigureResult { ConfigureStatus status = ABORTED; DataTypeSet requested_types; - DataTypeStatusTable data_type_status_table; }; virtual ~DataTypeManager() = default; @@ -165,10 +165,7 @@ base::RepeatingCallback<void(const TypeEntitiesCount&)> callback) const = 0; - // Exposes direct access to underlying controllers. Avoid using if possible, - // as DataTypeManager usually offers higher-level APIs. - // TODO(crbug.com/40901755): Remove this getter. - virtual const DataTypeController::TypeMap& GetControllerMap() const = 0; + virtual DataTypeController* GetControllerForTest(DataType type) = 0; }; } // namespace syncer
diff --git a/components/sync/service/data_type_manager_impl.cc b/components/sync/service/data_type_manager_impl.cc index 87b9e6de..b6c705e6 100644 --- a/components/sync/service/data_type_manager_impl.cc +++ b/components/sync/service/data_type_manager_impl.cc
@@ -473,6 +473,11 @@ } } +DataTypeController* DataTypeManagerImpl::GetControllerForTest(DataType type) { + CHECK(base::Contains(controllers_, type)); + return controllers_.at(type).get(); +} + // static DataTypeSet DataTypeManagerImpl::GetDataTypesInState( DataTypeConfigState state, @@ -885,8 +890,7 @@ base::TimeDelta configure_time = base::Time::Now() - last_restart_time_; ConfigureResult result = {.status = status, - .requested_types = preferred_types_, - .data_type_status_table = data_type_status_table_}; + .requested_types = preferred_types_}; const std::string prefix_uma = (last_requested_context_.reason == CONFIGURE_REASON_NEW_CLIENT) @@ -1023,11 +1027,6 @@ } } -const DataTypeController::TypeMap& DataTypeManagerImpl::GetControllerMap() - const { - return controllers_; -} - void DataTypeManagerImpl::TriggerLocalDataMigration(DataTypeSet types) { types.RetainAll(GetDataTypesWithLocalDataBatchUploader()); // Only retain types that are not only preferred but also active, that is,
diff --git a/components/sync/service/data_type_manager_impl.h b/components/sync/service/data_type_manager_impl.h index 63b9924..907a37a5 100644 --- a/components/sync/service/data_type_manager_impl.h +++ b/components/sync/service/data_type_manager_impl.h
@@ -15,6 +15,7 @@ #include "components/sync/service/configure_context.h" #include "components/sync/service/data_type_controller.h" #include "components/sync/service/data_type_manager.h" +#include "components/sync/service/data_type_status_table.h" #include "components/sync/service/model_load_manager.h" namespace syncer { @@ -71,7 +72,7 @@ void GetEntityCountsForDebugging( base::RepeatingCallback<void(const TypeEntitiesCount&)> callback) const override; - const DataTypeController::TypeMap& GetControllerMap() const override; + DataTypeController* GetControllerForTest(DataType type) override; // `ModelLoadManagerDelegate` implementation. void OnAllDataTypesReadyForConfigure() override;
diff --git a/components/sync/service/data_type_manager_impl_unittest.cc b/components/sync/service/data_type_manager_impl_unittest.cc index 898e024..127d33a 100644 --- a/components/sync/service/data_type_manager_impl_unittest.cc +++ b/components/sync/service/data_type_manager_impl_unittest.cc
@@ -62,20 +62,13 @@ MOCK_METHOD(void, OnConfigureStart, (), (override)); }; -MATCHER_P(ConfigureSucceededWithFailedTypes, error_map, "") { +MATCHER(ConfigureSucceeded, "") { if (arg.status != DataTypeManager::OK) { *result_listener << "Status not OK: " << DataTypeManager::ConfigureStatusToString(arg.status); return false; } - return testing::ExplainMatchResult( - error_map, arg.data_type_status_table.GetAllErrors(), result_listener); -} - -MATCHER(ConfigureSucceeded, "") { - return testing::ExplainMatchResult( - ConfigureSucceededWithFailedTypes(testing::IsEmpty()), arg, - result_listener); + return true; } MATCHER(ConfigureAborted, "") { @@ -261,11 +254,8 @@ // been previously added via InitDataTypeManager(). FakeDataTypeController* GetController(DataType data_type) const { CHECK(dtm_); - auto it = dtm_->GetControllerMap().find(data_type); - if (it == dtm_->GetControllerMap().end()) { - return nullptr; - } - return static_cast<FakeDataTypeController*>(it->second.get()); + return static_cast<FakeDataTypeController*>( + dtm_->GetControllerForTest(data_type)); } // Gets the batch uploader for the given type, which should have @@ -469,12 +459,13 @@ // Step 4. EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(PASSWORDS, IsCryptoError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({PASSWORDS}); EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state()); EXPECT_EQ(DataTypeSet(), FinishDownload()); // Control types. EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); + EXPECT_FALSE(dtm_->GetActiveDataTypes().Has(PASSWORDS)); + EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(PASSWORDS)->state()); // Step 5. dtm_->Stop(SyncStopMetadataFate::KEEP_METADATA); @@ -981,8 +972,7 @@ // failure. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsDataTypeError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); // Initially only PRIORITY_PREFERENCES is configured. Configure({BOOKMARKS, PRIORITY_PREFERENCES}); @@ -1040,13 +1030,13 @@ // Bookmarks is never started due to failing preconditions. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsUnreadyError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS}); EXPECT_EQ(DataTypeSet(), FinishDownload()); - EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); + EXPECT_FALSE(dtm_->GetActiveDataTypes().Has(BOOKMARKS)); + EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); EXPECT_EQ(0U, configurer_.connected_types().size()); // Bookmarks should start normally now. @@ -1079,14 +1069,14 @@ // Bookmarks is never started due to failing preconditions. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsPolicyError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS}); EXPECT_EQ(DataTypeSet(), FinishDownload()); - EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); + EXPECT_FALSE(dtm_->GetActiveDataTypes().Has(BOOKMARKS)); + EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); EXPECT_EQ(0U, configurer_.connected_types().size()); EXPECT_EQ(1, GetController(BOOKMARKS)->model()->clear_metadata_count()); @@ -1102,8 +1092,7 @@ // Bookmarks is never started due to failing preconditions. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsUnreadyError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS}); // Second Configure sets a flag to perform reconfiguration after the first one @@ -1116,8 +1105,9 @@ // Reconfiguration should update unready errors. Bookmarks shouldn't start. EXPECT_EQ(DataTypeSet(), FinishDownload()); EXPECT_EQ(DataTypeSet(), FinishDownload()); // regular types - EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); + EXPECT_FALSE(dtm_->GetActiveDataTypes().Has(BOOKMARKS)); + EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); EXPECT_EQ(0U, configurer_.connected_types().size()); } @@ -1129,13 +1119,13 @@ // Bookmarks is never started due to failing preconditions. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsUnreadyError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS}); EXPECT_EQ(DataTypeSet(), FinishDownload()); - ASSERT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); + ASSERT_FALSE(dtm_->GetActiveDataTypes().Has(BOOKMARKS)); + ASSERT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); ASSERT_EQ(0U, configurer_.connected_types().size()); // Bookmarks should start normally now. @@ -1152,6 +1142,8 @@ EXPECT_EQ(AddControlTypesTo({BOOKMARKS}), FinishDownload()); EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); + EXPECT_TRUE(dtm_->GetActiveDataTypes().Has(BOOKMARKS)); + EXPECT_EQ(DataTypeController::RUNNING, GetController(BOOKMARKS)->state()); EXPECT_EQ(1U, configurer_.connected_types().size()); } @@ -1166,17 +1158,16 @@ // Both types are never started due to failing preconditions. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, - OnConfigureDone(ConfigureSucceededWithFailedTypes( - UnorderedElementsAre(Pair(BOOKMARKS, IsUnreadyError()), - Pair(PREFERENCES, IsUnreadyError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS, PREFERENCES}); EXPECT_EQ(DataTypeSet(), FinishDownload()); + ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); + ASSERT_FALSE(dtm_->GetActiveDataTypes().Has(BOOKMARKS)); + ASSERT_FALSE(dtm_->GetActiveDataTypes().Has(PREFERENCES)); ASSERT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); ASSERT_EQ(DataTypeController::NOT_RUNNING, GetController(PREFERENCES)->state()); - ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); ASSERT_EQ(0U, configurer_.connected_types().size()); // Both types should start normally now. @@ -1215,10 +1206,7 @@ // Both types are never started due to failing preconditions. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, - OnConfigureDone(ConfigureSucceededWithFailedTypes( - UnorderedElementsAre(Pair(BOOKMARKS, IsUnreadyError()), - Pair(PREFERENCES, IsUnreadyError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS, PREFERENCES}); EXPECT_EQ(DataTypeSet(), FinishDownload()); @@ -1238,9 +1226,7 @@ GetController(PREFERENCES)->state()); // Set the expectations for the reconfiguration - just prefs are unready now. - EXPECT_CALL(observer_, - OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(PREFERENCES, IsUnreadyError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); EXPECT_EQ(DataTypeSet(), FinishDownload()); EXPECT_EQ(AddControlTypesTo({BOOKMARKS}), FinishDownload()); @@ -1258,8 +1244,7 @@ // Bookmarks is never started due to failing preconditions. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsUnreadyError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS}); EXPECT_EQ(DataTypeSet(), FinishDownload()); @@ -1303,13 +1288,13 @@ // Bookmarks is never started due to hitting a model load error. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsDataTypeError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS}); EXPECT_EQ(DataTypeSet(), FinishDownload()); // No need to finish the download of BOOKMARKS since it was never started. EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); + EXPECT_FALSE(dtm_->GetActiveDataTypes().Has(BOOKMARKS)); EXPECT_EQ(DataTypeController::FAILED, GetController(BOOKMARKS)->state()); EXPECT_EQ(0U, configurer_.connected_types().size()); @@ -1337,11 +1322,11 @@ EXPECT_CALL(observer_, OnConfigureStart()); Configure({BOOKMARKS, PREFERENCES}); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsDataTypeError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); EXPECT_EQ(DataTypeSet(), FinishDownload()); EXPECT_EQ(AddControlTypesTo({PREFERENCES}), FinishDownload()); + EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); EXPECT_TRUE(dtm_->GetActiveDataTypes().Has(PREFERENCES)); EXPECT_FALSE(dtm_->GetActiveDataTypes().Has(BOOKMARKS)); @@ -1673,11 +1658,12 @@ // Bookmarks is never started due to failing preconditions. testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsPolicyError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS}); - EXPECT_EQ(DataTypeSet(), FinishDownload()); + ASSERT_EQ(DataTypeSet(), FinishDownload()); + ASSERT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); + // No need to finish the download of BOOKMARKS since it was never started. ASSERT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state()); @@ -1701,8 +1687,7 @@ ModelError(FROM_HERE, "test error")); ASSERT_EQ(DataTypeController::FAILED, GetController(BOOKMARKS)->state()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsDataTypeError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); // Data type error should cause re-configuration. task_environment_.RunUntilIdle(); @@ -1727,8 +1712,7 @@ testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsDataTypeError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); Configure({BOOKMARKS, PREFERENCES}); @@ -1843,8 +1827,7 @@ ASSERT_EQ(GetController(BOOKMARKS)->state(), DataTypeController::FAILED); EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsDataTypeError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); // BOOKMARKS should not be started since it is in a FAILED state. Configure({BOOKMARKS}); @@ -1877,8 +1860,7 @@ testing::InSequence seq; EXPECT_CALL(observer_, OnConfigureStart()); - EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceededWithFailedTypes( - ElementsAre(Pair(BOOKMARKS, IsDataTypeError()))))); + EXPECT_CALL(observer_, OnConfigureDone(ConfigureSucceeded())); // BOOKMARKS should not be started since it is in a FAILED state. Configure({BOOKMARKS});
diff --git a/components/sync/service/sync_service_impl.cc b/components/sync/service/sync_service_impl.cc index 3590f8f..b72e1e5c 100644 --- a/components/sync/service/sync_service_impl.cc +++ b/components/sync/service/sync_service_impl.cc
@@ -459,15 +459,20 @@ } DataTypeSet SyncServiceImpl::GetRegisteredDataTypesForTest() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + CHECK_IS_TEST(); return data_type_manager_->GetRegisteredDataTypes(); } bool SyncServiceImpl::HasAnyDatatypeErrorForTest(DataTypeSet types) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - for (auto type : types) { - auto it = data_type_error_map_.find(type); - if (it != data_type_error_map_.end() && - it->second.error_type() == syncer::SyncError::DATATYPE_ERROR) { + CHECK_IS_TEST(); + CHECK(data_type_manager_); + + for (DataType type : types) { + DataTypeController* controller = + data_type_manager_->GetControllerForTest(type); // IN-TEST + if (controller && controller->state() == DataTypeController::FAILED) { return true; } } @@ -477,12 +482,14 @@ void SyncServiceImpl::GetThrottledDataTypesForTest( base::OnceCallback<void(DataTypeSet)> cb) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + CHECK_IS_TEST(); + if (!engine_ || !engine_->IsInitialized()) { std::move(cb).Run(DataTypeSet()); return; } - engine_->GetThrottledDataTypesForTest(std::move(cb)); + engine_->GetThrottledDataTypesForTest(std::move(cb)); // IN-TEST } // static @@ -1239,7 +1246,6 @@ void SyncServiceImpl::OnConfigureDone( const DataTypeManager::ConfigureResult& result) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - data_type_error_map_ = result.data_type_status_table.GetAllErrors(); DVLOG(1) << "SyncServiceImpl::OnConfigureDone called with status: " << result.status; @@ -1493,17 +1499,18 @@ SyncClient* SyncServiceImpl::GetSyncClientForTest() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + CHECK_IS_TEST(); return sync_client_.get(); } void SyncServiceImpl::ReportDataTypeErrorForTest(DataType type) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); CHECK_IS_TEST(); - CHECK(data_type_manager_->GetControllerMap().find(type) != - data_type_manager_->GetControllerMap().end()); - data_type_manager_->GetControllerMap() - .find(type) - ->second->ReportBridgeErrorForTest(); // IN-TEST + + DataTypeController* controller = + data_type_manager_->GetControllerForTest(type); // IN-TEST + CHECK(controller); + controller->ReportBridgeErrorForTest(); // IN-TEST } void SyncServiceImpl::AddObserver(SyncServiceObserver* observer) { @@ -1720,13 +1727,15 @@ void SyncServiceImpl::HasUnsyncedItemsForTest( base::OnceCallback<void(bool)> cb) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + CHECK_IS_TEST(); DCHECK(engine_); DCHECK(engine_->IsInitialized()); - engine_->HasUnsyncedItemsForTest(std::move(cb)); + engine_->HasUnsyncedItemsForTest(std::move(cb)); // IN-TEST } BackendMigrator* SyncServiceImpl::GetBackendMigratorForTest() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + CHECK_IS_TEST(); return migrator_.get(); } @@ -2112,11 +2121,13 @@ bool SyncServiceImpl::IsRetryingAccessTokenFetchForTest() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return auth_manager_->IsRetryingAccessTokenFetchForTest(); + CHECK_IS_TEST(); + return auth_manager_->IsRetryingAccessTokenFetchForTest(); // IN-TEST } std::string SyncServiceImpl::GetAccessTokenForTest() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + CHECK_IS_TEST(); return auth_manager_->access_token(); } @@ -2159,7 +2170,7 @@ // If a previous request (with the wrong callback) already failed, the next // one would be backed off, which breaks tests. So reset the backoff. - auth_manager_->ResetRequestAccessTokenBackoffForTest(); + auth_manager_->ResetRequestAccessTokenBackoffForTest(); // IN-TEST create_http_post_provider_factory_cb_ = create_http_post_provider_factory_cb; @@ -2176,6 +2187,7 @@ SyncEncryptionHandler::Observer* SyncServiceImpl::GetEncryptionObserverForTest() { + CHECK_IS_TEST(); return &crypto_; } @@ -2250,6 +2262,7 @@ DataTypeSet types, base::OnceCallback<void(std::map<DataType, LocalDataDescription>)> callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Some code paths in GetLocalDataDescriptionsImpl() are synchronous, e.g. // if `types` have synchronous DataTypeLocalDataBatchUploader implementations. // Having an API that is sometime sync and sometimes async can be unexpected
diff --git a/components/sync/service/sync_service_impl.h b/components/sync/service/sync_service_impl.h index 59b8e785..59fb52c8 100644 --- a/components/sync/service/sync_service_impl.h +++ b/components/sync/service/sync_service_impl.h
@@ -466,10 +466,6 @@ // an action set on it. SyncProtocolError last_actionable_error_; - // Tracks the set of failed data types (those that encounter an error - // or must delay loading for some reason). - DataTypeStatusTable::TypeErrorMap data_type_error_map_; - CreateHttpPostProviderFactory create_http_post_provider_factory_cb_; std::unique_ptr<SyncStoppedReporter> sync_stopped_reporter_;
diff --git a/components/sync/test/data_type_manager_mock.h b/components/sync/test/data_type_manager_mock.h index 8fa49b0..3daed8b3 100644 --- a/components/sync/test/data_type_manager_mock.h +++ b/components/sync/test/data_type_manager_mock.h
@@ -5,7 +5,7 @@ #ifndef COMPONENTS_SYNC_TEST_DATA_TYPE_MANAGER_MOCK_H_ #define COMPONENTS_SYNC_TEST_DATA_TYPE_MANAGER_MOCK_H_ -#include "base/functional/callback_forward.h" +#include "base/functional/callback.h" #include "components/sync/model/sync_error.h" #include "components/sync/service/data_type_manager.h" #include "components/sync/service/local_data_description.h" @@ -71,10 +71,10 @@ GetEntityCountsForDebugging, (base::RepeatingCallback<void(const TypeEntitiesCount&)>), (const override)); - MOCK_METHOD(const DataTypeController::TypeMap&, - GetControllerMap, - (), - (const override)); + MOCK_METHOD(DataTypeController*, + GetControllerForTest, + (DataType type), + (override)); private: DataTypeManager::ConfigureResult result_;
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc index 9e0c3bd..0fc8443 100644 --- a/components/viz/common/features.cc +++ b/components/viz/common/features.cc
@@ -34,6 +34,10 @@ "AndroidBrowserControlsInViz", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kAndroidBcivWithSimpleScheduler, + "AndroidBcivWithSimpleScheduler", + base::FEATURE_DISABLED_BY_DEFAULT); + BASE_FEATURE(kAndroidBcivWithSuppression, "AndroidBcivWithSuppression", base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/components/viz/common/features.h b/components/viz/common/features.h index 2cb0335..414a4dc 100644 --- a/components/viz/common/features.h +++ b/components/viz/common/features.h
@@ -19,6 +19,7 @@ namespace features { #if BUILDFLAG(IS_ANDROID) +VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kAndroidBcivWithSimpleScheduler); VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kAndroidBcivWithSuppression); VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kAndroidBcivZeroBrowserFrames); VIZ_COMMON_EXPORT BASE_DECLARE_FEATURE(kAndroidBrowserControlsInViz);
diff --git a/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc b/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc index c715f0a6..da234f8 100644 --- a/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc +++ b/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc
@@ -1107,7 +1107,7 @@ if (capture_texture_results) { TRACE_EVENT("gpu.capture", "PopulateBlitRequest"); - auto& mailbox_holder = frame_capture.frame->mailbox_holder(0); + auto mailbox_holder = frame_capture.frame->mailbox_holder(0); // TODO(crbug.com/41350322): change the capturer to only request the // parts of the frame that have changed whenever possible.
diff --git a/content/browser/accessibility/browser_accessibility_manager_android.cc b/content/browser/accessibility/browser_accessibility_manager_android.cc index eb58f7e1..69f085c 100644 --- a/content/browser/accessibility/browser_accessibility_manager_android.cc +++ b/content/browser/accessibility/browser_accessibility_manager_android.cc
@@ -423,7 +423,7 @@ } void BrowserAccessibilityManagerAndroid::SendLocationChangeEvents( - const std::vector<ui::AXLocationChanges>& changes) { + const std::vector<ui::AXLocationChange>& changes) { // Android is not very efficient at handling notifications, and location // changes in particular are frequent and not time-critical. If a lot of // nodes changed location, just send a single notification after a short
diff --git a/content/browser/accessibility/browser_accessibility_manager_android.h b/content/browser/accessibility/browser_accessibility_manager_android.h index 3a9097fd..86ae5ab 100644 --- a/content/browser/accessibility/browser_accessibility_manager_android.h +++ b/content/browser/accessibility/browser_accessibility_manager_android.h
@@ -104,7 +104,7 @@ // BrowserAccessibilityManager overrides. ui::BrowserAccessibility* GetFocus() const override; void SendLocationChangeEvents( - const std::vector<ui::AXLocationChanges>& changes) override; + const std::vector<ui::AXLocationChange>& changes) override; ui::AXNode* RetargetForEvents(ui::AXNode* node, RetargetEventType type) const override; void FireBlinkEvent(ax::mojom::Event event_type,
diff --git a/content/browser/accessibility/cross_platform_accessibility_browsertest.cc b/content/browser/accessibility/cross_platform_accessibility_browsertest.cc index 1048796..ba330fb9 100644 --- a/content/browser/accessibility/cross_platform_accessibility_browsertest.cc +++ b/content/browser/accessibility/cross_platform_accessibility_browsertest.cc
@@ -621,6 +621,188 @@ } IN_PROC_BROWSER_TEST_F(CrossPlatformAccessibilityBrowserTest, + EnsureVerticalScrollSendScrollUpdatesOnly) { + LoadInitialAccessibilityTreeFromHtml(R"HTML( + <!DOCTYPE html> + <html> + <head> + <style> + .container { + padding: 100px; + height: 900px; + overflow: scroll; + } + + .bigbutton { + display: block; + width: 600px; + height: 600px; + } + </style> + </head> + <body> + <div id="container" class="container" role="group"> + <button class="bigbutton">One</button> + <button class="bigbutton">Two</button> + <button class="bigbutton">Three</button> + </div> + </body> + </html>)HTML"); + + WaitForAccessibilityTreeToContainNodeWithName(shell()->web_contents(), "One"); + + const ui::BrowserAccessibility* root = + GetManager()->GetBrowserAccessibilityRoot(); + ASSERT_EQ(1U, root->PlatformChildCount()); + const ui::BrowserAccessibility* container = root->PlatformGetChild(0); + + EXPECT_EQ(ax::mojom::Role::kGroup, container->GetRole()); + ASSERT_EQ(3U, container->PlatformChildCount()); + EXPECT_EQ(container->GetIntAttribute(ax::mojom::IntAttribute::kScrollY), 0); + EXPECT_FALSE(container->PlatformGetChild(0)->IsOffscreen()); + EXPECT_TRUE(container->PlatformGetChild(2)->IsOffscreen()); + + // Even though SCROLL_VERTICAL_POSITION_CHANGED looks like a Blink event, it + // is not actually fired by Blink. Its now fired in the browser process. + AccessibilityNotificationWaiter waiter1( + shell()->web_contents(), ui::kAXModeComplete, + ui::AXEventGenerator::Event::SCROLL_VERTICAL_POSITION_CHANGED); + + // Ensure a normal serialization doesn't happen. + // When something like only locations change in a document. We want to avoid + // full-scale serialization as it's not required. A lightweight locations-only + // serialization already occurs. This check below ensures a full serialization + // doesn't occur. Marking objects as dirty is pretty expensive and in + // cases of scroll changes, we don't need it while we already know what + // changed. + bool received_event = false; + base::RunLoop run_loop; + RenderFrameHostImpl* rfh_impl = static_cast<RenderFrameHostImpl*>( + shell()->web_contents()->GetPrimaryMainFrame()); + rfh_impl->SetAccessibilityCallbackForTesting(base::BindLambdaForTesting( + [&](RenderFrameHostImpl* rfhi, ax::mojom::Event event_type, + int event_target_id) { + received_event = true; + run_loop.Quit(); + })); + + // Scroll the container to a location and expect a scroll update with new + // scroll. + ExecuteScript("document.querySelector('#container').scrollTop = 900;"); + ASSERT_TRUE(waiter1.WaitForNotification()); + EXPECT_EQ(container->GetIntAttribute(ax::mojom::IntAttribute::kScrollY), 900); + EXPECT_TRUE(container->PlatformGetChild(0)->IsOffscreen()); + EXPECT_FALSE(container->PlatformGetChild(2)->IsOffscreen()); + + // Since we're expecting NO calls, we need a timer to avoid waiting too long. + // Five seconds should be enough to fail on some builds. It's ok if test + // passes incorrectly on slow ones. Waiting for (30 seconds) will + // cost a lot of wait-time. + base::OneShotTimer quit_timer; + quit_timer.Start(FROM_HERE, base::Milliseconds(5000), + run_loop.QuitWhenIdleClosure()); + run_loop.Run(); + + ASSERT_FALSE(received_event) << "Received accessibility event when scroll " + "changes shouldn't mark anything as dirty."; +} + +IN_PROC_BROWSER_TEST_F(CrossPlatformAccessibilityBrowserTest, + EnsureHorizontalScrollSendScrollUpdatesOnly) { + LoadInitialAccessibilityTreeFromHtml(R"HTML( + <!DOCTYPE html> + <html> + <head> + <style> + .container { + padding: 100px; + height: 900px; + overflow: scroll; + } + + .inner { + width: 2000px; + } + + .bigbutton { + display:inline-block; + width: 600px; + height: 600px; + } + </style> + </head> + <body> + <div id="container" class="container"> + <div class="inner"> + <button class="bigbutton">One</button> + <button class="bigbutton">Two</button> + <button class="bigbutton">Three</button> + </div> + </div> + </body> + </html>)HTML"); + + WaitForAccessibilityTreeToContainNodeWithName(shell()->web_contents(), "One"); + + const ui::BrowserAccessibility* root = + GetManager()->GetBrowserAccessibilityRoot(); + ASSERT_EQ(1U, root->PlatformChildCount()); + const ui::BrowserAccessibility* container = root->PlatformGetChild(0); + + EXPECT_EQ(ax::mojom::Role::kGenericContainer, container->GetRole()); + ASSERT_EQ(1U, container->PlatformChildCount()); + EXPECT_EQ(container->GetIntAttribute(ax::mojom::IntAttribute::kScrollX), 0); + const ui::BrowserAccessibility* parentOfItems = + container->PlatformGetChild(0); + EXPECT_FALSE(parentOfItems->PlatformGetChild(0)->IsOffscreen()); + EXPECT_TRUE(parentOfItems->PlatformGetChild(2)->IsOffscreen()); + + // Even though SCROLL_HORIZONTAL_POSITION_CHANGED looks like a Blink event, it + // is not actually fired by Blink. Its now fired in the browser process. + AccessibilityNotificationWaiter waiter1( + shell()->web_contents(), ui::kAXModeComplete, + ui::AXEventGenerator::Event::SCROLL_HORIZONTAL_POSITION_CHANGED); + + // Ensure a normal serialization doesn't happen. + // When something like only locations change in a document. We want to avoid + // full-scale serialization as it's not required. A lightweight locations-only + // serialization already occurs. This check below ensures a full serialization + // doesn't occur. Marking objects as dirty is pretty expensive and in + // cases of scroll changes, we don't need it while we already know what + // changed. + bool received_event = false; + base::RunLoop run_loop; + RenderFrameHostImpl* rfh_impl = static_cast<RenderFrameHostImpl*>( + shell()->web_contents()->GetPrimaryMainFrame()); + rfh_impl->SetAccessibilityCallbackForTesting(base::BindLambdaForTesting( + [&](RenderFrameHostImpl* rfhi, ax::mojom::Event event_type, + int event_target_id) { + received_event = true; + run_loop.Quit(); + })); + + // Scroll the container to a location and expect a scroll update with new + // scroll. + ExecuteScript("document.querySelector('#container').scrollLeft = 900;"); + ASSERT_TRUE(waiter1.WaitForNotification()); + EXPECT_EQ(container->GetIntAttribute(ax::mojom::IntAttribute::kScrollX), 900); + EXPECT_TRUE(parentOfItems->PlatformGetChild(0)->IsOffscreen()); + EXPECT_FALSE(parentOfItems->PlatformGetChild(2)->IsOffscreen()); + + // Since we're expecting NO calls, we need a timer to avoid waiting too long. + // Five seconds should be enough to fail on some builds. It's ok if test + // passes incorrectly on slow ones. Waiting for (30 seconds) will + // cost a lot of wait-time. + base::OneShotTimer quit_timer; + quit_timer.Start(FROM_HERE, base::Milliseconds(5000), + run_loop.QuitWhenIdleClosure()); + run_loop.Run(); + + ASSERT_FALSE(received_event) << "Received accessibility event when scroll " + "changes shouldn't mark anything as dirty."; +} + +IN_PROC_BROWSER_TEST_F(CrossPlatformAccessibilityBrowserTest, PlatformIframeAccessibility) { LoadInitialAccessibilityTreeFromHtml(R"HTML( <!DOCTYPE html>
diff --git a/content/browser/accessibility/render_accessibility_host.cc b/content/browser/accessibility/render_accessibility_host.cc index 952a94a..468d308 100644 --- a/content/browser/accessibility/render_accessibility_host.cc +++ b/content/browser/accessibility/render_accessibility_host.cc
@@ -25,6 +25,7 @@ void RenderAccessibilityHost::HandleAXEvents( const ui::AXUpdatesAndEvents& updates_and_events, + const ui::AXLocationAndScrollUpdates& location_and_scroll_updates, uint32_t reset_token, HandleAXEventsCallback callback) { NOTREACHED() << "Non-const ref version of this method should be used as a " @@ -33,6 +34,7 @@ void RenderAccessibilityHost::HandleAXEvents( ui::AXUpdatesAndEvents& updates_and_events, + ui::AXLocationAndScrollUpdates& location_and_scroll_updates, uint32_t reset_token, HandleAXEventsCallback callback) { // Post the HandleAXEvents task onto the UI thread, and then when that @@ -42,13 +44,21 @@ FROM_HERE, base::BindOnce(&RenderFrameHostImpl::HandleAXEvents, render_frame_host_impl_, tree_id_, - std::move(updates_and_events), reset_token, + std::move(updates_and_events), + std::move(location_and_scroll_updates), reset_token, mojo::GetBadMessageCallback()), std::move(callback)); } void RenderAccessibilityHost::HandleAXLocationChanges( - std::vector<blink::mojom::LocationChangesPtr> changes, + const ui::AXLocationAndScrollUpdates& changes, + uint32_t reset_token) { + NOTREACHED() << "Non-const ref version of this method should be used as a " + "performance optimization."; +} + +void RenderAccessibilityHost::HandleAXLocationChanges( + ui::AXLocationAndScrollUpdates& changes, uint32_t reset_token) { GetUIThreadTaskRunner({})->PostTask( FROM_HERE, base::BindOnce(&RenderFrameHostImpl::HandleAXLocationChanges,
diff --git a/content/browser/accessibility/render_accessibility_host.h b/content/browser/accessibility/render_accessibility_host.h index 75d0ea5ce..e460b57 100644 --- a/content/browser/accessibility/render_accessibility_host.h +++ b/content/browser/accessibility/render_accessibility_host.h
@@ -13,6 +13,7 @@ #include "mojo/public/cpp/bindings/receiver_set.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "third_party/blink/public/mojom/render_accessibility.mojom.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_tree_id.h" #include "ui/accessibility/mojom/ax_updates_and_events.mojom.h" @@ -51,16 +52,22 @@ ~RenderAccessibilityHost() override; - void HandleAXEvents(const ui::AXUpdatesAndEvents& updates_and_events, - uint32_t reset_token, - HandleAXEventsCallback callback) override; - void HandleAXEvents(ui::AXUpdatesAndEvents& updates_and_events, - uint32_t reset_token, - HandleAXEventsCallback callback) override; + void HandleAXEvents( + const ui::AXUpdatesAndEvents& updates_and_events, + const ui::AXLocationAndScrollUpdates& location_and_scroll_updates, + uint32_t reset_token, + HandleAXEventsCallback callback) override; + void HandleAXEvents( + ui::AXUpdatesAndEvents& updates_and_events, + ui::AXLocationAndScrollUpdates& location_and_scroll_updates, + uint32_t reset_token, + HandleAXEventsCallback callback) override; - void HandleAXLocationChanges( - std::vector<blink::mojom::LocationChangesPtr> changes, - uint32_t reset_token) override; + void HandleAXLocationChanges(const ui::AXLocationAndScrollUpdates& changes, + uint32_t reset_token) override; + + void HandleAXLocationChanges(ui::AXLocationAndScrollUpdates& changes, + uint32_t reset_token) override; private: base::WeakPtr<RenderFrameHostImpl> render_frame_host_impl_;
diff --git a/content/browser/back_forward_cache_internal_browsertest.cc b/content/browser/back_forward_cache_internal_browsertest.cc index a4fc15674..c461dfaa 100644 --- a/content/browser/back_forward_cache_internal_browsertest.cc +++ b/content/browser/back_forward_cache_internal_browsertest.cc
@@ -44,6 +44,7 @@ #include "net/test/embedded_test_server/controllable_http_response.h" #include "third_party/blink/public/common/features.h" #include "ui/accessibility/ax_action_data.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_node_id_forward.h" #include "ui/accessibility/platform/browser_accessibility.h" @@ -3848,7 +3849,8 @@ // in the same task of |HandleAXEventsForTests()| and and result in a test // fail. rfh_a->HandleAXEventsForTests(rfh_a->GetAXTreeID(), - std::move(updates_and_events)); + std::move(updates_and_events), + ui::AXLocationAndScrollUpdates()); // Reset the callback before restoring the page so that we will not fail when // events are generated. @@ -3941,20 +3943,20 @@ &location_change_counter_for_testing)); // Generate a location change event. - std::vector<blink::mojom::LocationChangesPtr> changes_1; + ui::AXLocationAndScrollUpdates changes_1; ui::AXRelativeBounds relative_bounds_1; relative_bounds_1.bounds = gfx::RectF(/*x=*/1, /*y=*/2, /*width=*/3, /*height=*/4); - changes_1.push_back(blink::mojom::LocationChanges::New(0, relative_bounds_1)); + changes_1.location_changes.emplace_back(0, relative_bounds_1); rfh_a->HandleAXLocationChanges(rfh_a->GetAXTreeID(), std::move(changes_1), /*reset_token=*/1, {}); // Generate another location change event. - std::vector<blink::mojom::LocationChangesPtr> changes_2; + ui::AXLocationAndScrollUpdates changes_2; ui::AXRelativeBounds relative_bounds_2; relative_bounds_2.bounds = gfx::RectF(/*x=*/2, /*y=*/3, /*width=*/4, /*height=*/5); - changes_2.push_back(blink::mojom::LocationChanges::New(0, relative_bounds_2)); + changes_2.location_changes.emplace_back(0, relative_bounds_2); rfh_a->HandleAXLocationChanges(rfh_a->GetAXTreeID(), std::move(changes_2), /*reset_token=*/1, {});
diff --git a/content/browser/indexed_db/instance/backing_store.cc b/content/browser/indexed_db/instance/backing_store.cc index 235da93..45287b7 100644 --- a/content/browser/indexed_db/instance/backing_store.cc +++ b/content/browser/indexed_db/instance/backing_store.cc
@@ -4114,6 +4114,13 @@ return cursor; } +void BackingStore::WriteToIndexedDBForTesting(const std::string& key, + const std::string& value) { + std::string value_copy = value; + Status s(db_->Put(key, &value_copy)); + CHECK(s.ok()) << s.ToString(); +} + bool BackingStore::IsBlobCleanupPending() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return journal_cleaning_timer_.IsRunning();
diff --git a/content/browser/indexed_db/instance/backing_store.h b/content/browser/indexed_db/instance/backing_store.h index 06005e9..927b09a6 100644 --- a/content/browser/indexed_db/instance/backing_store.h +++ b/content/browser/indexed_db/instance/backing_store.h
@@ -590,9 +590,6 @@ const std::string& origin_identifier() { return origin_identifier_; } - // Returns true if a blob cleanup job is pending on journal_cleaning_timer_. - bool IsBlobCleanupPending(); - // Gets the total size of blobs and the database for in-memory backing stores. int64_t GetInMemorySize() const; @@ -610,6 +607,11 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); execute_journal_cleaning_on_no_txns_ = true; } + void WriteToIndexedDBForTesting(const std::string& key, + const std::string& value); + + // Returns true if a blob cleanup job is pending on journal_cleaning_timer_. + bool IsBlobCleanupPending(); // Stops the journal_cleaning_timer_ and runs its pending task. void ForceRunBlobCleanup();
diff --git a/content/browser/indexed_db/instance/bucket_context.cc b/content/browser/indexed_db/instance/bucket_context.cc index 5239a52..427d363 100644 --- a/content/browser/indexed_db/instance/bucket_context.cc +++ b/content/browser/indexed_db/instance/bucket_context.cc
@@ -104,6 +104,8 @@ #include "third_party/blink/public/mojom/file_system_access/file_system_access_transfer_token.mojom.h" #include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-shared.h" #include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom.h" +#include "third_party/leveldatabase/env_chromium.h" +#include "third_party/leveldatabase/src/include/leveldb/status.h" namespace content::indexed_db { namespace { @@ -955,11 +957,8 @@ void BucketContext::WriteToIndexedDBForTesting(const std::string& key, const std::string& value) { - TransactionalLevelDBDatabase* db = backing_store_->db(); - std::string value_copy = value; - Status s(db->Put(key, &value_copy)); - CHECK(s.ok()) << s.ToString(); - ForceClose(true); + backing_store_->WriteToIndexedDBForTesting(key, value); // IN-TEST + ForceClose(/*doom=*/true); } void BucketContext::BindMockFailureSingletonForTesting( @@ -1261,7 +1260,7 @@ if (status.IsIOError()) { quota_manager_proxy_->OnClientWriteFailed(bucket_info_.storage_key); } - ForceClose(/*will_be_deleted=*/false); + ForceClose(/*doom=*/false); } bool BucketContext::OnMemoryDump(const base::trace_event::MemoryDumpArgs& args,
diff --git a/content/browser/indexed_db/instance/bucket_context.h b/content/browser/indexed_db/instance/bucket_context.h index 3059711c..cebb4ba8 100644 --- a/content/browser/indexed_db/instance/bucket_context.h +++ b/content/browser/indexed_db/instance/bucket_context.h
@@ -40,8 +40,6 @@ #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver_set.h" #include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom.h" -#include "third_party/leveldatabase/env_chromium.h" -#include "third_party/leveldatabase/src/include/leveldb/status.h" namespace storage { class QuotaManagerProxy;
diff --git a/content/browser/interest_group/interest_group_browsertest.cc b/content/browser/interest_group/interest_group_browsertest.cc index 0b532f5..bcc1cf99 100644 --- a/content/browser/interest_group/interest_group_browsertest.cc +++ b/content/browser/interest_group/interest_group_browsertest.cc
@@ -23749,10 +23749,10 @@ decisionLogicURL: 'https://test.com', sellerCurrency: 'currency is checked late', ignored: setTimeout(() => {console.log('I am a timer'); }, 1), - perBuyerTimeouts: { 'https://test.com': { + perBuyerTimeouts: Promise.resolve({ 'https://test.com': { valueOf: () => { console.log('I am a side effect!') } } - } + }) })")); EXPECT_TRUE(console_observer.Wait()); EXPECT_EQ("I am a timer", console_observer.GetMessageAt(0));
diff --git a/content/browser/navigation_transitions/back_forward_transition_animation_manager_android_browsertest.cc b/content/browser/navigation_transitions/back_forward_transition_animation_manager_android_browsertest.cc index fd2f3f59..05ec112 100644 --- a/content/browser/navigation_transitions/back_forward_transition_animation_manager_android_browsertest.cc +++ b/content/browser/navigation_transitions/back_forward_transition_animation_manager_android_browsertest.cc
@@ -54,6 +54,7 @@ #include "net/test/embedded_test_server/embedded_test_server.h" #include "third_party/blink/public/common/input/web_input_event.h" #include "third_party/blink/public/mojom/frame/frame.mojom-test-utils.h" +#include "ui/android/fake_modal_dialog_manager_bridge.h" #include "ui/android/progress_bar_config.h" #include "ui/android/ui_android_features.h" #include "ui/android/window_android.h" @@ -4349,4 +4350,134 @@ EXPECT_EQ("[LivePage]", ChildrenInOrder(*GetViewLayer())); } +namespace { + +using ModalDialogType = ui::ModalDialogManagerBridge::ModalDialogType; + +// Note: This set of tests are unittesting ModalDialogManager#suspendType() +// and ModalDialogManager#resumeType(), as `ShellJavaScriptDialogManager` is +// not wired to Java UI code. +class BackForwardTransitionAnimationManagerBrowserTestSuspendDialog + : public BackForwardTransitionAnimationManagerBrowserTest { + public: + ~BackForwardTransitionAnimationManagerBrowserTestSuspendDialog() override = + default; + + void SetUpOnMainThread() override { + BackForwardTransitionAnimationManagerBrowserTest::SetUpOnMainThread(); + fake_dialog_manager_ = ui::FakeModalDialogManagerBridge::CreateForTab( + web_contents()->GetTopLevelNativeWindow(), + /*use_empty_java_presenter=*/true); + } + + void TearDown() override { + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + } + + ui::FakeModalDialogManagerBridge* fake_dialog_manager() { + return fake_dialog_manager_.get(); + } + + private: + std::unique_ptr<ui::FakeModalDialogManagerBridge> fake_dialog_manager_; +}; + +} // namespace + +IN_PROC_BROWSER_TEST_F( + BackForwardTransitionAnimationManagerBrowserTestSuspendDialog, + JavascriptDialogSuspendedDuringTransition) { + DisableBackForwardCacheForTesting( + web_contents(), + BackForwardCache::DisableForTestingReason::TEST_REQUIRES_NO_CACHING); + + TestNavigationManager back_nav_to_red(web_contents(), RedURL()); + + GetAnimationManager()->OnGestureStarted(ui::BackGestureEvent(0), + SwipeEdge::LEFT, NavType::kBackward); + EXPECT_EQ("[Screenshot[Scrim],LivePage]", ChildrenInOrder(*GetViewLayer())); + + TestFuture<AnimatorForTesting::State> on_destroyed; + GetAnimator()->set_on_impl_destroyed(on_destroyed.GetCallback()); + EXPECT_TRUE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + + GetAnimationManager()->OnGestureProgressed(ui::BackGestureEvent(0.6f)); + EXPECT_TRUE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + + GetAnimationManager()->OnGestureInvoked(); + ASSERT_TRUE(back_nav_to_red.WaitForRequestStart()); + EXPECT_TRUE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + + ASSERT_TRUE(back_nav_to_red.WaitForNavigationFinished()); + ASSERT_TRUE(back_nav_to_red.was_successful()); + // The navigation has finished. Tab level dialogs are resumed immediately. + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + ASSERT_TRUE(on_destroyed.Wait()); + EXPECT_EQ(on_destroyed.Get(), kAnimationFinished); +} + +IN_PROC_BROWSER_TEST_F( + BackForwardTransitionAnimationManagerBrowserTestSuspendDialog, + JavascriptDialogResumedOnCancel) { + GetAnimationManager()->OnGestureStarted(ui::BackGestureEvent(0), + SwipeEdge::LEFT, NavType::kBackward); + EXPECT_EQ("[Screenshot[Scrim],LivePage]", ChildrenInOrder(*GetViewLayer())); + + TestFuture<AnimatorForTesting::State> on_destroyed; + GetAnimator()->set_on_impl_destroyed(on_destroyed.GetCallback()); + EXPECT_TRUE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + + GetAnimationManager()->OnGestureProgressed(ui::BackGestureEvent(0.6f)); + EXPECT_TRUE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + + GetAnimationManager()->OnGestureCancelled(); + // Tab level dialogs are resumed immediately after the gesture is cancelled. + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + ASSERT_TRUE(on_destroyed.Wait()); + EXPECT_EQ(on_destroyed.Get(), kAnimationFinished); +} + +IN_PROC_BROWSER_TEST_F( + BackForwardTransitionAnimationManagerBrowserTestSuspendDialog, + JavascriptDialogResumedOnAbort) { + DisableBackForwardCacheForTesting( + web_contents(), + BackForwardCache::DisableForTestingReason::TEST_REQUIRES_NO_CACHING); + + TestNavigationManager back_nav_to_red(web_contents(), RedURL()); + + GetAnimationManager()->OnGestureStarted(ui::BackGestureEvent(0), + SwipeEdge::LEFT, NavType::kBackward); + EXPECT_EQ("[Screenshot[Scrim],LivePage]", ChildrenInOrder(*GetViewLayer())); + + TestFuture<AnimatorForTesting::State> on_destroyed; + GetAnimator()->set_on_impl_destroyed(on_destroyed.GetCallback()); + EXPECT_TRUE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + + GetAnimationManager()->OnGestureProgressed(ui::BackGestureEvent(0.6f)); + EXPECT_TRUE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + + GetAnimationManager()->OnGestureInvoked(); + ASSERT_TRUE(back_nav_to_red.WaitForRequestStart()); + EXPECT_TRUE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); + + GetAnimationManager()->OnDetachCompositor(); + ASSERT_TRUE(on_destroyed.Wait()); + EXPECT_EQ(on_destroyed.Get(), kAnimationAborted); + // Dialogs are resumed when the transition is aborted. + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kTab)); + EXPECT_FALSE(fake_dialog_manager()->IsSuspend(ModalDialogType::kApp)); +} + } // namespace content
diff --git a/content/browser/navigation_transitions/back_forward_transition_animator.cc b/content/browser/navigation_transitions/back_forward_transition_animator.cc index 1e926ab..c6088f8 100644 --- a/content/browser/navigation_transitions/back_forward_transition_animator.cc +++ b/content/browser/navigation_transitions/back_forward_transition_animator.cc
@@ -352,6 +352,16 @@ break; } + if (state_ == State::kAnimationFinished) { + // - Navigation committed (old page was unloaded). + // - Navigation cancelled or never started. + CHECK_EQ(deferred_dialog_token_, + ui::ModalDialogManagerBridge::kInvalidDialogToken); + } else { + // Transition was aborted. + ResumeDialogs(); + } + ResetTransformForLayer(animation_manager_->web_contents_view_android() ->parent_for_web_page_widgets()); @@ -856,6 +866,12 @@ return; } + // Resume the dialogs. When the transition starts we deferred the + // dialogs. Now the old page was unloaded and we need to resume the + // dialogs immediately so we don't accidentally defer the dialogs on the + // new page. + ResumeDialogs(); + // Before we display the crossfade animation to show the new page, we // need to check if the new page matches the origin of the screenshot. // We are not allowed to cross-fade from a screenshot of A.com to a page @@ -1358,33 +1374,51 @@ void BackForwardTransitionAnimator::ProcessState() { switch (state_) { case State::kStarted: { + DeferDialogs(); break; // `this` will be waiting for the `OnGestureProgressed` call. } case State::kDisplayingCancelAnimation: { - if (navigation_state_ == NavigationState::kNotStarted) { - // When the user lifts the finger and signals not to start the - // navigation. - physics_model_.SwitchSpringForReason( - SwitchSpringReason::kGestureCancelled); - } else if (navigation_state_ == - NavigationState::kBeforeUnloadDispatched) { - // Notify the physics model we need to animate the active page back to - // the center of the viewport because the browser has asked the renderer - // to ack the BeforeUnload message. The renderer may need to show a - // prompt to ask for the user input. - physics_model_.SwitchSpringForReason( - SwitchSpringReason::kBeforeUnloadDispatched); - } else if (navigation_state_ == NavigationState::kCancelledBeforeStart) { - // The user has interacted with the prompt to not start the navigation. - // We are waiting for the ongoing cancel animation to finish. - } else if (navigation_state_ == NavigationState::kCancelled) { - // When the ongoing navigaion is cancelled because the user hits stop or - // the navigation was replaced by another navigation, - // `OnDidFinishNavigation()` has already notified the physics model to - // switch to the cancel spring. - } else { - NOTREACHED_IN_MIGRATION() << NavigationStateToString(navigation_state_); + switch (navigation_state_) { + case NavigationState::kNotStarted: { + // When the user lifts the finger and signals not to start the + // navigation. + physics_model_.SwitchSpringForReason( + SwitchSpringReason::kGestureCancelled); + ResumeDialogs(); + break; + } + case NavigationState::kBeforeUnloadDispatched: { + // Notify the physics model we need to animate the active page back to + // the center of the viewport because the browser has asked the + // renderer to ack the BeforeUnload message. The renderer may need to + // show a prompt to ask for the user input. + physics_model_.SwitchSpringForReason( + SwitchSpringReason::kBeforeUnloadDispatched); + // We don't resume the TAB dialog if there is a BeforeUnload pending. + break; + } + case NavigationState::kCancelledBeforeStart: { + // The user has interacted with the prompt to not start the + // navigation. We are waiting for the ongoing cancel animation to + // finish. + ResumeDialogs(); + break; + } + case NavigationState::kCancelled: { + // When the ongoing navigation is cancelled because the user hits stop + // or the navigation was replaced by another navigation, + // `OnDidFinishNavigation()` has already notified the physics model to + // switch to the cancel spring. + ResumeDialogs(); + break; + } + case NavigationState::kBeforeUnloadAckedProceed: + case NavigationState::kStarted: + case NavigationState::kCommitted: + NOTREACHED_IN_MIGRATION() + << NavigationStateToString(navigation_state_); + break; } CHECK(animation_manager_->web_contents_view_android() ->GetTopLevelNativeWindow()); @@ -2105,4 +2139,35 @@ .width(); } +void BackForwardTransitionAnimator::DeferDialogs() { + CHECK_EQ(deferred_dialog_token_, + ui::ModalDialogManagerBridge::kInvalidDialogToken); + auto* dialog_manager = animation_manager_->web_contents_view_android() + ->GetNativeView() + ->GetWindowAndroid() + ->GetModalDialogManagerBridge(); + // We don't always have a dialog manager (i.e., content_browsertests). + if (dialog_manager) { + deferred_dialog_token_ = dialog_manager->SuspendModalDialog( + ui::ModalDialogManagerBridge::ModalDialogType::kTab); + } +} + +void BackForwardTransitionAnimator::ResumeDialogs() { + if (deferred_dialog_token_ == + ui::ModalDialogManagerBridge::kInvalidDialogToken) { + return; + } + auto* dialog_manager = animation_manager_->web_contents_view_android() + ->GetNativeView() + ->GetWindowAndroid() + ->GetModalDialogManagerBridge(); + if (dialog_manager) { + dialog_manager->ResumeModalDialog( + ui::ModalDialogManagerBridge::ModalDialogType::kTab, + deferred_dialog_token_); + } + deferred_dialog_token_ = ui::ModalDialogManagerBridge::kInvalidDialogToken; +} + } // namespace content
diff --git a/content/browser/navigation_transitions/back_forward_transition_animator.h b/content/browser/navigation_transitions/back_forward_transition_animator.h index d79880e..97e6061 100644 --- a/content/browser/navigation_transitions/back_forward_transition_animator.h +++ b/content/browser/navigation_transitions/back_forward_transition_animator.h
@@ -13,6 +13,7 @@ #include "content/public/browser/render_frame_metadata_provider.h" #include "content/public/browser/render_widget_host_observer.h" #include "content/public/browser/web_contents_observer.h" +#include "ui/android/modal_dialog_manager_bridge.h" #include "ui/android/view_android_observer.h" #include "ui/android/window_android_observer.h" #include "ui/events/back_gesture_event.h" @@ -409,6 +410,9 @@ int DipToPx(int dip) const; + void DeferDialogs(); + void ResumeDialogs(); + const BackForwardTransitionAnimationManager::NavigationDirection nav_direction_; @@ -556,6 +560,14 @@ IgnoringInputReason ignoring_input_reason_ = IgnoringInputReason::kNoOccurrence; + // Stores the token that identify the deferred dialogs. During the animated + // transition, the live page could show the user some permission prompts or + // alerts before unloaded. We suppress these dialogs during the transition. + // These dialogs will be re-presented if the swipe gesture does not unload the + // live page. + int deferred_dialog_token_ = + ui::ModalDialogManagerBridge::kInvalidDialogToken; + base::WeakPtrFactory<BackForwardTransitionAnimator> weak_ptr_factory_{this}; };
diff --git a/content/browser/preloading/prefetch/no_vary_search_helper.h b/content/browser/preloading/prefetch/no_vary_search_helper.h index 944a285..e00f2dc0 100644 --- a/content/browser/preloading/prefetch/no_vary_search_helper.h +++ b/content/browser/preloading/prefetch/no_vary_search_helper.h
@@ -69,8 +69,11 @@ // URL is exactly the same. kExact, - // URL is equivalent due to the received No-Vary-Search data. - kNoVarySearch, + // URL is equivalent due to the received No-Vary-Search header. + kNoVarySearchHeader, + + // URL is equivalent due to the No-Vary-Search hint. + kNoVarySearchHint, // The non-ref/query parts of URL are the same. kOther @@ -156,9 +159,19 @@ continue; } - const auto match_type = it->second->IsNoVarySearchHeaderMatch(key_url) - ? MatchType::kNoVarySearch - : MatchType::kOther; + const MatchType match_type = [&]() { + const auto& prefetch_container = it->second; + if (prefetch_container->IsNoVarySearchHeaderMatch(key_url)) { + return MatchType::kNoVarySearchHeader; + } else if (prefetch_container->ShouldWaitForNoVarySearchHeader(key_url)) { + return MatchType::kNoVarySearchHint; + } else { + return MatchType::kOther; + } + + NOTREACHED(); + }(); + if (callback.Run(it->second, match_type) == IterateCandidateResult::kFinish) { break; @@ -182,13 +195,14 @@ const Value& prefetch_container, MatchType match_type) { switch (match_type) { case MatchType::kExact: - case MatchType::kNoVarySearch: + case MatchType::kNoVarySearchHeader: // TODO(crbug.com/40064891): Revisit which PrefetchContainer to // return when there are multiple candidates. Currently we // return the first PrefetchContainer in URL lexicographic // order. *result = prefetch_container->GetWeakPtr(); return IterateCandidateResult::kFinish; + case MatchType::kNoVarySearchHint: case MatchType::kOther: return IterateCandidateResult::kContinue; }
diff --git a/content/browser/preloading/prefetch/prefetch_match_resolver.h b/content/browser/preloading/prefetch/prefetch_match_resolver.h index 8d5d24c..776c77ed 100644 --- a/content/browser/preloading/prefetch/prefetch_match_resolver.h +++ b/content/browser/preloading/prefetch/prefetch_match_resolver.h
@@ -261,6 +261,47 @@ ostream << t; }; +// Do not use it outside of this header. +// +// Collects "potentially matching" `PrefetchContainer`s. +// +// "potentially matching" is either: +// +// - Exact match +// - No-Vary-Search header match. +// - No-Vary-Search hint match and non redirect header is not still arrived. +template <class T> + requires MatchCandidate<T> +std::vector<T*> CollectPotentialMatchPrefetchContainers( + const std::map<PrefetchContainer::Key, std::unique_ptr<T>>& prefetches, + const PrefetchContainer::Key& navigated_key) { + std::vector<T*> result; + + // Note that exact match one is at the head if exists by the property of + // `IterateCandidates()`. + no_vary_search::IterateCandidates( + navigated_key, prefetches, + base::BindRepeating( + [](const PrefetchContainer::Key& navigated_key, + std::vector<T*>* result, + const std::unique_ptr<T>& prefetch_container, + no_vary_search::MatchType match_type) { + switch (match_type) { + case no_vary_search::MatchType::kExact: + case no_vary_search::MatchType::kNoVarySearchHeader: + case no_vary_search::MatchType::kNoVarySearchHint: + result->push_back(prefetch_container.get()); + break; + case no_vary_search::MatchType::kOther: + break; + } + return no_vary_search::IterateCandidateResult::kContinue; + }, + navigated_key, base::Unretained(&result))); + + return result; +} + // Collects `PrefetchContainer`s that are expected to match to `navigated_key`. // // This is defined with the template for testing the first phase of @@ -272,43 +313,15 @@ const PrefetchContainer::Key& navigated_key, base::WeakPtr<PrefetchServingPageMetricsContainer> serving_page_metrics_container) { - std::vector<T*> matches; - std::vector<T*> hint_matches; - DVLOG(1) << "CollectMatchCandidatesGeneric(" << navigated_key << ")"; - // Search for an exact or No-Vary-Search match first. - no_vary_search::IterateCandidates( - navigated_key, prefetches, - base::BindRepeating( - [](const PrefetchContainer::Key& navigated_key, - std::vector<T*>* matches, std::vector<T*>* hint_matches, - const std::unique_ptr<T>& prefetch_container, - no_vary_search::MatchType match_type) { - switch (match_type) { - case no_vary_search::MatchType::kExact: - case no_vary_search::MatchType::kNoVarySearch: - matches->push_back(prefetch_container.get()); - break; - case no_vary_search::MatchType::kOther: - if (prefetch_container->ShouldWaitForNoVarySearchHeader( - navigated_key.url())) { - hint_matches->push_back(prefetch_container.get()); - } - break; - } - return no_vary_search::IterateCandidateResult::kContinue; - }, - navigated_key, base::Unretained(&matches), - base::Unretained(&hint_matches))); + std::vector<T*> candidates = + CollectPotentialMatchPrefetchContainers(prefetches, navigated_key); - // Insert the No-Vary-Search hint matches at the end of `matches`. - matches.insert(matches.end(), hint_matches.begin(), hint_matches.end()); - - for (T* prefetch_container : matches) { + for (T* prefetch_container : candidates) { prefetch_container->SetServingPageMetrics(serving_page_metrics_container); prefetch_container->UpdateServingPageMetrics(); } - std::erase_if(matches, [](const auto* prefetch_container) { + std::erase_if(candidates, [](const auto* prefetch_container) { if (prefetch_container->HasPrefetchBeenConsideredToServe()) { DVLOG(1) << "CollectMatchCandidatesGeneric: skipped " << "because already considered to serve: " @@ -355,7 +368,7 @@ return false; }); - return matches; + return candidates; } } // namespace content
diff --git a/content/browser/renderer_host/render_frame_host_delegate.h b/content/browser/renderer_host/render_frame_host_delegate.h index 7e692e6b..7777f63 100644 --- a/content/browser/renderer_host/render_frame_host_delegate.h +++ b/content/browser/renderer_host/render_frame_host_delegate.h
@@ -100,7 +100,7 @@ namespace ui { class ClipboardFormatType; struct AXUpdatesAndEvents; -struct AXLocationChanges; +struct AXLocationAndScrollUpdates; } // namespace ui namespace content { @@ -302,7 +302,8 @@ virtual void ProcessAccessibilityUpdatesAndEvents( ui::AXUpdatesAndEvents& details) {} virtual void AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) {} + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) {} // Indicates an unrecoverable error in accessibility. Gracefully turns off // accessibility in all frames.
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc index df184d09..86c862d 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -279,6 +279,7 @@ #include "ui/accessibility/accessibility_features.h" #include "ui/accessibility/ax_action_handler_registry.h" #include "ui/accessibility/ax_common.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_tree_update.h" #include "ui/accessibility/ax_updates_and_events.h" #include "ui/accessibility/platform/browser_accessibility_manager.h" @@ -10435,6 +10436,7 @@ void RenderFrameHostImpl::HandleAXEvents( const ui::AXTreeID& tree_id, ui::AXUpdatesAndEvents updates_and_events, + ui::AXLocationAndScrollUpdates location_and_scroll_updates, uint32_t reset_token, mojo::ReportBadMessageCallback report_bad_message_callback) { TRACE_EVENT0("accessibility", "RenderFrameHostImpl::HandleAXEvents"); @@ -10511,6 +10513,16 @@ GetOrCreateBrowserAccessibilityManager(); + if (!location_and_scroll_updates.location_changes.empty() || + !location_and_scroll_updates.scroll_changes.empty()) { + HandleAXLocationChanges( + tree_id, std::move(location_and_scroll_updates), reset_token, + std::move(report_bad_message_callback)); // There's no calls to + // report_bad_message_callback + // below this line so should + // be safe to move it. + } + for (auto& update : updates_and_events.updates) { if (update.has_tree_data) { DCHECK_EQ(tree_id, update.tree_data.tree_id); @@ -10568,7 +10580,7 @@ void RenderFrameHostImpl::HandleAXLocationChanges( const ui::AXTreeID& tree_id, - std::vector<blink::mojom::LocationChangesPtr> changes, + ui::AXLocationAndScrollUpdates changes, uint32_t reset_token, mojo::ReportBadMessageCallback report_bad_message_callback) { if (tree_id != GetAXTreeID()) { @@ -10598,23 +10610,13 @@ } } - // Send the updates to the automation extension API. - std::vector<ui::AXLocationChanges> details; - details.reserve(changes.size()); - for (auto& change : changes) { - ui::AXLocationChanges detail; - detail.id = change->id; - detail.ax_tree_id = GetAXTreeID(); - detail.new_location = change->new_location; - details.push_back(detail); - } ui::BrowserAccessibilityManager* manager = GetOrCreateBrowserAccessibilityManager(); if (manager) { - manager->OnLocationChanges(details); + manager->OnLocationChanges(changes); } - delegate_->AccessibilityLocationChangesReceived(details); + delegate_->AccessibilityLocationChangesReceived(tree_id, changes); } void RenderFrameHostImpl::ResetWaitingState() {
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h index c5098ac8d..7d0860c4 100644 --- a/content/browser/renderer_host/render_frame_host_impl.h +++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -2881,9 +2881,12 @@ JavaScriptResultAndTypeCallback callback); // Call |HandleAXEvents()| for tests. - void HandleAXEventsForTests(const ui::AXTreeID& tree_id, - ui::AXUpdatesAndEvents updates_and_events) { + void HandleAXEventsForTests( + const ui::AXTreeID& tree_id, + ui::AXUpdatesAndEvents updates_and_events, + ui::AXLocationAndScrollUpdates location_and_scroll_updates) { HandleAXEvents(tree_id, std::move(updates_and_events), + std::move(location_and_scroll_updates), *accessibility_reset_token_, {}); } @@ -3460,11 +3463,12 @@ void HandleAXEvents( const ui::AXTreeID& tree_id, ui::AXUpdatesAndEvents updates_and_events, + ui::AXLocationAndScrollUpdates location_and_scroll_updates, uint32_t reset_token, mojo::ReportBadMessageCallback report_bad_message_callback); void HandleAXLocationChanges( const ui::AXTreeID& tree_id, - std::vector<blink::mojom::LocationChangesPtr> changes, + ui::AXLocationAndScrollUpdates changes, uint32_t reset_token, mojo::ReportBadMessageCallback report_bad_message_callback);
diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc index f53b59e..52a933c1 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc
@@ -4146,13 +4146,14 @@ // Then we should remove the null-check for the RenderWidgetHostView in // RenderWidgetHostImpl::RendererWidgetCreated(). delegate_->CreateRenderWidgetHostViewForRenderManager(render_view_host); - // If we are recovering a crashed frame in the same SiteInstance and we - // are not skipping early commit then we will create a proxy and that will - // prevent the regular outer delegate reattach path in + // If we are recovering a crashed frame in the same SiteInstanceGroup and + // we are not skipping early commit then we will create a proxy and that + // will prevent the regular outer delegate reattach path in // CreateRenderViewForRenderManager() from working. if (recovering_without_early_commit && - render_frame_host_->GetSiteInstance() == instance) + render_frame_host_->GetSiteInstance()->group() == instance->group()) { delegate_->ReattachOuterDelegateIfNeeded(); + } } // And since we are reusing the RenderViewHost make sure it is hidden, like // a new RenderViewHost would be, until navigation commits.
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index 0478cc0..005138e 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc
@@ -5304,11 +5304,13 @@ } void WebContentsImpl::AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) { + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) { OPTIONAL_TRACE_EVENT0( "content", "WebContentsImpl::AccessibilityLocationChangesReceived"); observers_.NotifyObservers( - &WebContentsObserver::AccessibilityLocationChangesReceived, details); + &WebContentsObserver::AccessibilityLocationChangesReceived, tree_id, + details); } ui::AXNode* WebContentsImpl::GetAccessibilityRootNode() {
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h index 8f4686f..978d1b7 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h
@@ -81,6 +81,7 @@ #include "third_party/blink/public/mojom/page/display_cutout.mojom-shared.h" #include "third_party/blink/public/mojom/page/draggable_region.mojom-forward.h" #include "third_party/blink/public/mojom/page/page_visibility_state.mojom-shared.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_mode.h" #include "ui/accessibility/ax_node.h" #include "ui/accessibility/platform/inspect/ax_event_recorder.h" @@ -714,7 +715,8 @@ void ProcessAccessibilityUpdatesAndEvents( ui::AXUpdatesAndEvents& details) override; void AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) override; + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) override; ui::AXNode* GetAccessibilityRootNode() override; std::string DumpAccessibilityTree( bool internal,
diff --git a/content/public/android/java/src/org/chromium/content/browser/AppWebMessagePort.java b/content/public/android/java/src/org/chromium/content/browser/AppWebMessagePort.java index acb5947..effa1a66 100644 --- a/content/public/android/java/src/org/chromium/content/browser/AppWebMessagePort.java +++ b/content/public/android/java/src/org/chromium/content/browser/AppWebMessagePort.java
@@ -215,17 +215,18 @@ } /** - * A finalizer is required to ensure that the native object associated with - * this descriptor gets torn down, otherwise there would be a memory leak. + * A finalizer is required to ensure that the native object associated with this descriptor gets + * torn down, otherwise there would be a memory leak. * - * This is safe because posting a task is fast. + * <p>This is safe because posting a task is fast. * - * TODO(chrisha): Chase down the existing offenders that don't call close, - * and flip this to use LifetimeAssert. + * <p>TODO(chrisha): Chase down the existing offenders that don't call close, and flip this to + * use LifetimeAssert. (also: https://crbug.com/40286193) * * @see java.lang.Object#finalize() */ @Override + @SuppressWarnings("Finalize") protected void finalize() throws Throwable { try { if (mNativeAppWebMessagePort == 0L) return;
diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java index 072fafcb..6261478 100644 --- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java +++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java
@@ -11,6 +11,8 @@ import android.content.Intent; import android.content.IntentFilter; +import androidx.annotation.IntDef; + import com.google.android.gms.auth.api.phone.SmsCodeBrowserClient; import com.google.android.gms.auth.api.phone.SmsCodeRetriever; import com.google.android.gms.auth.api.phone.SmsRetriever; @@ -27,13 +29,14 @@ import org.chromium.content.browser.sms.Wrappers.WebOTPServiceContext; import org.chromium.ui.base.WindowAndroid; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + /** - * Encapsulates logic to retrieve OTP code via SMS Browser Code API. - * See also: + * Encapsulates logic to retrieve OTP code via SMS Browser Code API. See also: * https://developers.google.com/android/reference/com/google/android/gms/auth/api/phone/SmsCodeBrowserClient * - * TODO(majidvp): rename legacy Verification name to more appropriate name ( - * e.g., BrowserCode. + * <p>TODO(majidvp): rename legacy Verification name to more appropriate name ( e.g., BrowserCode. */ public class SmsVerificationReceiver extends BroadcastReceiver { private static final int CODE_PERMISSION_REQUEST = 1; @@ -43,12 +46,19 @@ private boolean mDestroyed; private Wrappers.WebOTPServiceContext mContext; - private enum BackendAvailability { - AVAILABLE, - API_NOT_CONNECTED, - PLATFORM_NOT_SUPPORTED, - API_NOT_AVAILABLE, - NUM_ENTRIES + @IntDef({ + BackendAvailability.AVAILABLE, + BackendAvailability.API_NOT_CONNECTED, + BackendAvailability.PLATFORM_NOT_SUPPORTED, + BackendAvailability.API_NOT_AVAILABLE + }) + @Retention(RetentionPolicy.SOURCE) + public @interface BackendAvailability { + int AVAILABLE = 0; + int API_NOT_CONNECTED = 1; + int PLATFORM_NOT_SUPPORTED = 2; + int API_NOT_AVAILABLE = 3; + int NUM_ENTRIES = 4; } public SmsVerificationReceiver(SmsProviderGms provider, WebOTPServiceContext context) { @@ -210,12 +220,10 @@ if (DEBUG) Log.d(TAG, "Installed task"); } - public void reportBackendAvailability(BackendAvailability availability) { - if (DEBUG) Log.d(TAG, "Backend availability: %d", availability.ordinal()); + public void reportBackendAvailability(@BackendAvailability int availability) { + if (DEBUG) Log.d(TAG, "Backend availability: %d", availability); RecordHistogram.recordEnumeratedHistogram( - "Blink.Sms.BackendAvailability", - availability.ordinal(), - BackendAvailability.NUM_ENTRIES.ordinal()); + "Blink.Sms.BackendAvailability", availability, BackendAvailability.NUM_ENTRIES); } // Handles the case when the backend is available but user has previously denied to grant the
diff --git a/content/public/android/java/src/org/chromium/content/browser/webid/IdentityCredentialsDelegate.java b/content/public/android/java/src/org/chromium/content/browser/webid/IdentityCredentialsDelegate.java index d507009..b9fc2adf 100644 --- a/content/public/android/java/src/org/chromium/content/browser/webid/IdentityCredentialsDelegate.java +++ b/content/public/android/java/src/org/chromium/content/browser/webid/IdentityCredentialsDelegate.java
@@ -97,22 +97,14 @@ Log.d(TAG, "Sending an intent for sender"); Log.d(TAG, request); startIntentSenderForResult( - /** activity= */ - window, - /** intent= */ - response.getPendingIntent().getIntentSender(), - /** requestCode= */ - 777, - /** fillInIntent= */ - null, - /** flagsMask= */ - 0, - /** flagsValues= */ - 0, - /** extraFlags= */ - 0, - /** options= */ - null); + /* activity= */ window, + /* intent= */ response.getPendingIntent().getIntentSender(), + /* requestCode= */ 777, + /* fillInIntent= */ null, + /* flagsMask= */ 0, + /* flagsValues= */ 0, + /* extraFlags= */ 0, + /* options= */ null); } catch (SendIntentException e) { Log.e(TAG, "Sending an intent for sender failed"); result.reject(e);
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java b/content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java index b5d4f624..4d67bc5 100644 --- a/content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java +++ b/content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java
@@ -105,7 +105,7 @@ mActivityTestRule.launchContentShellWithUrlSync( "content/test/data/android/geolocation.html"); } catch (Throwable t) { - Assert.fail(); + throw new RuntimeException(t); } mTestCallbackHelperContainer =
diff --git a/content/public/browser/web_contents_observer.h b/content/public/browser/web_contents_observer.h index 2c6a8fd..58e3918 100644 --- a/content/public/browser/web_contents_observer.h +++ b/content/public/browser/web_contents_observer.h
@@ -35,6 +35,7 @@ #include "third_party/blink/public/mojom/loader/resource_load_info.mojom-forward.h" #include "third_party/blink/public/mojom/media/capture_handle_config.mojom-forward.h" #include "third_party/skia/include/core/SkColor.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/base/page_transition_types.h" #include "ui/base/window_open_disposition.h" @@ -53,7 +54,7 @@ namespace ui { struct AXUpdatesAndEvents; -struct AXLocationChanges; +struct AXLocationAndScrollUpdates; namespace mojom { enum class VirtualKeyboardMode; } // namespace mojom @@ -818,7 +819,8 @@ virtual void AccessibilityEventReceived( const ui::AXUpdatesAndEvents& details) {} virtual void AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) {} + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) {} // Invoked when theme color is changed. virtual void DidChangeThemeColor() {}
diff --git a/content/public/test/mock_web_contents_observer.h b/content/public/test/mock_web_contents_observer.h index 5599e827..dcfff35c 100644 --- a/content/public/test/mock_web_contents_observer.h +++ b/content/public/test/mock_web_contents_observer.h
@@ -255,7 +255,8 @@ (override)); MOCK_METHOD(void, AccessibilityLocationChangesReceived, - (const std::vector<ui::AXLocationChanges>& details), + (const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details), (override)); MOCK_METHOD(void, DidChangeThemeColor, (), (override)); MOCK_METHOD(void, OnBackgroundColorChanged, (), (override));
diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc index 03b6464..e15ea01a 100644 --- a/content/renderer/accessibility/render_accessibility_impl.cc +++ b/content/renderer/accessibility/render_accessibility_impl.cc
@@ -470,6 +470,7 @@ bool RenderAccessibilityImpl::SendAccessibilitySerialization( std::vector<ui::AXTreeUpdate> updates, std::vector<ui::AXEvent> events, + ui::AXLocationAndScrollUpdates location_and_scroll_updates, bool had_load_complete_messages) { if (had_load_complete_messages) { loading_stage_ = LoadingStage::kLoadCompleted; @@ -550,7 +551,7 @@ CHECK(!weak_factory_for_pending_events_.HasWeakPtrs()); CHECK(reset_token_); render_accessibility_manager_->HandleAccessibilityEvents( - updates_and_events, *reset_token_, + updates_and_events, location_and_scroll_updates, *reset_token_, base::BindOnce(&RenderAccessibilityImpl::OnSerializationReceived, weak_factory_for_pending_events_.GetWeakPtr()));
diff --git a/content/renderer/accessibility/render_accessibility_impl.h b/content/renderer/accessibility/render_accessibility_impl.h index 1368f686..a6d0f4ee 100644 --- a/content/renderer/accessibility/render_accessibility_impl.h +++ b/content/renderer/accessibility/render_accessibility_impl.h
@@ -135,9 +135,11 @@ ax::mojom::Event event_type = ax::mojom::Event::kNone); // Called when it is safe to begin a serialization. // Returns true if a serialization occurs. - bool SendAccessibilitySerialization(std::vector<ui::AXTreeUpdate> updates, - std::vector<ui::AXEvent> events, - bool had_load_complete_messages); + bool SendAccessibilitySerialization( + std::vector<ui::AXTreeUpdate> updates, + std::vector<ui::AXEvent> events, + ui::AXLocationAndScrollUpdates location_and_scroll_updates, + bool had_load_complete_messages); // Returns the main top-level document for this page, or NULL if there's // no view or frame.
diff --git a/content/renderer/accessibility/render_accessibility_impl_browsertest.cc b/content/renderer/accessibility/render_accessibility_impl_browsertest.cc index ece1157..ee8e7cb1 100644 --- a/content/renderer/accessibility/render_accessibility_impl_browsertest.cc +++ b/content/renderer/accessibility/render_accessibility_impl_browsertest.cc
@@ -21,6 +21,7 @@ #include "third_party/blink/public/web/web_testing_support.h" #include "third_party/blink/public/web/web_view.h" #include "ui/accessibility/ax_action_target.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/null_ax_action_target.h" #include "ui/native_theme/native_theme_features.h" @@ -249,10 +250,10 @@ EXPECT_EQ(root_obj.AxID(), update.nodes[0].id); // Make sure that a location change is sent for the fixed-positioned node. - std::vector<blink::mojom::LocationChangesPtr>& changes = GetLocationChanges(); + std::vector<ui::AXLocationChange>& changes = GetLocationChanges(); EXPECT_EQ(changes.size(), 1u); - EXPECT_EQ(changes[0]->id, expected_id); - EXPECT_EQ(changes[0]->new_location, expected_bounds); + EXPECT_EQ(changes[0].id, expected_id); + EXPECT_EQ(changes[0].new_location, expected_bounds); } // Tests if the bounds are updated when it has multiple fixed nodes. @@ -313,12 +314,12 @@ EXPECT_EQ(root_obj.AxID(), update.nodes[0].id); // Make sure that a location change is sent for the fixed-positioned node. - std::vector<blink::mojom::LocationChangesPtr>& changes = GetLocationChanges(); + std::vector<ui::AXLocationChange>& changes = GetLocationChanges(); EXPECT_EQ(changes.size(), 2u); for (auto& change : changes) { - auto search = expected.find(change->id); + auto search = expected.find(change.id); EXPECT_NE(search, expected.end()); - EXPECT_EQ(search->second, change->new_location); + EXPECT_EQ(search->second, change.new_location); } }
diff --git a/content/renderer/accessibility/render_accessibility_impl_test.cc b/content/renderer/accessibility/render_accessibility_impl_test.cc index 49284d9..a5414e5 100644 --- a/content/renderer/accessibility/render_accessibility_impl_test.cc +++ b/content/renderer/accessibility/render_accessibility_impl_test.cc
@@ -13,6 +13,8 @@ #include "third_party/blink/public/web/web_ax_object.h" #include "third_party/blink/public/web/web_document.h" #include "third_party/blink/public/web/web_testing_support.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" +#include "ui/accessibility/ax_updates_and_events.h" #if defined(LEAK_SANITIZER) #include <sanitizer/lsan_interface.h> @@ -55,28 +57,39 @@ base::Unretained(&receiver_))); } - void HandleAXEvents(const ui::AXUpdatesAndEvents& updates_and_events, - uint32_t reset_token, - HandleAXEventsCallback callback) override { + void HandleAXEvents( + const ui::AXUpdatesAndEvents& updates_and_events, + const ui::AXLocationAndScrollUpdates& location_and_scroll_updates, + uint32_t reset_token, + HandleAXEventsCallback callback) override { NOTREACHED(); } - void HandleAXEvents(ui::AXUpdatesAndEvents& updates_and_events, - uint32_t reset_token, - HandleAXEventsCallback callback) override { + void HandleAXEvents( + ui::AXUpdatesAndEvents& updates_and_events, + ui::AXLocationAndScrollUpdates& location_and_scroll_updates, + uint32_t reset_token, + HandleAXEventsCallback callback) override { handled_updates_.insert(handled_updates_.end(), updates_and_events.updates.begin(), updates_and_events.updates.end()); + for (auto& change : location_and_scroll_updates.location_changes) { + location_changes_.emplace_back(std::move(change)); + } std::move(callback).Run(); } - void HandleAXLocationChanges( - std::vector<blink::mojom::LocationChangesPtr> changes, - uint32_t reset_token) override { - for (auto& change : changes) { + void HandleAXLocationChanges(ui::AXLocationAndScrollUpdates& changes, + uint32_t reset_token) override { + for (auto& change : changes.location_changes) { location_changes_.emplace_back(std::move(change)); } } + void HandleAXLocationChanges(const ui::AXLocationAndScrollUpdates& changes, + uint32_t reset_token) override { + NOTREACHED(); + } + ui::AXTreeUpdate& last_update() { CHECK_GE(handled_updates_.size(), 1U); return handled_updates_.back(); @@ -86,7 +99,7 @@ return handled_updates_; } - std::vector<blink::mojom::LocationChangesPtr>& location_changes() { + std::vector<ui::AXLocationChange>& location_changes() { return location_changes_; } @@ -99,7 +112,7 @@ mojo::Remote<blink::mojom::RenderAccessibilityHost> local_frame_host_remote_; std::vector<::ui::AXTreeUpdate> handled_updates_; - std::vector<blink::mojom::LocationChangesPtr> location_changes_; + std::vector<ui::AXLocationChange> location_changes_; }; class RenderAccessibilityTestRenderFrame : public TestRenderFrame { @@ -123,7 +136,7 @@ render_accessibility_host_->ClearHandledUpdates(); } - std::vector<blink::mojom::LocationChangesPtr>& LocationChanges() { + std::vector<ui::AXLocationChange>& LocationChanges() { return render_accessibility_host_->location_changes(); } @@ -226,7 +239,7 @@ ->ClearHandledUpdates(); } -std::vector<blink::mojom::LocationChangesPtr>& +std::vector<ui::AXLocationChange>& RenderAccessibilityImplTest::GetLocationChanges() { return static_cast<RenderAccessibilityTestRenderFrame*>(frame()) ->LocationChanges();
diff --git a/content/renderer/accessibility/render_accessibility_impl_test.h b/content/renderer/accessibility/render_accessibility_impl_test.h index 95d1095..e9a715c6 100644 --- a/content/renderer/accessibility/render_accessibility_impl_test.h +++ b/content/renderer/accessibility/render_accessibility_impl_test.h
@@ -11,6 +11,7 @@ #include "content/public/test/render_view_test.h" #include "third_party/blink/public/mojom/render_accessibility.mojom.h" #include "third_party/blink/public/web/web_ax_object.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_tree_update_forward.h" namespace content { @@ -47,7 +48,7 @@ const std::vector<ui::AXTreeUpdate>& GetHandledAccUpdates(); void ClearHandledUpdates(); - std::vector<blink::mojom::LocationChangesPtr>& GetLocationChanges(); + std::vector<ui::AXLocationChange>& GetLocationChanges(); int CountAccessibilityNodesSentToBrowser();
diff --git a/content/renderer/accessibility/render_accessibility_manager.cc b/content/renderer/accessibility/render_accessibility_manager.cc index 21005d7..d4e61fe 100644 --- a/content/renderer/accessibility/render_accessibility_manager.cc +++ b/content/renderer/accessibility/render_accessibility_manager.cc
@@ -110,11 +110,13 @@ void RenderAccessibilityManager::HandleAccessibilityEvents( ui::AXUpdatesAndEvents& updates_and_events, + ui::AXLocationAndScrollUpdates& location_and_scroll_updates, uint32_t reset_token, blink::mojom::RenderAccessibilityHost::HandleAXEventsCallback callback) { CHECK(reset_token); GetOrCreateRemoteRenderAccessibilityHost()->HandleAXEvents( - updates_and_events, reset_token, std::move(callback)); + updates_and_events, location_and_scroll_updates, reset_token, + std::move(callback)); } mojo::Remote<blink::mojom::RenderAccessibilityHost>&
diff --git a/content/renderer/accessibility/render_accessibility_manager.h b/content/renderer/accessibility/render_accessibility_manager.h index bb7471f..09a78c49 100644 --- a/content/renderer/accessibility/render_accessibility_manager.h +++ b/content/renderer/accessibility/render_accessibility_manager.h
@@ -79,6 +79,7 @@ // Communication with the browser process. void HandleAccessibilityEvents( ui::AXUpdatesAndEvents& updates_and_events, + ui::AXLocationAndScrollUpdates& location_and_scroll_updates, uint32_t reset_token, blink::mojom::RenderAccessibilityHost::HandleAXEventsCallback callback);
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index edcc9e2..6a69e53 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -780,62 +780,6 @@ frame_token_to_local_path_; }; -// Implementation of WebFrameSerializer::MHTMLPartsGenerationDelegate that -// 1. Bases shouldSkipResource and getContentID responses on contents of -// SerializeAsMHTMLParams. -// 2. Stores digests of urls of serialized resources (i.e. urls reported via -// shouldSkipResource) into |serialized_resources_uri_digests| passed -// to the constructor. -class MHTMLPartsGenerationDelegate - : public WebFrameSerializer::MHTMLPartsGenerationDelegate { - public: - MHTMLPartsGenerationDelegate( - const mojom::SerializeAsMHTMLParams& params, - std::unordered_set<std::string>* serialized_resources_uri_digests) - : params_(params), - serialized_resources_uri_digests_(serialized_resources_uri_digests) { - DCHECK(serialized_resources_uri_digests_); - // Digests must be sorted for binary search. - DCHECK(std::is_sorted(params_->digests_of_uris_to_skip.begin(), - params_->digests_of_uris_to_skip.end())); - // URLs are not duplicated. - DCHECK(base::ranges::adjacent_find(params_->digests_of_uris_to_skip) == - params_->digests_of_uris_to_skip.end()); - } - - MHTMLPartsGenerationDelegate(const MHTMLPartsGenerationDelegate&) = delete; - MHTMLPartsGenerationDelegate& operator=(const MHTMLPartsGenerationDelegate&) = - delete; - - bool ShouldSkipResource(const WebURL& url) override { - std::string digest = - crypto::SHA256HashString(params_->salt + GURL(url).spec()); - - // Skip if the |url| already covered by serialization of an *earlier* frame. - if (std::binary_search(params_->digests_of_uris_to_skip.begin(), - params_->digests_of_uris_to_skip.end(), digest)) { - return true; - } - - // Let's record |url| as being serialized for the *current* frame. - auto pair = serialized_resources_uri_digests_->insert(digest); - bool insertion_took_place = pair.second; - DCHECK(insertion_took_place); // Blink should dedupe within a frame. - - return false; - } - - bool UseBinaryEncoding() override { return params_->mhtml_binary_encoding; } - - bool RemovePopupOverlay() override { - return params_->mhtml_popup_overlay_removal; - } - - private: - const raw_ref<const mojom::SerializeAsMHTMLParams> params_; - raw_ptr<std::unordered_set<std::string>> serialized_resources_uri_digests_; -}; - bool IsHttpPost(const blink::WebURLRequest& request) { return request.HttpMethod().Utf8() == "POST"; } @@ -1344,6 +1288,66 @@ } // namespace +// Implementation of WebFrameSerializer::MHTMLPartsGenerationDelegate that +// 1. Bases shouldSkipResource and getContentID responses on contents of +// SerializeAsMHTMLParams. +// 2. Stores digests of urls of serialized resources (i.e. urls reported via +// shouldSkipResource) into |serialized_resources_uri_digests| passed +// to the constructor. +class MHTMLPartsGenerationDelegateImpl final + : public WebFrameSerializer::MHTMLPartsGenerationDelegate { + public: + explicit MHTMLPartsGenerationDelegateImpl( + mojom::SerializeAsMHTMLParamsPtr params) + : params_(std::move(params)) { + // Digests must be sorted for binary search. + DCHECK(std::is_sorted(params_->digests_of_uris_to_skip.begin(), + params_->digests_of_uris_to_skip.end())); + // URLs are not duplicated. + DCHECK(base::ranges::adjacent_find(params_->digests_of_uris_to_skip) == + params_->digests_of_uris_to_skip.end()); + } + + MHTMLPartsGenerationDelegateImpl(const MHTMLPartsGenerationDelegateImpl&) = + delete; + MHTMLPartsGenerationDelegateImpl& operator=( + const MHTMLPartsGenerationDelegateImpl&) = delete; + + bool ShouldSkipResource(const WebURL& url) override { + std::string digest = + crypto::SHA256HashString(params_->salt + GURL(url).spec()); + + // Skip if the |url| already covered by serialization of an *earlier* frame. + if (std::binary_search(params_->digests_of_uris_to_skip.begin(), + params_->digests_of_uris_to_skip.end(), digest)) { + return true; + } + + // Let's record |url| as being serialized for the *current* frame. + auto pair = serialized_resources_uri_digests_.insert(digest); + bool insertion_took_place = pair.second; + DCHECK(insertion_took_place); // Blink should dedupe within a frame. + + return false; + } + + bool UseBinaryEncoding() override { return params_->mhtml_binary_encoding; } + + bool RemovePopupOverlay() override { + return params_->mhtml_popup_overlay_removal; + } + + std::unordered_set<std::string> TakeSerializedResourcesUriDigests() { + return std::move(serialized_resources_uri_digests_); + } + mojom::SerializeAsMHTMLParamsPtr TakeParams() { return std::move(params_); } + + private: + std::vector<std::string> digests_of_uris_to_skip_; + mojom::SerializeAsMHTMLParamsPtr params_; + std::unordered_set<std::string> serialized_resources_uri_digests_; +}; + RenderFrameImpl::AssertNavigationCommits::AssertNavigationCommits( RenderFrameImpl* frame) : AssertNavigationCommits(frame, false) {} @@ -4880,12 +4884,14 @@ bool RenderFrameImpl::SendAccessibilitySerialization( std::vector<ui::AXTreeUpdate> updates, std::vector<ui::AXEvent> events, + ui::AXLocationAndScrollUpdates location_and_scroll_updates, bool had_load_complete_messages) { // This function should never be called from a11y unless it's enabled. CHECK(IsAccessibilityEnabled()); return render_accessibility_manager_->GetRenderAccessibilityImpl() ->SendAccessibilitySerialization(std::move(updates), std::move(events), + std::move(location_and_scroll_updates), had_load_complete_messages); } @@ -5795,12 +5801,8 @@ // Holds WebThreadSafeData instances for some or all of header, contents and // footer. std::vector<WebThreadSafeData> mhtml_contents; - std::unordered_set<std::string> serialized_resources_uri_digests; - MHTMLPartsGenerationDelegate delegate(*params, - &serialized_resources_uri_digests); - - mojom::MhtmlSaveStatus save_status = mojom::MhtmlSaveStatus::kSuccess; - bool has_some_data = false; + auto delegate = + std::make_unique<MHTMLPartsGenerationDelegateImpl>(std::move(params)); // Generate MHTML header if needed. if (IsMainFrame()) { @@ -5809,37 +5811,54 @@ // The returned data can be empty if the main frame should be skipped. If // the main frame is skipped, then the whole archive is bad. mhtml_contents.emplace_back(WebFrameSerializer::GenerateMHTMLHeader( - mhtml_boundary, GetWebFrame(), &delegate)); - has_some_data = true; + mhtml_boundary, GetWebFrame(), delegate.get())); } // Generate MHTML parts. Note that if this is not the main frame, then even // skipping the whole parts generation step is not an error - it simply // results in an omitted resource in the final file. - if (save_status == mojom::MhtmlSaveStatus::kSuccess) { - TRACE_EVENT0("page-serialization", - "RenderFrameImpl::SerializeAsMHTML parts serialization"); - // The returned data can be empty if the frame should be skipped, but this - // is OK. - mhtml_contents.emplace_back(WebFrameSerializer::GenerateMHTMLParts( - mhtml_boundary, GetWebFrame(), &delegate)); - has_some_data |= !mhtml_contents.back().IsEmpty(); + TRACE_EVENT0("page-serialization", + "RenderFrameImpl::SerializeAsMHTML parts serialization"); + MHTMLPartsGenerationDelegateImpl* delegate_ptr = delegate.get(); + WebFrameSerializer::GenerateMHTMLParts( + mhtml_boundary, GetWebFrame(), delegate_ptr, + base::BindOnce(&RenderFrameImpl::OnSerializeMHTMLComplete, + weak_factory_.GetWeakPtr(), std::move(delegate), + std::move(callback), std::move(mhtml_contents))); +} + +void RenderFrameImpl::OnSerializeMHTMLComplete( + std::unique_ptr<MHTMLPartsGenerationDelegateImpl> delegate, + SerializeAsMHTMLCallback callback, + std::vector<blink::WebThreadSafeData> mhtml_contents, + blink::WebThreadSafeData frame_mhtml_data) { + TRACE_EVENT0("page-serialization", + "RenderFrameImpl::SerializeAsMHTML parts serialization"); + // The returned data can be empty if the frame should be skipped, but this + // is OK. + mhtml_contents.emplace_back(frame_mhtml_data); + bool has_some_data = false; + for (const auto& c : mhtml_contents) { + if (!c.IsEmpty()) { + has_some_data = true; + break; + } } // Note: the MHTML footer is written by the browser process, after the last // frame is serialized by a renderer process. MHTMLHandleWriterDelegate handle_delegate( - *params, + *delegate->TakeParams(), base::BindOnce(&RenderFrameImpl::OnWriteMHTMLComplete, weak_factory_.GetWeakPtr(), std::move(callback), - std::move(serialized_resources_uri_digests)), + delegate->TakeSerializedResourcesUriDigests()), GetTaskRunner(blink::TaskType::kInternalDefault)); - if (save_status == mojom::MhtmlSaveStatus::kSuccess && has_some_data) { + if (has_some_data) { handle_delegate.WriteContents(mhtml_contents); } else { - handle_delegate.Finish(save_status); + handle_delegate.Finish(mojom::MhtmlSaveStatus::kSuccess); } }
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index a62e8a8..7cbbc9c 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h
@@ -103,11 +103,13 @@ #include "third_party/blink/public/platform/browser_interface_broker_proxy.h" #include "third_party/blink/public/platform/child_url_loader_factory_bundle.h" #include "third_party/blink/public/platform/web_media_player.h" +#include "third_party/blink/public/platform/web_thread_safe_data.h" #include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/public/platform/websocket_handshake_throttle_provider.h" #include "third_party/blink/public/web/web_ax_object.h" #include "third_party/blink/public/web/web_document_loader.h" #include "third_party/blink/public/web/web_frame_load_type.h" +#include "third_party/blink/public/web/web_frame_serializer.h" #include "third_party/blink/public/web/web_frame_serializer_client.h" #include "third_party/blink/public/web/web_history_commit_type.h" #include "third_party/blink/public/web/web_link_preview_triggerer.h" @@ -169,6 +171,7 @@ class BlinkInterfaceRegistryImpl; class DocumentState; class MediaPermissionDispatcher; +class MHTMLPartsGenerationDelegateImpl; class NavigationClient; class PepperPluginInstanceImpl; class RendererPpapiHost; @@ -659,9 +662,11 @@ bool AllowContentInitiatedDataUrlNavigations( const blink::WebURL& url) override; void PostAccessibilityEvent(const ui::AXEvent& event) override; - bool SendAccessibilitySerialization(std::vector<ui::AXTreeUpdate> updates, - std::vector<ui::AXEvent> events, - bool had_load_complete_messages) override; + bool SendAccessibilitySerialization( + std::vector<ui::AXTreeUpdate> updates, + std::vector<ui::AXEvent> events, + ui::AXLocationAndScrollUpdates location_and_scroll_updates, + bool had_load_complete_messages) override; void CheckIfAudioSinkExistsAndIsAuthorized( const blink::WebString& sink_id, blink::WebSetSinkIdCompleteCallback callback) override; @@ -948,6 +953,12 @@ mojo::PendingRemote<mojom::FrameHTMLSerializerHandler> handler_remote) override; + void OnSerializeMHTMLComplete( + std::unique_ptr<MHTMLPartsGenerationDelegateImpl> delegate, + SerializeAsMHTMLCallback callback, + std::vector<blink::WebThreadSafeData> mhtml_contents, + blink::WebThreadSafeData frame_mhtml_data); + // Callback scheduled from SerializeAsMHTML for when writing serialized // MHTML to the handle has been completed in the file thread. void OnWriteMHTMLComplete(
diff --git a/content/shell/android/browsertests/src/org/chromium/content_shell/browsertests/ContentShellBrowserTestActivity.java b/content/shell/android/browsertests/src/org/chromium/content_shell/browsertests/ContentShellBrowserTestActivity.java index 7f32045..e37e513 100644 --- a/content/shell/android/browsertests/src/org/chromium/content_shell/browsertests/ContentShellBrowserTestActivity.java +++ b/content/shell/android/browsertests/src/org/chromium/content_shell/browsertests/ContentShellBrowserTestActivity.java
@@ -102,13 +102,13 @@ }); } - @Override /** * Ensure that the user data directory gets overridden to getPrivateDataDirectory() (which is * cleared at the start of every run); the directory that ANDROID_APP_DATA_DIR is set to in the - * context of Java browsertests is not cleared as it also holds persistent state, which - * causes test failures due to state bleedthrough. See crbug.com/617734 for details. + * context of Java browsertests is not cleared as it also holds persistent state, which causes + * test failures due to state bleedthrough. See crbug.com/617734 for details. */ + @Override protected String getUserDataDirectoryCommandLineSwitch() { return "user-data-dir"; }
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 0d78858..2cfb947 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -2158,6 +2158,7 @@ "//testing/android/native_test:native_test_support", "//ui/accessibility:ax_base_android", "//ui/android:android", + "//ui/android:test_support", "//ui/touch_selection:touch_selection", ] android_manifest =
diff --git a/content/test/data/accessibility/event/scroll-horizontal-scroll-percent-change-expected-win.txt b/content/test/data/accessibility/event/scroll-horizontal-scroll-percent-change-expected-win.txt index 0a43393..98e4c5a6 100644 --- a/content/test/data/accessibility/event/scroll-horizontal-scroll-percent-change-expected-win.txt +++ b/content/test/data/accessibility/event/scroll-horizontal-scroll-percent-change-expected-win.txt
@@ -1,4 +1,3 @@ EVENT_SYSTEM_SCROLLINGEND on <#document> role=ROLE_SYSTEM_DOCUMENT value~=[doc-url] FOCUSED,FOCUSABLE EVENT_SYSTEM_SCROLLINGEND on <#document> role=ROLE_SYSTEM_DOCUMENT value~=[doc-url] FOCUSED,FOCUSABLE EVENT_SYSTEM_SCROLLINGEND on <div#div> role=ROLE_SYSTEM_GROUPING name="overflow div" FOCUSABLE -EVENT_SYSTEM_SCROLLINGEND on <div#div> role=ROLE_SYSTEM_GROUPING name="overflow div" FOCUSABLE
diff --git a/content/test/data/accessibility/event/scroll-vertical-scroll-percent-change-expected-win.txt b/content/test/data/accessibility/event/scroll-vertical-scroll-percent-change-expected-win.txt index 0a43393..98e4c5a6 100644 --- a/content/test/data/accessibility/event/scroll-vertical-scroll-percent-change-expected-win.txt +++ b/content/test/data/accessibility/event/scroll-vertical-scroll-percent-change-expected-win.txt
@@ -1,4 +1,3 @@ EVENT_SYSTEM_SCROLLINGEND on <#document> role=ROLE_SYSTEM_DOCUMENT value~=[doc-url] FOCUSED,FOCUSABLE EVENT_SYSTEM_SCROLLINGEND on <#document> role=ROLE_SYSTEM_DOCUMENT value~=[doc-url] FOCUSED,FOCUSABLE EVENT_SYSTEM_SCROLLINGEND on <div#div> role=ROLE_SYSTEM_GROUPING name="overflow div" FOCUSABLE -EVENT_SYSTEM_SCROLLINGEND on <div#div> role=ROLE_SYSTEM_GROUPING name="overflow div" FOCUSABLE
diff --git a/content/test/gpu/gpu_tests/test_expectations/expected_color_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/expected_color_expectations.txt index 375a2d9..c72a11f 100644 --- a/content/test/gpu/gpu_tests/test_expectations/expected_color_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/expected_color_expectations.txt
@@ -118,7 +118,6 @@ # Longstanding flaking test - page reported failure -crbug.com/40877266 [ amd-0x7340 angle-d3d11 graphite-enabled passthrough release-x64 win10 ] ExpectedColor_MediaRecorderFromVideoElementWithOoprCanvasDisabled [ Failure ] crbug.com/40877266 [ android android-shield-android-tv ] ExpectedColor_MediaRecorderFromVideoElement [ RetryOnFailure ] # Tests are hitting an assertion, root cause needs to be tracked down.
diff --git a/content/utility/BUILD.gn b/content/utility/BUILD.gn index 1d8b9034..964de52b7 100644 --- a/content/utility/BUILD.gn +++ b/content/utility/BUILD.gn
@@ -79,11 +79,12 @@ "//url", ] + if (is_linux) { + deps += [ "//services/video_effects:sandbox_hook" ] + } + if (enable_video_effects) { deps += [ "//services/video_effects:service" ] - if (is_linux) { - deps += [ "//services/video_effects:sandbox_hook" ] - } } # When library CDMs are supported, we support running the CDM in the utility
diff --git a/content/utility/utility_main.cc b/content/utility/utility_main.cc index de14a93..7d651e746 100644 --- a/content/utility/utility_main.cc +++ b/content/utility/utility_main.cc
@@ -299,10 +299,8 @@ #endif #if BUILDFLAG(IS_LINUX) case sandbox::mojom::Sandbox::kVideoEffects: -#if BUILDFLAG(ENABLE_VIDEO_EFFECTS) pre_sandbox_hook = base::BindOnce(&video_effects::VideoEffectsPreSandboxHook); -#endif // BUILDFLAG(ENABLE_VIDEO_EFFECTS) break; #endif // BUILDFLAG(IS_LINUX) #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/docs/updater/functional_spec.md b/docs/updater/functional_spec.md index f101f55..8751ded 100644 --- a/docs/updater/functional_spec.md +++ b/docs/updater/functional_spec.md
@@ -1442,9 +1442,10 @@ out of eula-required mode and begin normal operation. On Windows, applications can signal the updater that the user has accepted Terms -of Service by writing `HKCU\SOFTWARE\{Company}\Update\ClientState\{AppID}` → -`usagestats` (DWORD): `1`. The updater will then transition out of eula-required -mode and begin normal operation the next time it runs periodic tasks. +of Service by writing +`HKLM\SOFTWARE\{Company}\Update\ClientStateMedium\{AppID}` → `eulaaccepted` +(DWORD): `1`. The updater will then transition out of eula-required mode and +begin normal operation the next time it runs periodic tasks. Once operating normally, the updater only returns to eula-required mode when it is uninstalled and then reinstalled with `--eularequired`.
diff --git a/extensions/browser/api/automation_internal/automation_event_router.cc b/extensions/browser/api/automation_internal/automation_event_router.cc index 4411c03..1a1dad9 100644 --- a/extensions/browser/api/automation_internal/automation_event_router.cc +++ b/extensions/browser/api/automation_internal/automation_event_router.cc
@@ -96,14 +96,15 @@ } void AutomationEventRouter::DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) { + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) { if (remote_router_) { - remote_router_->DispatchAccessibilityLocationChange(details); + remote_router_->DispatchAccessibilityLocationChange(tree_id, details); return; } for (const auto& remote : automation_remote_set_) { - remote->DispatchAccessibilityLocationChange(details.ax_tree_id, details.id, + remote->DispatchAccessibilityLocationChange(tree_id, details.id, details.new_location); } }
diff --git a/extensions/browser/api/automation_internal/automation_event_router.h b/extensions/browser/api/automation_internal/automation_event_router.h index 26d1266..5ce6a26 100644 --- a/extensions/browser/api/automation_internal/automation_event_router.h +++ b/extensions/browser/api/automation_internal/automation_event_router.h
@@ -27,6 +27,7 @@ #include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote_set.h" #include "services/accessibility/public/mojom/automation.mojom.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_tree_id.h" #include "ui/accessibility/ax_updates_and_events.h" @@ -100,7 +101,8 @@ const gfx::Point& mouse_location, const std::vector<ui::AXEvent>& events) override; void DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) override; + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) override; void DispatchTreeDestroyedEvent(ui::AXTreeID tree_id) override; void DispatchActionResult( const ui::AXActionData& data,
diff --git a/extensions/browser/api/automation_internal/automation_event_router_interface.h b/extensions/browser/api/automation_internal/automation_event_router_interface.h index f3ddbc9..7f07946 100644 --- a/extensions/browser/api/automation_internal/automation_event_router_interface.h +++ b/extensions/browser/api/automation_internal/automation_event_router_interface.h
@@ -11,6 +11,7 @@ #include "extensions/common/api/automation_internal.h" #include "extensions/common/extension_id.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_updates_and_events.h" namespace content { @@ -31,7 +32,8 @@ const gfx::Point& mouse_location, const std::vector<ui::AXEvent>& events) = 0; virtual void DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) = 0; + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) = 0; // Notify all automation extensions that an accessibility tree was // destroyed. If |browser_context| is null, use the currently active context.
diff --git a/extensions/browser/api/automation_internal/automation_internal_api.cc b/extensions/browser/api/automation_internal/automation_internal_api.cc index a99e740e..74698f3 100644 --- a/extensions/browser/api/automation_internal/automation_internal_api.cc +++ b/extensions/browser/api/automation_internal/automation_internal_api.cc
@@ -43,6 +43,7 @@ #include "ui/accessibility/ax_action_handler_base.h" #include "ui/accessibility/ax_action_handler_registry.h" #include "ui/accessibility/ax_enum_util.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_updates_and_events.h" #if defined(USE_AURA) @@ -353,10 +354,11 @@ } void AccessibilityLocationChangesReceived( - const std::vector<ui::AXLocationChanges>& details) override { + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) override { AutomationEventRouter* router = AutomationEventRouter::GetInstance(); - for (const auto& src : details) { - router->DispatchAccessibilityLocationChange(src); + for (const auto& src : details.location_changes) { + router->DispatchAccessibilityLocationChange(tree_id, src); } }
diff --git a/extensions/browser/api/lock_screen_data/data_item.cc b/extensions/browser/api/lock_screen_data/data_item.cc index 0fab5eae..f3ec57c 100644 --- a/extensions/browser/api/lock_screen_data/data_item.cc +++ b/extensions/browser/api/lock_screen_data/data_item.cc
@@ -43,7 +43,7 @@ // Encrypts |data| with AES key |raw_key|. Returns whether the encryption was // successful, in which case |*result| will be set to the encrypted data. -bool EncryptData(const std::vector<char> data, +bool EncryptData(const std::vector<char>& data, const std::string& raw_key, std::string* result) { std::string initialization_vector(kAesInitializationVectorLength, ' '); @@ -56,7 +56,7 @@ if (!encryptor.Init(key.get(), crypto::Encryptor::CBC, initialization_vector)) return false; - return encryptor.Encrypt(std::string(data.data(), data.size()), result); + return encryptor.Encrypt(std::string_view(data.data(), data.size()), result); } // Decrypts |data| content using AES key |raw_key|. Returns the operation result
diff --git a/extensions/common/extension_features.cc b/extensions/common/extension_features.cc index b7c5cbc..531017a 100644 --- a/extensions/common/extension_features.cc +++ b/extensions/common/extension_features.cc
@@ -190,4 +190,8 @@ "DeclarativeNetRequestHeaderSubstitution", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kSilentDebuggerExtensionAPI, + "SilentDebuggerExtensionAPI", + base::FEATURE_DISABLED_BY_DEFAULT); + } // namespace extensions_features
diff --git a/extensions/common/extension_features.h b/extensions/common/extension_features.h index 24adc57..62734dd 100644 --- a/extensions/common/extension_features.h +++ b/extensions/common/extension_features.h
@@ -230,6 +230,8 @@ // type for modifying headers. BASE_DECLARE_FEATURE(kDeclarativeNetRequestHeaderSubstitution); +// Show no warning banner when an extension uses CDP's `chrome.debugger`. +BASE_DECLARE_FEATURE(kSilentDebuggerExtensionAPI); } // namespace extensions_features #endif // EXTENSIONS_COMMON_EXTENSION_FEATURES_H_
diff --git a/gpu/command_buffer/service/shared_image/shared_image_manager.cc b/gpu/command_buffer/service/shared_image/shared_image_manager.cc index 8a321c4..16421a5 100644 --- a/gpu/command_buffer/service/shared_image/shared_image_manager.cc +++ b/gpu/command_buffer/service/shared_image/shared_image_manager.cc
@@ -57,9 +57,12 @@ namespace { #if BUILDFLAG(IS_OZONE) +// TODO(crbug.com/330865436): It turns out that `supports_overlays` is +// currently set only in the browser process; we need to ensure that it is set +// in the GPU process before we can re-enable this feature. BASE_FEATURE(kSupportScanoutOnOzoneOnlyIfOverlaysSupported, "SupportScanoutOnOzoneOnlyIfOverlaysSupported", - base::FEATURE_ENABLED_BY_DEFAULT); + base::FEATURE_DISABLED_BY_DEFAULT); #endif // `DCHECKS` and dumps without crashing that `backing`'s usage overlaps with
diff --git a/infra/config/generated/builders/ci/mac-official/gn-args.json b/infra/config/generated/builders/ci/mac-official/gn-args.json index 6f38c92..62eae43a 100644 --- a/infra/config/generated/builders/ci/mac-official/gn-args.json +++ b/infra/config/generated/builders/ci/mac-official/gn-args.json
@@ -1,6 +1,7 @@ { "gn_args": { "is_official_build": true, + "save_reproducers_on_lld_crash": true, "target_cpu": "arm64", "target_os": "mac", "use_remoteexec": true,
diff --git a/infra/config/generated/builders/try/build-size/gn-args.json b/infra/config/generated/builders/try/build-size/gn-args.json index 258295d..3e8ad10c 100644 --- a/infra/config/generated/builders/try/build-size/gn-args.json +++ b/infra/config/generated/builders/try/build-size/gn-args.json
@@ -4,6 +4,7 @@ "is_component_build": false, "is_debug": false, "symbol_level": 0, + "system_headers_in_deps": true, "target_cpu": "x64", "target_os": "linux", "use_remoteexec": true,
diff --git a/infra/config/generated/builders/try/mac-official/gn-args.json b/infra/config/generated/builders/try/mac-official/gn-args.json index bab93dc..c009db7 100644 --- a/infra/config/generated/builders/try/mac-official/gn-args.json +++ b/infra/config/generated/builders/try/mac-official/gn-args.json
@@ -2,6 +2,7 @@ "gn_args": { "dcheck_always_on": true, "is_official_build": true, + "save_reproducers_on_lld_crash": true, "symbol_level": 1, "target_cpu": "arm64", "target_os": "mac",
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg index f27d57c..79c25f8c 100644 --- a/infra/config/generated/luci/cr-buildbucket.cfg +++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -97368,14 +97368,6 @@ ' "test_names": [' ' "url_unittests"' ' ]' - ' },' - ' {' - ' "bucket": "ci",' - ' "build_dir": "out/linux-rel",' - ' "builder_name": "Linux Tests",' - ' "test_names": [' - ' "telemetry_gpu_unittests"' - ' ]' ' }' ' ],' ' "cq": "path-based",'
diff --git a/infra/config/gn_args/gn_args.star b/infra/config/gn_args/gn_args.star index 504cfa5a..129ce56 100644 --- a/infra/config/gn_args/gn_args.star +++ b/infra/config/gn_args/gn_args.star
@@ -1208,6 +1208,13 @@ ) gn_args.config( + name = "save_lld_reproducers", + args = { + "save_reproducers_on_lld_crash": True, + }, +) + +gn_args.config( name = "skip_generate_fuzzer_owners", args = { "generate_fuzzer_owners": False, @@ -1250,6 +1257,13 @@ ) gn_args.config( + name = "system_headers_in_deps", + args = { + "system_headers_in_deps": True, + }, +) + +gn_args.config( name = "full_mte", args = { "use_full_mte": True,
diff --git a/infra/config/lib/targets-internal/pyl-generators.star b/infra/config/lib/targets-internal/pyl-generators.star index 91a854b..aa0a71f4 100644 --- a/infra/config/lib/targets-internal/pyl-generators.star +++ b/infra/config/lib/targets-internal/pyl-generators.star
@@ -329,9 +329,16 @@ _generate_mixin_values(formatter, mixin, generate_skylab_container = True) - if n.props.mixins: + mixins = [] + + # The order that mixins are declared is significant, + # DEFINITION_ORDER preserves the order that the edges were added + # from the parent to the child + for mixin in graph.children(n.key, _targets_nodes.MIXIN.kind, graph.DEFINITION_ORDER): + mixins.append(mixin.key.id) + if mixins: formatter.open_scope("'mixins': [") - for m in n.props.mixins: + for m in mixins: formatter.add_line("'{}',".format(m)) formatter.close_scope("],")
diff --git a/infra/config/lib/targets.star b/infra/config/lib/targets.star index 940c4ca..cf7e32d 100644 --- a/infra/config/lib/targets.star +++ b/infra/config/lib/targets.star
@@ -547,15 +547,20 @@ """ if enabled == None: enabled = True - key = _targets_nodes.VARIANT.add(name, props = dict( + variant_key = _targets_nodes.VARIANT.add(name, props = dict( identifier = identifier, enabled = enabled, - mixins = mixins, mixin_values = _mixin_values(**kwargs), )) + for m in mixins or []: + if generate_pyl_entry and type(m) != type(""): + fail("variants used by //testing/buildbot cannot use anonymous mixins", trace = stacktrace(skip = 2)) + mixin_key = _targets_nodes.MIXIN.key(m) + graph.add_edge(variant_key, mixin_key) + if generate_pyl_entry: - graph.add_edge(keys.project(), key) + graph.add_edge(keys.project(), variant_key) def _bundle(*, name = None, additional_compile_targets = None, targets = None, mixins = None, variants = None, per_test_modifications = None): """Define a targets bundle.
diff --git a/infra/config/subprojects/chromium/ci/chromium.star b/infra/config/subprojects/chromium/ci/chromium.star index 11a31eb0..f69248f 100644 --- a/infra/config/subprojects/chromium/ci/chromium.star +++ b/infra/config/subprojects/chromium/ci/chromium.star
@@ -637,6 +637,7 @@ "remoteexec", "mac", "arm64", + "save_lld_reproducers", ], ), targets = targets.bundle(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.infra.star b/infra/config/subprojects/chromium/try/tryserver.chromium.infra.star index eb2e5d2..4b83bec 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.infra.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.infra.star
@@ -140,14 +140,6 @@ ], "build_dir": "out/linux-rel", }, - { - "bucket": "ci", - "builder_name": "Linux Tests", - "test_names": [ - "telemetry_gpu_unittests", - ], - "build_dir": "out/linux-rel", - }, ], }, service_account = try_.DEFAULT_SERVICE_ACCOUNT,
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.linux.star b/infra/config/subprojects/chromium/try/tryserver.chromium.linux.star index 68bf0f4e..93603eb 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.linux.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.linux.star
@@ -43,6 +43,7 @@ configs = [ "release_try_builder", "remoteexec", + "system_headers_in_deps", "dcheck_off", "linux", "x64",
diff --git a/infra/inclusive_language_presubmit_exempt_dirs.txt b/infra/inclusive_language_presubmit_exempt_dirs.txt index f790eab..7470ff58 100644 --- a/infra/inclusive_language_presubmit_exempt_dirs.txt +++ b/infra/inclusive_language_presubmit_exempt_dirs.txt
@@ -653,7 +653,7 @@ third_party/rust/chromium_crates_io/vendor/anyhow-1.0.89/.github/workflows 3 1 third_party/rust/chromium_crates_io/vendor/base64-0.13.1 1 1 third_party/rust/chromium_crates_io/vendor/byteorder-1.5.0/.github/workflows 5 1 -third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.github/workflows 3 1 +third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.github/workflows 3 1 third_party/rust/chromium_crates_io/vendor/cfg-if-1.0.0/.github/workflows 4 1 third_party/rust/chromium_crates_io/vendor/clap-4.5.17 2 1 third_party/rust/chromium_crates_io/vendor/clap-4.5.17/src 4 2 @@ -669,7 +669,7 @@ third_party/rust/chromium_crates_io/vendor/cxx-1.0.128/.github/workflows 4 3 third_party/rust/chromium_crates_io/vendor/cxx-1.0.128/src 4 1 third_party/rust/chromium_crates_io/vendor/either-1.13.0/.github/workflows 1 1 -third_party/rust/chromium_crates_io/vendor/flate2-1.0.33 33 2 +third_party/rust/chromium_crates_io/vendor/flate2-1.0.34 33 2 third_party/rust/chromium_crates_io/vendor/getrandom-0.2.15 5 1 third_party/rust/chromium_crates_io/vendor/glob-0.3.1/.github/workflows 1 1 third_party/rust/chromium_crates_io/vendor/hex-0.4.3 1 1 @@ -694,7 +694,7 @@ third_party/rust/chromium_crates_io/vendor/rand_core-0.6.4 4 1 third_party/rust/chromium_crates_io/vendor/rand_core-0.6.4/src 3 1 third_party/rust/chromium_crates_io/vendor/rand_pcg-0.3.1 4 1 -third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables 3 2 +third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables 3 2 third_party/rust/chromium_crates_io/vendor/regex-1.10.6 1 1 third_party/rust/chromium_crates_io/vendor/regex-1.10.6/src 1 1 third_party/rust/chromium_crates_io/vendor/regex-1.10.6/tests 7 6
diff --git a/internal b/internal index ee6b0d65..882104e 160000 --- a/internal +++ b/internal
@@ -1 +1 @@ -Subproject commit ee6b0d656f2c6feb3d3e4b3a7371439443e87957 +Subproject commit 882104e8ef00c37b322eb765dca65f7220a7a854
diff --git a/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client.mm b/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client.mm index 3a6f827c..5d5b4ba8 100644 --- a/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client.mm +++ b/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client.mm
@@ -237,7 +237,7 @@ const AutocompleteMatch& match, const AutocompleteMatch& alternative_nav_match, IDNA2008DeviationCharacter deviation_char_in_hostname) { - [delegate_ omniboxDidAcceptText:text + [delegate_ omniboxDidAcceptText:match.fill_into_edit destinationURL:destination_url thumbnailRemoved:thumbnail_removed_in_session_]; }
diff --git a/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client_unittest.mm b/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client_unittest.mm index 6eeac257..8e80905 100644 --- a/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client_unittest.mm +++ b/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client_unittest.mm
@@ -83,9 +83,10 @@ AutocompleteMatch match{/*provider=*/nullptr, /*relevance=*/1000, /*deletable=*/false, /*type=*/AutocompleteMatchType::SEARCH_SUGGEST}; + match.fill_into_edit = input_text; match.destination_url = GURL("https://www.google.com/search?q=search+terms"); - OCMExpect([mock_delegate_ omniboxDidAcceptText:input_text + OCMExpect([mock_delegate_ omniboxDidAcceptText:match.fill_into_edit destinationURL:match.destination_url thumbnailRemoved:NO]); UseAutocompleteMatch(input_text, match);
diff --git a/ios/chrome/browser/lens_overlay/coordinator/lens_overlay_coordinator.mm b/ios/chrome/browser/lens_overlay/coordinator/lens_overlay_coordinator.mm index 04070b5..f234cc3 100644 --- a/ios/chrome/browser/lens_overlay/coordinator/lens_overlay_coordinator.mm +++ b/ios/chrome/browser/lens_overlay/coordinator/lens_overlay_coordinator.mm
@@ -76,6 +76,12 @@ const CGFloat kSelectionOffsetPadding = 100.0f; +// The expected number of animations happening at the same time when exiting. +const int kExpectedExitAnimationCount = 2; + +// The duration of the dismiss animation when exiting the selection UI. +const CGFloat kSelectionViewDismissAnimationDuration = 0.2f; + NSString* const kCustomConsentSheetDetentIdentifier = @"kCustomConsentSheetDetentIdentifier"; @@ -138,6 +144,8 @@ BOOL _searchPerformedInSession; /// Whether the first interaction has been recorded. BOOL _firstInteractionRecorded; + /// Indicates the Lens Overlay is in the exit flow. + BOOL _isExiting; } #pragma mark - public @@ -370,6 +378,12 @@ - (void)destroyLensUI:(BOOL)animated reason:(lens::LensOverlayDismissalSource)dismissalSource { + if (_isExiting) { + return; + } + + _isExiting = YES; + RecordAction(base::UserMetricsAction("Mobile.LensOverlay.Closed")); [self recordDismissalMetrics:dismissalSource]; @@ -381,25 +395,101 @@ _associatedTabHelper = nil; } + if (!animated) { + [self exitWithoutAnimation]; + return; + } + // Taking the screenshot triggered fullscreen mode. Ensure it's reverted in // the cleanup process. Exiting fullscreen has to happen on destruction to // ensure a smooth transition back to the content. - __weak UIViewController* presentingViewController = + __weak __typeof(self) weakSelf = self; + __block int completionCount = 0; + void (^onAnimationFinished)() = ^{ + completionCount++; + if (completionCount == kExpectedExitAnimationCount) { + [weakSelf dismissLensOverlayWithCompletion:^{ + [weakSelf destroyViewControllersAndMediators]; + }]; + } + }; + + [self animateBottomSheetExitWithCompletion:onAnimationFinished]; + [self animateSelectionUIExitWithCompletion:onAnimationFinished]; +} + +#pragma mark - Exit animations + +- (void)exitWithoutAnimation { + __weak __typeof(self) weakSelf = self; + void (^completion)() = ^{ + [weakSelf exitFullscreenAnimated:NO]; + [weakSelf destroyViewControllersAndMediators]; + }; + + UIViewController* presentingViewController = _containerViewController.presentingViewController; - if (presentingViewController) { - __weak __typeof(self) weakSelf = self; - [_selectionViewController resetSelectionAreaToInitialPosition:^{ - [presentingViewController - dismissViewControllerAnimated:animated - completion:^{ - [weakSelf exitFullscreenAnimated:animated]; - [weakSelf destroyViewControllersAndMediators]; - }]; - }]; - } else { - [self exitFullscreenAnimated:NO]; - [self destroyViewControllersAndMediators]; + + if (!presentingViewController) { + completion(); + return; } + + [presentingViewController dismissViewControllerAnimated:NO + completion:completion]; +} + +- (void)animateBottomSheetExitWithCompletion:(void (^)())completion { + UIViewController* presentedViewController = + _containerViewController.presentedViewController; + if (!presentedViewController) { + completion(); + return; + } + + [presentedViewController + dismissViewControllerAnimated:YES + completion:^{ + base::SequencedTaskRunner::GetCurrentDefault() + ->PostTask(FROM_HERE, + base::BindOnce(completion)); + }]; +} + +- (void)animateSelectionUIExitWithCompletion:(void (^)())completion { + __weak __typeof(self) weakSelf = self; + [_selectionViewController resetSelectionAreaToInitialPosition:^{ + [weakSelf exitFullscreenAnimated:YES]; + [UIView animateWithDuration:kSelectionViewDismissAnimationDuration + animations:^{ + __typeof(self) strongSelf = weakSelf; + if (!strongSelf) { + return; + } + strongSelf->_selectionViewController.view.alpha = 0; + } + completion:^(BOOL status) { + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, base::BindOnce(completion)); + }]; + }]; +} + +- (void)dismissLensOverlayWithCompletion:(void (^)())completion { + UIViewController* presentingViewController = + _containerViewController.presentingViewController; + if (!presentingViewController) { + completion(); + return; + } + + [presentingViewController + dismissViewControllerAnimated:NO + completion:^{ + base::SequencedTaskRunner::GetCurrentDefault() + ->PostTask(FROM_HERE, + base::BindOnce(completion)); + }]; } #pragma mark - UISheetPresentationControllerDelegate @@ -712,6 +802,7 @@ _selectionViewController = nil; _mediator = nil; _consentViewController = nil; + _isExiting = NO; } // The tab helper for the active web state.
diff --git a/ios/chrome/browser/lens_overlay/ui/lens_overlay_container_view_controller.mm b/ios/chrome/browser/lens_overlay/ui/lens_overlay_container_view_controller.mm index 981675d2..dfacf03 100644 --- a/ios/chrome/browser/lens_overlay/ui/lens_overlay_container_view_controller.mm +++ b/ios/chrome/browser/lens_overlay/ui/lens_overlay_container_view_controller.mm
@@ -29,7 +29,7 @@ - (void)viewDidLoad { [super viewDidLoad]; - self.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; + self.view.backgroundColor = [UIColor clearColor]; self.view.accessibilityIdentifier = kLenscontainerViewAccessibilityIdentifier; if (!self.selectionViewController) {
diff --git a/ios/chrome/browser/push_notification/model/push_notification_settings_util_unittest.mm b/ios/chrome/browser/push_notification/model/push_notification_settings_util_unittest.mm index b66c77f..4c98b2a 100644 --- a/ios/chrome/browser/push_notification/model/push_notification_settings_util_unittest.mm +++ b/ios/chrome/browser/push_notification/model/push_notification_settings_util_unittest.mm
@@ -111,7 +111,8 @@ // When 0 clients are enabled, the state is DISABLED. // When `enabled` >= 1 AND `disabled` >= 1, the state is INDETERMINANT // When `enabled` >=1 and `disabled` == 0, then state is ENABLED. -TEST_F(PushNotificationSettingsUtilTest, TestPermissionState) { +// TODO(crbug.com/370742354): re-enable +TEST_F(PushNotificationSettingsUtilTest, DISABLED_TestPermissionState) { // Enable Notifications in random order. ClientPermissionState state = GetNotificationPermissionState( base::SysNSStringToUTF8(fake_id_.gaiaID), pref_service_);
diff --git a/ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator.mm b/ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator.mm index 9387d47..fce7320f2 100644 --- a/ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator.mm +++ b/ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator.mm
@@ -103,25 +103,22 @@ dismissButton; // Initialize and configure RecentTabsMediator. Make sure to use the - // OriginalChromeBrowserState since the mediator services need a SignIn - // manager which is not present in an OffTheRecord BrowserState. + // OriginalProfile since the mediator services need a SignIn + // manager which is not present in an OffTheRecord Profile. DCHECK(!self.mediator); - ChromeBrowserState* browserState = self.browser->GetBrowserState(); + ProfileIOS* profile = self.browser->GetProfile(); sync_sessions::SessionSyncService* syncService = - SessionSyncServiceFactory::GetForBrowserState(browserState); + SessionSyncServiceFactory::GetForProfile(profile); signin::IdentityManager* identityManager = - IdentityManagerFactory::GetForProfile(browserState); + IdentityManagerFactory::GetForProfile(profile); sessions::TabRestoreService* restoreService = - IOSChromeTabRestoreServiceFactory::GetForBrowserState(browserState); + IOSChromeTabRestoreServiceFactory::GetForProfile(profile); FaviconLoader* faviconLoader = - IOSChromeFaviconLoaderFactory::GetForBrowserState(browserState); - syncer::SyncService* service = - SyncServiceFactory::GetForBrowserState(browserState); - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(browserState); + IOSChromeFaviconLoaderFactory::GetForProfile(profile); + syncer::SyncService* service = SyncServiceFactory::GetForProfile(profile); + BrowserList* browserList = BrowserListFactory::GetForProfile(profile); SceneState* currentSceneState = self.browser->GetSceneState(); - BOOL isDisabled = - IsIncognitoModeForced(self.browser->GetBrowserState()->GetPrefs()); + BOOL isDisabled = IsIncognitoModeForced(profile->GetPrefs()); self.mediator = [[RecentTabsMediator alloc] initWithSessionSyncService:syncService identityManager:identityManager @@ -132,7 +129,7 @@ sceneState:currentSceneState disabledByPolicy:isDisabled engagementTracker:feature_engagement::TrackerFactory:: - GetForBrowserState(browserState) + GetForProfile(profile) modeHolder:nil]; // Set the consumer first before calling [self.mediator initObservers] and @@ -194,7 +191,7 @@ "Mobile.RecentTabsManager.TotalTabsFromOtherDevicesOpenAll", session->tabs.size()); - BOOL inIncognito = self.browser->GetBrowserState()->IsOffTheRecord(); + BOOL inIncognito = self.browser->GetProfile()->IsOffTheRecord(); UrlLoadingBrowserAgent* URLLoader = UrlLoadingBrowserAgent::FromBrowser(self.browser); OpenDistantSessionInBackground(session, inIncognito,
diff --git a/ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator_unittest.mm b/ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator_unittest.mm index 13aa0d88..5f04964 100644 --- a/ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator_unittest.mm
@@ -140,47 +140,43 @@ void SetUp() override { BlockCleanupTest::SetUp(); - TestChromeBrowserState::Builder test_cbs_builder; - test_cbs_builder.AddTestingFactory( - ios::FaviconServiceFactory::GetInstance(), - ios::FaviconServiceFactory::GetDefaultFactory()); - test_cbs_builder.AddTestingFactory( + TestProfileIOS::Builder builder; + builder.AddTestingFactory(ios::FaviconServiceFactory::GetInstance(), + ios::FaviconServiceFactory::GetDefaultFactory()); + builder.AddTestingFactory( AuthenticationServiceFactory::GetInstance(), AuthenticationServiceFactory::GetDefaultFactory()); - test_cbs_builder.AddTestingFactory( + builder.AddTestingFactory( IOSChromeLargeIconServiceFactory::GetInstance(), IOSChromeLargeIconServiceFactory::GetDefaultFactory()); - test_cbs_builder.AddTestingFactory( + builder.AddTestingFactory( IOSChromeFaviconLoaderFactory::GetInstance(), IOSChromeFaviconLoaderFactory::GetDefaultFactory()); - test_cbs_builder.AddTestingFactory( - ios::HistoryServiceFactory::GetInstance(), - ios::HistoryServiceFactory::GetDefaultFactory()); + builder.AddTestingFactory(ios::HistoryServiceFactory::GetInstance(), + ios::HistoryServiceFactory::GetDefaultFactory()); - test_cbs_builder.AddTestingFactory( + builder.AddTestingFactory( SyncServiceFactory::GetInstance(), base::BindRepeating(&BuildFakeSyncServiceFactory)); - test_cbs_builder.AddTestingFactory( + builder.AddTestingFactory( SessionSyncServiceFactory::GetInstance(), base::BindRepeating( &BuildMockSessionSyncServiceForRecentTabsTableCoordinator)); - test_cbs_builder.AddTestingFactory( + builder.AddTestingFactory( IOSChromeTabRestoreServiceFactory::GetInstance(), IOSChromeTabRestoreServiceFactory::GetDefaultFactory()); - chrome_browser_state_ = std::move(test_cbs_builder).Build(); + profile_ = std::move(builder).Build(); - AuthenticationServiceFactory::CreateAndInitializeForBrowserState( - chrome_browser_state_.get(), - std::make_unique<FakeAuthenticationServiceDelegate>()); + AuthenticationServiceFactory::CreateAndInitializeForProfile( + profile_.get(), std::make_unique<FakeAuthenticationServiceDelegate>()); FakeStartupInformation* startup_information_ = [[FakeStartupInformation alloc] init]; app_state_ = [[AppState alloc] initWithStartupInformation:startup_information_]; scene_state_ = [[SceneState alloc] initWithAppState:app_state_]; - browser_ = std::make_unique<TestBrowser>(chrome_browser_state_.get(), - scene_state_); + browser_ = std::make_unique<TestBrowser>(profile_.get(), scene_state_); } void TearDown() override { @@ -196,11 +192,10 @@ BOOL has_foreign_sessions) { SessionSyncServiceMockForRecentTabsTableCoordinator* session_sync_service = static_cast<SessionSyncServiceMockForRecentTabsTableCoordinator*>( - SessionSyncServiceFactory::GetForBrowserState( - chrome_browser_state_.get())); + SessionSyncServiceFactory::GetForProfile(profile_.get())); sync_service_ = static_cast<syncer::TestSyncService*>( - SyncServiceFactory::GetForBrowserState(chrome_browser_state_.get())); + SyncServiceFactory::GetForProfile(profile_.get())); if (!signed_in) { CHECK(!sync_enabled); @@ -227,8 +222,7 @@ if (signed_in) { AuthenticationService* authentication_service = - AuthenticationServiceFactory::GetForBrowserState( - chrome_browser_state_.get()); + AuthenticationServiceFactory::GetForProfile(profile_.get()); FakeSystemIdentity* identity = [FakeSystemIdentity fakeIdentity1]; @@ -297,7 +291,7 @@ syncer::FakeDataTypeControllerDelegate fake_controller_delegate_; testing::NiceMock<OpenTabsUIDelegateMock> open_tabs_ui_delegate_; testing::NiceMock<GlobalIdMapperMock> global_id_mapper_; - std::unique_ptr<TestChromeBrowserState> chrome_browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<Browser> browser_; AppState* app_state_; SceneState* scene_state_; @@ -313,7 +307,7 @@ sessions::SessionTab open_tab_; std::vector<const sessions::SessionTab*> open_tabs_; - // Must be declared *after* `chrome_browser_state_` so it can outlive it. + // Must be declared *after* `profile_` so it can outlive it. RecentTabsCoordinator* coordinator_; id<ApplicationCommands> mock_application_commands_handler_; id<SettingsCommands> mock_settings_commands_handler_;
diff --git a/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm b/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm index b797549..87cd6d3 100644 --- a/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm +++ b/ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.mm
@@ -180,7 +180,7 @@ @property(nonatomic, strong) SigninPromoViewMediator* signinPromoViewMediator; // The browser state used for many operations, derived from the one provided by // `self.browser`. -@property(nonatomic, readonly) ChromeBrowserState* browserState; +@property(nonatomic, readonly) ProfileIOS* profile; // YES if this ViewController is being presented on incognito mode. @property(nonatomic, readonly, getter=isIncognito) BOOL incognito; // Convenience getter for `self.browser`'s WebStateList @@ -238,14 +238,14 @@ - (void)setBrowser:(Browser*)browser { _browser = browser; if (browser) { - ChromeBrowserState* browserState = browser->GetBrowserState(); + ProfileIOS* profile = browser->GetProfile(); // Some RecentTabs services depend on objects not present in the - // OffTheRecord BrowserState, in order to prevent crashes set - // `_browserState` to `browserState->OriginalChromeBrowserState`. While + // OffTheRecord profile, in order to prevent crashes set + // `_profile` to `profile->OriginalProfile`. While // doing this check if incognito or not so that pages are loaded // accordingly. - _browserState = browserState->GetOriginalChromeBrowserState(); - _incognito = browserState->IsOffTheRecord(); + _profile = profile->GetOriginalProfile(); + _incognito = profile->IsOffTheRecord(); _syncObserver.reset(new SyncObserverBridge(self, self.syncService)); } else { _syncObserver.reset(); @@ -269,8 +269,8 @@ } - (syncer::SyncService*)syncService { - DCHECK(_browserState); - return SyncServiceFactory::GetForBrowserState(_browserState); + DCHECK(_profile); + return SyncServiceFactory::GetForProfile(_profile); } // Returns YES if the user cannot turn on sync for enterprise policy reasons. @@ -291,9 +291,9 @@ return YES; } - DCHECK(self.browserState); + DCHECK(self.profile); AuthenticationService* authService = - AuthenticationServiceFactory::GetForBrowserState(self.browserState); + AuthenticationServiceFactory::GetForProfile(self.profile); DCHECK(authService); // Return NO is sign-in is disabled by the BrowserSignin policy. return authService->GetServiceStatus() == @@ -603,7 +603,7 @@ // Adds Other Devices Section and its header. - (void)addOtherDevicesSectionForState:(SessionsSyncUserState)state { AuthenticationService* authService = - AuthenticationServiceFactory::GetForBrowserState(self.browserState); + AuthenticationServiceFactory::GetForProfile(self.profile); const AuthenticationService::ServiceStatus authServiceStatus = authService->GetServiceStatus(); // If sign-in is disabled through user Settings, do not show Other Devices @@ -721,13 +721,13 @@ - (void)addSigninPromoViewItem { // Init `_signinPromoViewMediator` if nil. - if (!self.signinPromoViewMediator && self.browserState) { + if (!self.signinPromoViewMediator && self.profile) { self.signinPromoViewMediator = [[SigninPromoViewMediator alloc] initWithAccountManagerService:ChromeAccountManagerServiceFactory:: - GetForBrowserState(self.browserState) + GetForProfile(self.profile) authService:AuthenticationServiceFactory:: - GetForBrowserState(self.browserState) - prefService:self.browserState->GetPrefs() + GetForProfile(self.profile) + prefService:self.profile->GetPrefs() syncService:self.syncService accessPoint:signin_metrics::AccessPoint:: ACCESS_POINT_RECENT_TABS @@ -891,7 +891,7 @@ return; TabsSearchService* search_service = - TabsSearchServiceFactory::GetForBrowserState(self.browserState); + TabsSearchServiceFactory::GetForProfile(self.profile); __weak RecentTabsTableViewController* weakSelf = self; const std::u16string& search_terms = base::SysNSStringToUTF16(self.searchTerms); @@ -975,7 +975,7 @@ // Helper for removeSessionAtTableSectionWithIdentifier - (void)deleteSession:(std::string)sessionTag { - SessionSyncServiceFactory::GetForBrowserState(self.browserState) + SessionSyncServiceFactory::GetForProfile(self.profile) ->GetOpenTabsUIDelegate() ->DeleteForeignSession(sessionTag); } @@ -1012,7 +1012,7 @@ // A manual item refresh is necessary when tab search is disabled or there // is no search term. sync_sessions::SessionSyncService* syncService = - SessionSyncServiceFactory::GetForBrowserState(self.browserState); + SessionSyncServiceFactory::GetForProfile(self.profile); auto syncedSessions = std::make_unique<synced_sessions::SyncedSessions>(syncService); @@ -1231,7 +1231,7 @@ // Update the history search result count once available. if (itemTypeSelected == ItemTypeSuggestedActionSearchHistory) { TabsSearchService* search_service = - TabsSearchServiceFactory::GetForBrowserState(self.browserState); + TabsSearchServiceFactory::GetForProfile(self.profile); __weak TableViewTabsSearchSuggestedHistoryCell* weakCell = base::apple::ObjCCastStrict<TableViewTabsSearchSuggestedHistoryCell>( cell); @@ -1519,7 +1519,7 @@ return; sync_sessions::OpenTabsUIDelegate* openTabs = - SessionSyncServiceFactory::GetForBrowserState(self.browserState) + SessionSyncServiceFactory::GetForProfile(self.profile) ->GetOpenTabsUIDelegate(); const sessions::SessionTab* toLoad = nullptr; if (openTabs->GetForeignTab(distantTab->session_tag, distantTab->tab_id, @@ -1544,7 +1544,7 @@ new_tab_page_uma::ACTION_OPENED_FOREIGN_SESSION); std::unique_ptr<web::WebState> web_state = session_util::CreateWebStateWithNavigationEntries( - self.browserState, toLoad->current_navigation_index, + self.profile, toLoad->current_navigation_index, toLoad->navigations); if (IsNTPWithoutHistory(currentWebState)) { self.webStateList->ReplaceWebStateAt(self.webStateList->active_index(), @@ -1609,7 +1609,7 @@ base::UserMetricsAction("TabsSearch.SuggestedActions.SearchOnWeb")); TemplateURLService* templateURLService = - ios::TemplateURLServiceFactory::GetForBrowserState(self.browserState); + ios::TemplateURLServiceFactory::GetForProfile(self.profile); const TemplateURL* defaultURL = templateURLService->GetDefaultSearchProvider(); @@ -1621,7 +1621,7 @@ GURL searchUrl(defaultURL->url_ref().ReplaceSearchTerms( search_args, templateURLService->search_terms_data())); - web::WebState::CreateParams params(self.browserState); + web::WebState::CreateParams params(self.profile); auto webState = web::WebState::Create(params); web::WebState* webStatePtr = webState.get(); @@ -1882,7 +1882,7 @@ // ViewController. - (BOOL)shouldShowHistorySyncOnPromoAction { AuthenticationService* authenticationService = - AuthenticationServiceFactory::GetForBrowserState(_browserState); + AuthenticationServiceFactory::GetForProfile(_profile); // TODO(crbug.com/40276546): Delete the usage of ConsentLevel::kSync after // Phase 2 on iOS is launched. See ConsentLevel::kSync documentation for // details. @@ -1896,7 +1896,7 @@ HistorySyncSkipReason skipReason = [HistorySyncCoordinator getHistorySyncOptInSkipReason:self.syncService authenticationService:authenticationService - prefService:_browserState->GetPrefs() + prefService:_profile->GetPrefs() isHistorySyncOptional:NO]; return skipReason == HistorySyncSkipReason::kNone; }
diff --git a/ios/chrome/browser/ui/save_to_photos/save_to_photos_coordinator.mm b/ios/chrome/browser/ui/save_to_photos/save_to_photos_coordinator.mm index f372d120..a220861 100644 --- a/ios/chrome/browser/ui/save_to_photos/save_to_photos_coordinator.mm +++ b/ios/chrome/browser/ui/save_to_photos/save_to_photos_coordinator.mm
@@ -80,14 +80,13 @@ HandlerForProtocol(dispatcher, ManageStorageAlertCommands); id<ApplicationCommands> applicationHandler = HandlerForProtocol(dispatcher, ApplicationCommands); - ChromeBrowserState* browserState = self.browser->GetBrowserState(); - PhotosService* photosService = - PhotosServiceFactory::GetForProfile(browserState); - PrefService* prefService = browserState->GetPrefs(); + ProfileIOS* profile = self.browser->GetProfile(); + PhotosService* photosService = PhotosServiceFactory::GetForProfile(profile); + PrefService* prefService = profile->GetPrefs(); ChromeAccountManagerService* accountManagerService = - ChromeAccountManagerServiceFactory::GetForBrowserState(browserState); + ChromeAccountManagerServiceFactory::GetForProfile(profile); signin::IdentityManager* identityManager = - IdentityManagerFactory::GetForProfile(browserState); + IdentityManagerFactory::GetForProfile(profile); _mediator = [[SaveToPhotosMediator alloc] initWithPhotosService:photosService prefService:prefService
diff --git a/ios/chrome/browser/ui/save_to_photos/save_to_photos_coordinator_unittest.mm b/ios/chrome/browser/ui/save_to_photos/save_to_photos_coordinator_unittest.mm index b48ad662..0f580b9 100644 --- a/ios/chrome/browser/ui/save_to_photos/save_to_photos_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/save_to_photos/save_to_photos_coordinator_unittest.mm
@@ -55,13 +55,13 @@ protected: void SetUp() final { PlatformTest::SetUp(); - TestChromeBrowserState::Builder builder; + TestProfileIOS::Builder builder; builder.AddTestingFactory( IdentityManagerFactory::GetInstance(), base::BindRepeating(IdentityTestEnvironmentBrowserStateAdaptor:: BuildIdentityManagerForTests)); - browser_state_ = std::move(builder).Build(); - browser_ = std::make_unique<TestBrowser>(browser_state_.get()); + profile_ = std::move(builder).Build(); + browser_ = std::make_unique<TestBrowser>(profile_.get()); std::unique_ptr<web::FakeWebState> web_state = std::make_unique<web::FakeWebState>(); browser_->GetWebStateList()->InsertWebState( @@ -155,7 +155,7 @@ } base::test::TaskEnvironment task_environment_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_; FakeUIViewController* base_view_controller_; @@ -173,13 +173,12 @@ SaveToPhotosCoordinator* coordinator = CreateSaveToPhotosCoordinator(); PhotosService* photosService = - PhotosServiceFactory::GetForProfile(browser_state_.get()); - PrefService* prefService = browser_state_->GetPrefs(); + PhotosServiceFactory::GetForProfile(profile_.get()); + PrefService* prefService = profile_->GetPrefs(); ChromeAccountManagerService* accountManagerService = - ChromeAccountManagerServiceFactory::GetForBrowserState( - browser_state_.get()); + ChromeAccountManagerServiceFactory::GetForProfile(profile_.get()); signin::IdentityManager* identityManager = - IdentityManagerFactory::GetForProfile(browser_state_.get()); + IdentityManagerFactory::GetForProfile(profile_.get()); OCMExpect([mock_save_to_photos_mediator_ alloc]) .andReturn(mock_save_to_photos_mediator_);
diff --git a/ios/chrome/browser/ui/save_to_photos/save_to_photos_mediator_unittest.mm b/ios/chrome/browser/ui/save_to_photos/save_to_photos_mediator_unittest.mm index 1057a6c..86f81821 100644 --- a/ios/chrome/browser/ui/save_to_photos/save_to_photos_mediator_unittest.mm +++ b/ios/chrome/browser/ui/save_to_photos/save_to_photos_mediator_unittest.mm
@@ -119,13 +119,13 @@ class SaveToPhotosMediatorTest : public PlatformTest { protected: void SetUp() final { - TestChromeBrowserState::Builder builder; + TestProfileIOS::Builder builder; builder.AddTestingFactory( IdentityManagerFactory::GetInstance(), base::BindRepeating(IdentityTestEnvironmentBrowserStateAdaptor:: BuildIdentityManagerForTests)); - browser_state_ = std::move(builder).Build(); - browser_ = std::make_unique<TestBrowser>(browser_state_.get()); + profile_ = std::move(builder).Build(); + browser_ = std::make_unique<TestBrowser>(profile_.get()); web_state_ = std::make_unique<web::FakeWebState>(); FakeImageFetchTabHelper::CreateForWebState(web_state_.get()); fake_identity_ = [FakeSystemIdentity fakeIdentity1]; @@ -165,13 +165,12 @@ // Create a SaveToPhotosMediator with services from the test browser state. SaveToPhotosMediator* CreateSaveToPhotosMediator() { PhotosService* photos_service = - PhotosServiceFactory::GetForProfile(browser_state_.get()); - PrefService* pref_service = browser_state_->GetPrefs(); + PhotosServiceFactory::GetForProfile(profile_.get()); + PrefService* pref_service = profile_->GetPrefs(); ChromeAccountManagerService* account_manager_service = - ChromeAccountManagerServiceFactory::GetForBrowserState( - browser_state_.get()); + ChromeAccountManagerServiceFactory::GetForProfile(profile_.get()); signin::IdentityManager* identity_manager = - IdentityManagerFactory::GetForProfile(browser_state_.get()); + IdentityManagerFactory::GetForProfile(profile_.get()); return [[SaveToPhotosMediator alloc] initWithPhotosService:photos_service prefService:pref_service @@ -184,7 +183,7 @@ // Sign-in with a fake account. void SignIn() { signin::MakePrimaryAccountAvailable( - IdentityManagerFactory::GetForProfile(browser_state_.get()), + IdentityManagerFactory::GetForProfile(profile_.get()), base::SysNSStringToUTF8(fake_identity_.userEmail), signin::ConsentLevel::kSignin); } @@ -192,7 +191,7 @@ // Returns the TestPhotosService tied to the browser state. TestPhotosService* GetTestPhotosService() { return static_cast<TestPhotosService*>( - PhotosServiceFactory::GetForProfile(browser_state_.get())); + PhotosServiceFactory::GetForProfile(profile_.get())); } // Returns the FakeImageFetchTabHelper tied to the WebState. @@ -202,7 +201,7 @@ } base::test::TaskEnvironment task_environment_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_; std::unique_ptr<web::FakeWebState> web_state_; id mock_application_; @@ -234,9 +233,8 @@ SignIn(); // This test assumes there is no default account memorized for Save to Photos. - browser_state_->GetPrefs()->ClearPref(prefs::kIosSaveToPhotosDefaultGaiaId); - browser_state_->GetPrefs()->ClearPref( - prefs::kIosSaveToPhotosSkipAccountPicker); + profile_->GetPrefs()->ClearPref(prefs::kIosSaveToPhotosDefaultGaiaId); + profile_->GetPrefs()->ClearPref(prefs::kIosSaveToPhotosSkipAccountPicker); // Create a mediator and set up with mock delegate. SaveToPhotosMediator* mediator = CreateSaveToPhotosMediator(); @@ -291,11 +289,11 @@ // This test assumes there is a default account memorized for Save to Photos // and that the user opted-in skipping the account picker. - browser_state_->GetPrefs()->SetString( + profile_->GetPrefs()->SetString( prefs::kIosSaveToPhotosDefaultGaiaId, base::SysNSStringToUTF8(fake_identity_.gaiaID).c_str()); - browser_state_->GetPrefs()->SetBoolean( - prefs::kIosSaveToPhotosSkipAccountPicker, true); + profile_->GetPrefs()->SetBoolean(prefs::kIosSaveToPhotosSkipAccountPicker, + true); // Create a mediator and set up with mock delegate. SaveToPhotosMediator* mediator = CreateSaveToPhotosMediator(); @@ -338,9 +336,8 @@ SignIn(); // This test assumes there is no default account memorized for Save to Photos. - browser_state_->GetPrefs()->ClearPref(prefs::kIosSaveToPhotosDefaultGaiaId); - browser_state_->GetPrefs()->ClearPref( - prefs::kIosSaveToPhotosSkipAccountPicker); + profile_->GetPrefs()->ClearPref(prefs::kIosSaveToPhotosDefaultGaiaId); + profile_->GetPrefs()->ClearPref(prefs::kIosSaveToPhotosSkipAccountPicker); // Create a mediator and set up with mock delegate. SaveToPhotosMediator* mediator = CreateSaveToPhotosMediator(); @@ -411,9 +408,8 @@ SignIn(); // This test assumes there is no default account memorized for Save to Photos. - browser_state_->GetPrefs()->ClearPref(prefs::kIosSaveToPhotosDefaultGaiaId); - browser_state_->GetPrefs()->ClearPref( - prefs::kIosSaveToPhotosSkipAccountPicker); + profile_->GetPrefs()->ClearPref(prefs::kIosSaveToPhotosDefaultGaiaId); + profile_->GetPrefs()->ClearPref(prefs::kIosSaveToPhotosSkipAccountPicker); // Create a mediator and set up with mock delegate. SaveToPhotosMediator* mediator = CreateSaveToPhotosMediator();
diff --git a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.mm b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.mm index b93ee7e..ad90efa9 100644 --- a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.mm +++ b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.mm
@@ -251,8 +251,7 @@ - (void)sendTabToTargetDeviceCacheGUID:(NSString*)cacheGUID targetDeviceName:(NSString*)deviceName { - SendTabToSelfSyncServiceFactory::GetForProfile( - self.browser->GetBrowserState()) + SendTabToSelfSyncServiceFactory::GetForProfile(self.browser->GetProfile()) ->GetSendTabToSelfModel() ->AddEntry(self.url, base::SysNSStringToUTF8(self.title), base::SysNSStringToUTF8(cacheGUID)); @@ -288,17 +287,17 @@ switch (*displayReason) { case send_tab_to_self::EntryPointDisplayReason::kInformNoTargetDevice: case send_tab_to_self::EntryPointDisplayReason::kOfferFeature: { - ChromeBrowserState* browserState = self.browser->GetBrowserState(); + ProfileIOS* profile = self.browser->GetProfile(); send_tab_to_self::SendTabToSelfSyncService* syncService = - SendTabToSelfSyncServiceFactory::GetForProfile(browserState); + SendTabToSelfSyncServiceFactory::GetForProfile(profile); // This modal should not be launched in incognito mode where syncService // is undefined. DCHECK(syncService); ChromeAccountManagerService* accountManagerService = - ChromeAccountManagerServiceFactory::GetForBrowserState(browserState); + ChromeAccountManagerServiceFactory::GetForProfile(profile); DCHECK(accountManagerService); id<SystemIdentity> account = - AuthenticationServiceFactory::GetForBrowserState(browserState) + AuthenticationServiceFactory::GetForProfile(profile) ->GetPrimaryIdentity(signin::ConsentLevel::kSignin); DCHECK(account) << "The user must be signed in to share a tab"; self.sendTabToSelfViewController = @@ -352,7 +351,7 @@ } __weak __typeof(self) weakSelf = self; _targetDeviceListWaiter = std::make_unique<TargetDeviceListWaiter>( - SyncServiceFactory::GetForBrowserState(self.browser->GetBrowserState()), + SyncServiceFactory::GetForProfile(self.browser->GetProfile()), base::BindRepeating( [](__typeof(self) strongSelf) { return [strongSelf displayReason]; }, weakSelf), @@ -371,7 +370,7 @@ - (std::optional<send_tab_to_self::EntryPointDisplayReason>)displayReason { send_tab_to_self::SendTabToSelfSyncService* service = SendTabToSelfSyncServiceFactory::GetForProfile( - self.browser->GetBrowserState()); + self.browser->GetProfile()); return service ? service->GetEntryPointDisplayReason(_url) : std::nullopt; }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_coordinator.mm index ae209f50..6dde9c0 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_coordinator.mm
@@ -191,7 +191,7 @@ forProtocol:@protocol(TabGroupsCommands)]; self.mediator.tabGroupsHandler = self; - if (!self.browser->GetBrowserState()->IsOffTheRecord()) { + if (!self.browser->GetProfile()->IsOffTheRecord()) { self.mediator.tabGridToolbarHandler = HandlerForProtocol(dispatcher, TabGridToolbarCommands); } @@ -322,14 +322,14 @@ - (void)showTabGridTabGroupSnackbarAfterClosingGroups: (int)numberOfClosedGroups { if (!IsTabGroupSyncEnabled() || - self.browser->GetBrowserState()->IsOffTheRecord()) { + self.browser->GetProfile()->IsOffTheRecord()) { return; } // Don't show the snackbar if the IPH will be presented. feature_engagement::Tracker* tracker = - feature_engagement::TrackerFactory::GetForBrowserState( - self.browser->GetBrowserState()); + feature_engagement::TrackerFactory::GetForProfile( + self.browser->GetProfile()); if (tracker->WouldTriggerHelpUI( feature_engagement::kIPHiOSSavedTabGroupClosed)) { return;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_mediator.mm index 551609b..0984ef6 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_mediator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_mediator.mm
@@ -133,8 +133,8 @@ @interface BaseGridMediator () <CRWWebStateObserver, SnapshotStorageObserver, TabGridModeObserving> -// The browser state from the browser. -@property(nonatomic, readonly) ChromeBrowserState* browserState; +// The profile from the browser. +@property(nonatomic, readonly) ProfileIOS* profile; @end @@ -197,7 +197,7 @@ } _webStateList = browser ? browser->GetWebStateList() : nullptr; - _browserState = browser ? browser->GetBrowserState() : nullptr; + _profile = browser ? browser->GetProfile() : nullptr; [self.snapshotStorage addObserver:self]; @@ -227,7 +227,7 @@ - (void)disconnect { _browser.reset(); - _browserState = nil; + _profile = nil; _consumer = nil; _delegate = nil; _toolbarsMutator = nil; @@ -338,9 +338,9 @@ - (void)insertNewWebStateAtGridIndex:(int)index withURL:(const GURL&)newTabURL { // The incognito mediator's Browser is briefly set to nil after the last - // incognito tab is closed. This occurs because the incognito BrowserState + // incognito tab is closed. This occurs because the incognito profile // needs to be destroyed to correctly clear incognito browsing data. Don't - // attempt to create a new WebState with a nil BrowserState. + // attempt to create a new WebState with a nil profile. if (!self.browser) { return; } @@ -355,8 +355,8 @@ return; } - DCHECK(self.browserState); - web::WebState::CreateParams params(self.browserState); + DCHECK(self.profile); + web::WebState::CreateParams params(self.profile); std::unique_ptr<web::WebState> webState = web::WebState::Create(params); int webStateListIndex = @@ -457,8 +457,8 @@ if (IsTabGroupSyncEnabled() && !deleteGroup) { [self showTabGroupSnackbarOrIPH:1]; tab_groups::TabGroupSyncService* syncService = - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - self.browser->GetBrowserState()); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + self.browser->GetProfile()); tab_groups::utils::CloseTabGroupLocally(group, groupWebStateList, syncService); } else { @@ -499,7 +499,7 @@ } - (BOOL)canHandleTabGroupDrop:(TabGroupInfo*)tabGroupInfo { - return self.browserState->IsOffTheRecord() == tabGroupInfo.incognito; + return self.profile->IsOffTheRecord() == tabGroupInfo.incognito; } - (void)recordExternalURLDropped { @@ -849,9 +849,9 @@ return NO; } - if (self.browserState && - !IsAddNewTabAllowedByPolicy(self.browserState->GetPrefs(), - self.browserState->IsOffTheRecord())) { + if (self.profile && + !IsAddNewTabAllowedByPolicy(self.profile->GetPrefs(), + self.profile->IsOffTheRecord())) { return NO; } @@ -879,10 +879,9 @@ // If this is a search result, it may contain items from other windows or // from the inactive browser - check inactive browser and other windows // before giving up. - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(self.browserState); + BrowserList* browserList = BrowserListFactory::GetForProfile(self.profile); Browser* browser = GetBrowserForNonPinnedTabWithId( - browserList, itemID, self.browserState->IsOffTheRecord()); + browserList, itemID, self.profile->IsOffTheRecord()); if (!browser) { return; @@ -976,11 +975,10 @@ return; } - BOOL incognito = self.browserState->IsOffTheRecord(); + BOOL incognito = self.profile->IsOffTheRecord(); // If this is a search result, it may contain items from other windows or // from the inactive browser - check other windows before giving up. - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(self.browserState); + BrowserList* browserList = BrowserListFactory::GetForProfile(self.profile); Browser* browser = GetBrowserForGroup(browserList, tabGroup, incognito); if (!browser) { @@ -1062,10 +1060,9 @@ base::RecordAction( base::UserMetricsAction("MobileTabGridSearchCloseTabFromAnotherWindow")); - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(self.browserState); + BrowserList* browserList = BrowserListFactory::GetForProfile(self.profile); Browser* browser = GetBrowserForNonPinnedTabWithId( - browserList, itemID, self.browserState->IsOffTheRecord()); + browserList, itemID, self.profile->IsOffTheRecord()); // If this tab is still associated with another browser, remove it from the // associated web state list. @@ -1092,8 +1089,8 @@ if (closedGroupsCount > 0) { tab_groups::TabGroupSyncService* syncService = nil; if (IsTabGroupSyncEnabled()) { - syncService = tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - self.browser->GetBrowserState()); + syncService = tab_groups::TabGroupSyncServiceFactory::GetForProfile( + self.browser->GetProfile()); } // Find and close all groups in `groupIDs`. @@ -1126,7 +1123,7 @@ const bool allTabsClosed = webStateList->empty(); if (allTabsClosed) { - if (!self.browserState->IsOffTheRecord()) { + if (!self.profile->IsOffTheRecord()) { base::RecordAction(base::UserMetricsAction( "MobileTabGridSelectionCloseAllRegularTabsConfirmed")); } else { @@ -1190,7 +1187,7 @@ - (void)searchItemsWithText:(NSString*)searchText { TabsSearchService* searchService = - TabsSearchServiceFactory::GetForBrowserState(self.browserState); + TabsSearchServiceFactory::GetForProfile(self.profile); const std::u16string& searchTerm = base::SysNSStringToUTF16(searchText); searchService->Search( searchTerm, @@ -1247,9 +1244,9 @@ - (void)fetchSearchHistoryResultsCountForText:(NSString*)searchText completion:(void (^)(size_t))completion { - CHECK(!self.browserState->IsOffTheRecord()); + CHECK(!self.profile->IsOffTheRecord()); TabsSearchService* search_service = - TabsSearchServiceFactory::GetForBrowserState(self.browserState); + TabsSearchServiceFactory::GetForProfile(self.profile); const std::u16string& searchTerm = base::SysNSStringToUTF16(searchText); search_service->SearchHistory(searchTerm, base::BindOnce(^(size_t resultCount) { @@ -1293,7 +1290,7 @@ } - (UIDragItem*)dragItemForTabGroupItem:(TabGroupItem*)tabGroupItem { - return CreateTabGroupDragItem(tabGroupItem.tabGroup, self.browserState); + return CreateTabGroupDragItem(tabGroupItem.tabGroup, self.profile); } - (UIDragItem*)dragItemForItem:(TabSwitcherItem*)item { @@ -1316,12 +1313,12 @@ // asynchronous drops. if ([dragItem.localObject isKindOfClass:[TabInfo class]]) { TabInfo* tabInfo = static_cast<TabInfo*>(dragItem.localObject); - if (tabInfo.profile != self.browserState) { + if (tabInfo.profile != self.profile) { // Tabs from different profiles cannot be dropped. return UIDropOperationForbidden; } - if (self.browserState->IsOffTheRecord() == tabInfo.incognito) { + if (self.profile->IsOffTheRecord() == tabInfo.incognito) { return UIDropOperationMove; } @@ -1331,7 +1328,7 @@ if ([dragItem.localObject isKindOfClass:[TabGroupInfo class]]) { TabGroupInfo* tabGroupInfo = static_cast<TabGroupInfo*>(dragItem.localObject); - if (tabGroupInfo.profile != self.browserState) { + if (tabGroupInfo.profile != self.profile) { // Tabs from different profiles cannot be dropped. return UIDropOperationForbidden; } @@ -1601,7 +1598,7 @@ [weakSelf addSelectedElementsToGroup:group]; }; UIMenuElement* addToGroup = [actionFactory - menuToAddTabToGroupWithGroups:GetAllGroupsForProfile(_browserState) + menuToAddTabToGroupWithGroups:GetAllGroupsForProfile(_profile) numberOfTabs:_selectedEditingItems.tabsCount block:addToGroupBlock]; [actions addObject:[UIMenu menuWithTitle:@"" @@ -1626,7 +1623,7 @@ // Bookmarking can be disabled from prefs (from an enterprise policy), // if that's the case grey out the option in the menu. BOOL isEditBookmarksEnabled = - self.browser->GetBrowserState()->GetPrefs()->GetBoolean( + self.browser->GetProfile()->GetPrefs()->GetBoolean( bookmarks::prefs::kEditBookmarksEnabled); if (!isEditBookmarksEnabled) { bookmarkAction.attributes = UIMenuElementAttributesDisabled; @@ -1652,7 +1649,7 @@ WebStateList::ScopedBatchOperation lock = self.webStateList->StartBatchOperation(); for (web::WebStateID webStateID : selectedTabs) { - MoveTabToGroup(webStateID, group, _browserState); + MoveTabToGroup(webStateID, group, _profile); } } } @@ -1662,10 +1659,9 @@ if (_webStateList->ContainsGroup(group)) { return _webStateList; } - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(self.browserState); - Browser* browser = GetBrowserForGroup(browserList, group, - self.browserState->IsOffTheRecord()); + BrowserList* browserList = BrowserListFactory::GetForProfile(self.profile); + Browser* browser = + GetBrowserForGroup(browserList, group, self.profile->IsOffTheRecord()); if (!browser) { return nullptr; }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_mediator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_mediator_unittest.mm index 9ae7724..39a8a70e 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_mediator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_mediator_unittest.mm
@@ -337,7 +337,7 @@ EXPECT_EQ(3, browser_->GetWebStateList()->active_index()); web::WebState* web_state = browser_->GetWebStateList()->GetWebStateAt(3); ASSERT_TRUE(web_state); - EXPECT_EQ(web_state->GetBrowserState(), browser_state_.get()); + EXPECT_EQ(web_state->GetBrowserState(), profile_.get()); EXPECT_FALSE(web_state->HasOpener()); // The URL of pending item (i.e. kChromeUINewTabURL) will not be returned // here because WebState doesn't load the URL until it's visible and @@ -791,8 +791,8 @@ tab_groups::MockTabGroupSyncService* mock_service = static_cast<tab_groups::MockTabGroupSyncService*>( - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - browser_state_.get())); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + profile_.get())); WebStateList* web_state_list = browser_->GetWebStateList(); TabGroupId tab_group_id = TabGroupId::GenerateNew(); @@ -819,12 +819,12 @@ WebStateList* other_web_state_list = other_browser_->GetWebStateList(); WebStateListBuilderFromDescription builder(other_web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a b c d e f g", other_browser_->GetBrowserState())); + "| a b c d e f g", other_browser_->GetProfile())); tab_groups::MockTabGroupSyncService* mock_service = static_cast<tab_groups::MockTabGroupSyncService*>( - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - browser_state_.get())); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + profile_.get())); TabGroupId tab_group_id = TabGroupId::GenerateNew(); other_web_state_list->CreateGroup({1}, {}, tab_group_id); const TabGroup* group = other_web_state_list->GetGroupOfWebStateAt(1); @@ -846,8 +846,8 @@ tab_groups::MockTabGroupSyncService* mock_service = static_cast<tab_groups::MockTabGroupSyncService*>( - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - browser_state_.get())); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + profile_.get())); TabGroupId tab_group_id = TabGroupId::GenerateNew(); WebStateList* web_state_list = browser_->GetWebStateList(); @@ -875,8 +875,8 @@ tab_groups::MockTabGroupSyncService* mock_service = static_cast<tab_groups::MockTabGroupSyncService*>( - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - browser_state_.get())); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + profile_.get())); WebStateList* web_state_list = browser_->GetWebStateList(); TabGroupId tab_group_id = TabGroupId::GenerateNew(); @@ -905,12 +905,12 @@ WebStateList* other_web_state_list = other_browser_->GetWebStateList(); WebStateListBuilderFromDescription builder(other_web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a b c d e f g", other_browser_->GetBrowserState())); + "| a b c d e f g", other_browser_->GetProfile())); tab_groups::MockTabGroupSyncService* mock_service = static_cast<tab_groups::MockTabGroupSyncService*>( - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - browser_state_.get())); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + profile_.get())); TabGroupId tab_group_id = TabGroupId::GenerateNew(); const TabGroup* group = other_web_state_list->CreateGroup({1}, {}, tab_group_id); @@ -937,12 +937,12 @@ CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a b c [ 1 d e ] [ 2 f g ] h", browser_->GetBrowserState())); + "| a b c [ 1 d e ] [ 2 f g ] h", browser_->GetProfile())); tab_groups::MockTabGroupSyncService* mock_service = static_cast<tab_groups::MockTabGroupSyncService*>( - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - browser_state_.get())); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + profile_.get())); const TabGroup* group_1 = builder.GetTabGroupForIdentifier('1'); const TabGroup* group_2 = builder.GetTabGroupForIdentifier('2'); @@ -1016,8 +1016,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| [ 1 a* b ] [ 2 c ]", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| [ 1 a* b ] [ 2 c ]", + browser_->GetProfile())); const TabGroup* group1 = builder.GetTabGroupForIdentifier('1'); const TabGroup* group2 = builder.GetTabGroupForIdentifier('2'); @@ -1041,8 +1041,8 @@ CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); web::WebStateID web_state_id = web_state_list->GetWebStateAt(2)->GetUniqueIdentifier(); @@ -1070,8 +1070,8 @@ CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c [ 0 d e f ] g", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c [ 0 d e f ] g", + browser_->GetProfile())); // Drop "D" (in a group) after "A". web::WebStateID web_state_id = @@ -1102,7 +1102,7 @@ // the grid. TEST_P(BaseGridMediatorTest, DropCrossWindowTab) { auto other_browser = std::make_unique<TestBrowser>( - browser_state_.get(), scene_state_, + profile_.get(), scene_state_, std::make_unique<BrowserWebStateListDelegate>()); SnapshotBrowserAgent::CreateForBrowser(other_browser.get()); @@ -1118,8 +1118,8 @@ CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); id local_object = [[TabInfo alloc] initWithTabID:other_id profile:browser_->GetProfile()]; @@ -1147,13 +1147,12 @@ WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| [ 1 a* b ] c [ 2 d e ]", browser_->GetBrowserState())); + "| [ 1 a* b ] c [ 2 d e ]", browser_->GetProfile())); const TabGroup* tab_group = web_state_list->GetGroupOfWebStateAt(4); - id local_object = - [[TabGroupInfo alloc] initWithTabGroup:tab_group - profile:browser_state_.get()]; + id local_object = [[TabGroupInfo alloc] initWithTabGroup:tab_group + profile:profile_.get()]; NSItemProvider* item_provider = [[NSItemProvider alloc] init]; UIDragItem* drag_item = [[UIDragItem alloc] initWithItemProvider:item_provider]; @@ -1177,11 +1176,11 @@ WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| [ 1 a* b ] c [ 2 d e ]", browser_->GetBrowserState())); + "| [ 1 a* b ] c [ 2 d e ]", browser_->GetProfile())); // Prepare the other web state list, from which the group will be dragged. auto other_browser = std::make_unique<TestBrowser>( - browser_state_.get(), scene_state_, + profile_.get(), scene_state_, std::make_unique<BrowserWebStateListDelegate>()); SnapshotBrowserAgent::CreateForBrowser(other_browser.get()); @@ -1197,9 +1196,8 @@ other_browser->GetWebStateList()->GetGroupOfWebStateAt(0); tab_groups::TabGroupId tab_group_id = other_tab_group->tab_group_id(); - id local_object = - [[TabGroupInfo alloc] initWithTabGroup:other_tab_group - profile:browser_state_.get()]; + id local_object = [[TabGroupInfo alloc] initWithTabGroup:other_tab_group + profile:profile_.get()]; NSItemProvider* item_provider = [[NSItemProvider alloc] init]; UIDragItem* drag_item = [[UIDragItem alloc] initWithItemProvider:item_provider]; @@ -1219,8 +1217,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); GURL url_to_load = GURL(kDraggedUrl); id local_object = [[URLInfo alloc] initWithURL:url_to_load title:@"My title"]; @@ -1244,8 +1242,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); NSItemProvider* item_provider = [[NSItemProvider alloc] initWithContentsOfURL:[NSURL URLWithString:base::SysUTF8ToNSString(
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_item_identifier_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_item_identifier_unittest.mm index ebf3950e..bb4e003 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_item_identifier_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_item_identifier_unittest.mm
@@ -21,16 +21,16 @@ class GridItemIdentifierTest : public PlatformTest { public: GridItemIdentifierTest() { - TestChromeBrowserState::Builder browser_state_builder; - browser_state_ = std::move(browser_state_builder).Build(); + TestProfileIOS::Builder profile_builder; + profile_ = std::move(profile_builder).Build(); browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), std::make_unique<FakeWebStateListDelegate>()); + profile_.get(), std::make_unique<FakeWebStateListDelegate>()); web_state_list_ = browser_->GetWebStateList(); } protected: web::WebTaskEnvironment task_environment_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_; raw_ptr<WebStateList> web_state_list_; };
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_mediator_test.h b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_mediator_test.h index 751db7b..1b48f4d 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_mediator_test.h +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_mediator_test.h
@@ -55,7 +55,7 @@ web::WebTaskEnvironment task_environment_; base::test::ScopedFeatureList scoped_feature_list_; IOSChromeScopedTestingLocalState scoped_testing_local_state_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; FakeTabCollectionConsumer* consumer_; std::vector<web::WebStateID> original_identifiers_; web::WebStateID original_selected_identifier_;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_mediator_test.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_mediator_test.mm index 1d2031c..6aab673 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_mediator_test.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_mediator_test.mm
@@ -76,7 +76,7 @@ void GridMediatorTestClass::SetUp() { PlatformTest::SetUp(); - TestChromeBrowserState::Builder builder; + TestProfileIOS::Builder builder; builder.AddTestingFactory(IOSChromeTabRestoreServiceFactory::GetInstance(), FakeTabRestoreService::GetTestingFactory()); builder.AddTestingFactory(SyncServiceFactory::GetInstance(), @@ -90,12 +90,11 @@ builder.AddTestingFactory( tab_groups::TabGroupSyncServiceFactory::GetInstance(), base::BindRepeating(&CreateMockTabGroupSyncService)); - browser_state_ = std::move(builder).Build(); - AuthenticationServiceFactory::CreateAndInitializeForBrowserState( - browser_state_.get(), - std::make_unique<FakeAuthenticationServiceDelegate>()); + profile_ = std::move(builder).Build(); + AuthenticationServiceFactory::CreateAndInitializeForProfile( + profile_.get(), std::make_unique<FakeAuthenticationServiceDelegate>()); // Price Drops are only available to signed in MSBB users. - browser_state_->GetPrefs()->SetBoolean( + profile_->GetPrefs()->SetBoolean( unified_consent::prefs::kUrlKeyedAnonymizedDataCollectionEnabled, true); id<SystemIdentity> identity = [FakeSystemIdentity fakeIdentity1]; FakeSystemIdentityManager* system_identity_manager = @@ -103,25 +102,24 @@ GetApplicationContext()->GetSystemIdentityManager()); system_identity_manager->AddIdentity(identity); auth_service_ = static_cast<AuthenticationService*>( - AuthenticationServiceFactory::GetInstance()->GetForBrowserState( - browser_state_.get())); + AuthenticationServiceFactory::GetInstance()->GetForProfile( + profile_.get())); auth_service_->SignIn(identity, signin_metrics::AccessPoint::ACCESS_POINT_UNKNOWN); scene_state_ = OCMClassMock([SceneState class]); OCMStub([scene_state_ sceneSessionID]).andReturn(@(kIdentifier)); browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), scene_state_, + profile_.get(), scene_state_, std::make_unique<BrowserWebStateListDelegate>()); other_browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), nil, - std::make_unique<BrowserWebStateListDelegate>()); + profile_.get(), nil, std::make_unique<BrowserWebStateListDelegate>()); WebUsageEnablerBrowserAgent::CreateForBrowser(browser_.get()); ClosingWebStateObserverBrowserAgent::CreateForBrowser(browser_.get()); SnapshotBrowserAgent::CreateForBrowser(browser_.get()); SnapshotBrowserAgent::FromBrowser(browser_.get())->SetSessionID(kIdentifier); - SessionRestorationServiceFactory::GetForBrowserState(browser_state_.get()) + SessionRestorationServiceFactory::GetForProfile(profile_.get()) ->SetSessionID(browser_.get(), kIdentifier); - browser_list_ = BrowserListFactory::GetForBrowserState(browser_state_.get()); + browser_list_ = BrowserListFactory::GetForProfile(profile_.get()); browser_list_->AddBrowser(browser_.get()); browser_list_->AddBrowser(other_browser_.get()); @@ -158,7 +156,7 @@ web_state->SetWebFramesManager( content_world, std::make_unique<web::FakeWebFramesManager>()); } - web_state->SetBrowserState(browser_state_.get()); + web_state->SetBrowserState(profile_.get()); web_state->SetNavigationItemCount(1); web_state->SetCurrentURL(url); return web_state; @@ -166,7 +164,7 @@ void GridMediatorTestClass::TearDown() { PlatformTest::TearDown(); - SessionRestorationServiceFactory::GetForBrowserState(browser_state_.get()) + SessionRestorationServiceFactory::GetForProfile(profile_.get()) ->Disconnect(browser_.get()); }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_utils_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_utils_unittest.mm index 1ef5fba..c0e58903 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_utils_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_utils_unittest.mm
@@ -30,10 +30,10 @@ class GridUtilsTest : public PlatformTest { public: GridUtilsTest() { - TestChromeBrowserState::Builder browser_state_builder; - browser_state_ = std::move(browser_state_builder).Build(); + TestProfileIOS::Builder profile_builder; + profile_ = std::move(profile_builder).Build(); browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), std::make_unique<FakeWebStateListDelegate>()); + profile_.get(), std::make_unique<FakeWebStateListDelegate>()); web_state_list_ = browser_->GetWebStateList(); } @@ -52,7 +52,7 @@ } web::WebTaskEnvironment task_environment_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_; raw_ptr<WebStateList> web_state_list_; };
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_coordinator.mm index cb7e1511..4c76b266 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_coordinator.mm
@@ -65,10 +65,8 @@ toolbarsMutator:toolbarsMutator gridMediatorDelegate:delegate])) { _browser = browser->AsWeakPtr(); - _incognitoEnabled = - !IsIncognitoModeDisabled(self.browser->GetBrowserState() - ->GetOriginalChromeBrowserState() - ->GetPrefs()); + _incognitoEnabled = !IsIncognitoModeDisabled( + self.browser->GetProfile()->GetOriginalProfile()->GetPrefs()); } return self; } @@ -127,7 +125,7 @@ self.gridContainerViewController = container; _tabContextMenuHelper = [[TabContextMenuHelper alloc] - initWithBrowserState:self.browser->GetBrowserState() + initWithProfile:self.browser->GetProfile() tabContextMenuDelegate:self.tabContextMenuDelegate]; if (_incognitoEnabled) { @@ -163,14 +161,14 @@ _browser.reset(); if (incognitoBrowser) { _browser = incognitoBrowser->AsWeakPtr(); - _tabContextMenuHelper.browserState = incognitoBrowser->GetBrowserState(); + _tabContextMenuHelper.profile = incognitoBrowser->GetProfile(); [incognitoBrowser->GetCommandDispatcher() startDispatchingToTarget:self forProtocol:@protocol(TabGroupsCommands)]; _mediator.tabGroupsHandler = self; } else { - _tabContextMenuHelper.browserState = nullptr; + _tabContextMenuHelper.profile = nullptr; } }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_mediator.mm index 886703f..a5c73a0 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_mediator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_mediator.mm
@@ -54,7 +54,7 @@ BOOL _selected; // Identity manager providing AccountInfo capabilities to determine // supervision status. This identity manager is not available for - // the incognito browser state and need to be passed in. + // the incognito profile and need to be passed in. raw_ptr<signin::IdentityManager> _identityManager; // Observer to track changes to supervision-related capabilities. std::unique_ptr<supervised_user::SupervisedUserCapabilitiesObserverBridge> @@ -220,7 +220,7 @@ [super setBrowser:browser]; if (browser) { - PrefService* prefService = browser->GetBrowserState()->GetPrefs(); + PrefService* prefService = browser->GetProfile()->GetPrefs(); DCHECK(prefService); if (!base::FeatureList::IsEnabled( @@ -243,7 +243,7 @@ Browser* browser = self.browser; DCHECK(browser); - return browser->GetBrowserState()->GetPrefs(); + return browser->GetProfile()->GetPrefs(); } - (void)setReauthSceneAgent:(IncognitoReauthSceneAgent*)reauthSceneAgent { @@ -308,7 +308,7 @@ // Returns YES if incognito is disabled. - (BOOL)isIncognitoModeDisabled { DCHECK(self.browser); - PrefService* prefService = self.browser->GetBrowserState()->GetPrefs(); + PrefService* prefService = self.browser->GetProfile()->GetPrefs(); if (IsIncognitoModeDisabled(prefService)) { return YES; }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_mediator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_mediator_unittest.mm index 2486a19..fc78668b 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_mediator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/incognito/incognito_grid_mediator_unittest.mm
@@ -62,7 +62,7 @@ // IncognitoModePrefs::kEnabled Means that users may open pages in both // Incognito mode and normal mode - browser_state_->GetTestingPrefService()->SetManagedPref( + profile_->GetTestingPrefService()->SetManagedPref( policy::policy_prefs::kIncognitoModeAvailability, std::make_unique<base::Value>( static_cast<int>(IncognitoModePrefs::kEnabled))); @@ -81,7 +81,7 @@ // IncognitoModePrefs::kDisabled Means that users may not open pages in // Incognito mode. Only normal mode is available for browsing. - browser_state_->GetTestingPrefService()->SetManagedPref( + profile_->GetTestingPrefService()->SetManagedPref( policy::policy_prefs::kIncognitoModeAvailability, std::make_unique<base::Value>( static_cast<int>(IncognitoModePrefs::kDisabled)));
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_coordinator.mm index c783354..ae2840b 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_coordinator.mm
@@ -109,10 +109,10 @@ forProtocol:@protocol(TabsAnimationCommands)]; BOOL regularModeEnabled = - !IsIncognitoModeForced(self.browser->GetBrowserState()->GetPrefs()); + !IsIncognitoModeForced(self.browser->GetProfile()->GetPrefs()); _contextMenuProvider = [[TabContextMenuHelper alloc] - initWithBrowserState:self.browser->GetBrowserState() + initWithProfile:self.browser->GetProfile() tabContextMenuDelegate:self.tabContextMenuDelegate]; GridContainerViewController* container =
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_mediator.mm index fae643b..ad46c38d 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_mediator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_mediator.mm
@@ -132,7 +132,7 @@ // enabled page can make it to a disabled page by releasing the // button press after switching to the disabled page (b/273416844 is an // example). - if (IsIncognitoModeForced(self.browser->GetBrowserState()->GetPrefs())) { + if (IsIncognitoModeForced(self.browser->GetProfile()->GetPrefs())) { return; } @@ -166,7 +166,7 @@ // correct delegate. [self.toolbarsMutator setToolbarsButtonsDelegate:self]; - if (IsIncognitoModeForced(self.browser->GetBrowserState()->GetPrefs())) { + if (IsIncognitoModeForced(self.browser->GetProfile()->GetPrefs())) { [self.toolbarsMutator setToolbarConfiguration: [TabGridToolbarsConfiguration
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_mediator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_mediator_unittest.mm index 26a535e..883954c 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_mediator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/regular/regular_grid_mediator_unittest.mm
@@ -39,8 +39,7 @@ [mediator_ currentlySelectedGrid:YES]; tab_restore_service_ = - IOSChromeTabRestoreServiceFactory::GetForBrowserState( - browser_state_.get()); + IOSChromeTabRestoreServiceFactory::GetForProfile(profile_.get()); } void TearDown() override { @@ -141,7 +140,7 @@ TEST_F(RegularGridMediatorTest, OpenNewTab_OpenIfAllowedByPolicy) { // IncognitoModePrefs::kEnabled Means that users may open pages in both // Incognito mode and normal mode - browser_state_->GetTestingPrefService()->SetManagedPref( + profile_->GetTestingPrefService()->SetManagedPref( policy::policy_prefs::kIncognitoModeAvailability, std::make_unique<base::Value>( static_cast<int>(IncognitoModePrefs::kEnabled))); @@ -157,7 +156,7 @@ // IncognitoModePrefs::kDisabled Means that users may not open pages in // Incognito mode. Only normal mode is available for browsing. - browser_state_->GetTestingPrefService()->SetManagedPref( + profile_->GetTestingPrefService()->SetManagedPref( policy::policy_prefs::kIncognitoModeAvailability, std::make_unique<base::Value>( static_cast<int>(IncognitoModePrefs::kDisabled))); @@ -170,7 +169,7 @@ // IncognitoModePrefs::kForced Means that users may open pages *ONLY* in // Incognito mode. Normal mode is not available for browsing. - browser_state_->GetTestingPrefService()->SetManagedPref( + profile_->GetTestingPrefService()->SetManagedPref( policy::policy_prefs::kIncognitoModeAvailability, std::make_unique<base::Value>( static_cast<int>(IncognitoModePrefs::kForced)));
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/inactive_tabs/inactive_tabs_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/inactive_tabs/inactive_tabs_coordinator.mm index e91e903..d6ceda5e1 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/inactive_tabs/inactive_tabs_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/inactive_tabs/inactive_tabs_coordinator.mm
@@ -183,7 +183,7 @@ [super start]; _contextMenuProvider = [[TabContextMenuHelper alloc] - initWithBrowserState:self.browser->GetActiveBrowser()->GetBrowserState() + initWithProfile:self.browser->GetActiveBrowser()->GetProfile() tabContextMenuDelegate:self.tabContextMenuDelegate]; Browser* browser = self.browser;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/pinned_tabs_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/pinned_tabs_mediator.mm index e1c0d9b..94b07cd 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/pinned_tabs_mediator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/pinned_tabs_mediator.mm
@@ -66,8 +66,8 @@ // The list from the browser. @property(nonatomic, assign) WebStateList* webStateList; -// The browser state from the browser. -@property(nonatomic, readonly) ChromeBrowserState* browserState; +// The profile from the browser. +@property(nonatomic, readonly) ProfileIOS* profile; // The UI consumer to which updates are made. @property(nonatomic, weak) id<PinnedTabCollectionConsumer> consumer; @@ -114,7 +114,7 @@ _browser = browser; _webStateList = browser ? browser->GetWebStateList() : nullptr; - _browserState = browser ? browser->GetBrowserState() : nullptr; + _profile = browser ? browser->GetProfile() : nullptr; if (_webStateList) { _scopedWebStateListObservation->AddObservation(_webStateList); @@ -458,8 +458,8 @@ return; } - DCHECK(self.browserState); - web::WebState::CreateParams params(self.browserState); + DCHECK(self.profile); + web::WebState::CreateParams params(self.profile); std::unique_ptr<web::WebState> webState = web::WebState::Create(params); web::NavigationManager::WebLoadParams loadParams(newTabURL);
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/tests/pinned_tabs_mediator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/tests/pinned_tabs_mediator_unittest.mm index 0cef570..42b1e9f 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/tests/pinned_tabs_mediator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/tests/pinned_tabs_mediator_unittest.mm
@@ -50,15 +50,14 @@ class PinnedTabsMediatorTest : public PlatformTest { public: PinnedTabsMediatorTest() { - TestChromeBrowserState::Builder builder; - browser_state_ = std::move(builder).Build(); + TestProfileIOS::Builder builder; + profile_ = std::move(builder).Build(); - regular_browser_ = std::make_unique<TestBrowser>(browser_state_.get()); - incognito_browser_ = std::make_unique<TestBrowser>( - browser_state_->GetOffTheRecordChromeBrowserState()); + regular_browser_ = std::make_unique<TestBrowser>(profile_.get()); + incognito_browser_ = + std::make_unique<TestBrowser>(profile_->GetOffTheRecordProfile()); - browser_list_ = - BrowserListFactory::GetForBrowserState(browser_state_.get()); + browser_list_ = BrowserListFactory::GetForProfile(profile_.get()); browser_list_->AddBrowser(regular_browser_.get()); browser_list_->AddBrowser(incognito_browser_.get()); @@ -81,7 +80,7 @@ navigation_manager->SetLastCommittedItem( navigation_manager->GetItemAtIndex(0)); web_state->SetNavigationManager(std::move(navigation_manager)); - web_state->SetBrowserState(browser_state_.get()); + web_state->SetBrowserState(profile_.get()); web_state->SetNavigationItemCount(1); web_state->SetCurrentURL(url); return web_state; @@ -105,7 +104,7 @@ web::WebTaskEnvironment task_environment_; base::test::ScopedFeatureList feature_list_; raw_ptr<BrowserList> browser_list_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; }; // Tests that the consumer is notified when a web state is pinned. @@ -220,7 +219,7 @@ CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "a* b c | d e f", regular_browser_->GetBrowserState())); + "a* b c | d e f", regular_browser_->GetProfile())); // Drop "A" after "C". web::WebStateID web_state_id = @@ -259,7 +258,7 @@ CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "a* b c | d e f", regular_browser_->GetBrowserState())); + "a* b c | d e f", regular_browser_->GetProfile())); // Drop "E" after "C". web::WebStateID web_state_id = @@ -298,7 +297,7 @@ CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "a* b c | d [ 0 e f ]", regular_browser_->GetBrowserState())); + "a* b c | d [ 0 e f ]", regular_browser_->GetProfile())); // Drop "E" after "C". web::WebStateID web_state_id = @@ -348,7 +347,7 @@ CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "a* b c | d", regular_browser_->GetBrowserState())); + "a* b c | d", regular_browser_->GetProfile())); ASSERT_EQ(4, web_state_list->count()); NSItemProvider* item_provider = [[NSItemProvider alloc]
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.h b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.h index 0c12516..994e0bd 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.h +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.h
@@ -16,11 +16,11 @@ @interface TabContextMenuHelper : NSObject <TabContextMenuProvider> // Browser state reference. -@property(nonatomic, assign) ChromeBrowserState* browserState; +@property(nonatomic, assign) ProfileIOS* profile; -- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState - tabContextMenuDelegate: - (id<TabContextMenuDelegate>)tabContextMenuDelegate +- (instancetype)initWithProfile:(ProfileIOS*)profile + tabContextMenuDelegate: + (id<TabContextMenuDelegate>)tabContextMenuDelegate NS_DESIGNATED_INITIALIZER; - (instancetype)init NS_UNAVAILABLE;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.mm index d8585e4..8c1de26 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_context_menu/tab_context_menu_helper.mm
@@ -43,14 +43,14 @@ #pragma mark - TabContextMenuProvider -- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState - tabContextMenuDelegate: - (id<TabContextMenuDelegate>)tabContextMenuDelegate { +- (instancetype)initWithProfile:(ProfileIOS*)profile + tabContextMenuDelegate: + (id<TabContextMenuDelegate>)tabContextMenuDelegate { self = [super init]; if (self) { - _browserState = browserState; + _profile = profile; _contextMenuDelegate = tabContextMenuDelegate; - _incognito = _browserState->IsOffTheRecord(); + _incognito = _profile->IsOffTheRecord(); } return self; } @@ -165,7 +165,7 @@ }]; } - if (_browserState) { + if (_profile) { const BOOL currentlyBookmarked = [self isTabItemBookmarked:item]; if (currentlyBookmarked) { bookmarkAction = [actionFactory actionToEditBookmarkWithBlock:^{ @@ -178,7 +178,7 @@ } // Bookmarking can be disabled from prefs (from an enterprise policy), // if that's the case grey out the option in the menu. - BOOL isEditBookmarksEnabled = _browserState->GetPrefs()->GetBoolean( + BOOL isEditBookmarksEnabled = _profile->GetPrefs()->GetBoolean( bookmarks::prefs::kEditBookmarksEnabled); if (!isEditBookmarksEnabled && bookmarkAction) { bookmarkAction.attributes = UIMenuElementAttributesDisabled; @@ -214,7 +214,7 @@ NSMutableArray<UIMenuElement*>* menuElements = [[NSMutableArray alloc] init]; if (IsTabGroupInGridEnabled()) { - std::set<const TabGroup*> groups = GetAllGroupsForProfile(_browserState); + std::set<const TabGroup*> groups = GetAllGroupsForProfile(_profile); auto actionResult = ^(const TabGroup* group) { [weakSelf handleAddWebState:tabID toGroup:group]; @@ -359,7 +359,7 @@ // Returns `YES` if the tab `item` is already bookmarked. - (BOOL)isTabItemBookmarked:(TabItem*)item { bookmarks::BookmarkModel* bookmarkModel = - ios::BookmarkModelFactory::GetForBrowserState(_browserState); + ios::BookmarkModelFactory::GetForProfile(_profile); return item && bookmarkModel->IsBookmarked(item.URL); } @@ -369,8 +369,7 @@ return NO; } - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(_browserState); + BrowserList* browserList = BrowserListFactory::GetForProfile(_profile); for (Browser* browser : browserList->BrowsersOfType(BrowserList::BrowserType::kRegular)) { @@ -389,8 +388,7 @@ // Returns the TabItem object representing the tab with `identifier. - (TabItem*)tabItemForIdentifier:(web::WebStateID)identifier { - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(_browserState); + BrowserList* browserList = BrowserListFactory::GetForProfile(_profile); const BrowserList::BrowserType browser_types = _incognito ? BrowserList::BrowserType::kIncognito : BrowserList::BrowserType::kRegularAndInactive; @@ -413,14 +411,13 @@ [self.contextMenuDelegate createNewTabGroupWithIdentifier:webStateID incognito:self.incognito]; } else { - MoveTabToGroup(webStateID, group, _browserState); + MoveTabToGroup(webStateID, group, _profile); } } // Handles the result of the remove from group block. - (void)handleRemoveWebStateFromGroup:(web::WebStateID)webStateID { - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(_browserState); + BrowserList* browserList = BrowserListFactory::GetForProfile(_profile); for (Browser* browser : browserList->BrowsersOfType(BrowserList::BrowserType::kRegular)) { @@ -438,8 +435,7 @@ // Returns the group of the given `webStateID`. - (const TabGroup*)groupForWebState:(web::WebStateID)webStateID { - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(_browserState); + BrowserList* browserList = BrowserListFactory::GetForProfile(_profile); for (Browser* browser : browserList->BrowsersOfType(BrowserList::BrowserType::kRegular)) {
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.h b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.h index 379156b..cae58adf 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.h +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.h
@@ -33,7 +33,7 @@ // Updates the incognito browser. Should only be sets when both the current // incognito browser and the new incognito browser are either nil or contain no // tabs. This must be called after the incognito browser has been deleted -// because the incognito browser state is deleted. +// because the incognito profile is deleted. @property(nonatomic, assign) Browser* incognitoBrowser; // The view controller, if any, that is active.
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm index 7695137..7009d65 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator.mm
@@ -298,11 +298,10 @@ _inactiveBrowser = inactiveBrowser; _incognitoBrowser = incognitoBrowser; - if (IsIncognitoModeDisabled( - _regularBrowser->GetBrowserState()->GetPrefs())) { + if (IsIncognitoModeDisabled(_regularBrowser->GetProfile()->GetPrefs())) { _pageConfiguration = TabGridPageConfiguration::kIncognitoPageDisabled; } else if (IsIncognitoModeForced( - _incognitoBrowser->GetBrowserState()->GetPrefs())) { + _incognitoBrowser->GetProfile()->GetPrefs())) { _pageConfiguration = TabGridPageConfiguration::kIncognitoPageOnly; } else { _pageConfiguration = TabGridPageConfiguration::kAllPagesEnabled; @@ -424,8 +423,8 @@ if (currentActivePage == TabGridPageRegularTabs && !_bringAndroidTabsPromptCoordinator) { BringAndroidTabsToIOSService* bringAndroidTabsService = - BringAndroidTabsToIOSServiceFactory::GetForBrowserState( - self.regularBrowser->GetBrowserState()); + BringAndroidTabsToIOSServiceFactory::GetForProfile( + self.regularBrowser->GetProfile()); if (bringAndroidTabsService != nil) { bringAndroidTabsService->LoadTabs(); shouldDisplayBringAndroidTabsPrompt = @@ -783,13 +782,12 @@ startDispatchingToTarget:self forProtocol:@protocol(TabGridCommands)]; - ChromeBrowserState* browser_state = self.regularBrowser->GetBrowserState(); + ProfileIOS* profile = self.regularBrowser->GetProfile(); _mediator = [[TabGridMediator alloc] - initWithIdentityManager:IdentityManagerFactory::GetForProfile( - browser_state) - prefService:browser_state->GetPrefs() + initWithIdentityManager:IdentityManagerFactory::GetForProfile(profile) + prefService:profile->GetPrefs() featureEngagementTracker:feature_engagement::TrackerFactory:: - GetForBrowserState(browser_state) + GetForProfile(profile) modeHolder:_modeHolder]; id<ApplicationCommands> applicationCommandsHandler = @@ -841,8 +839,8 @@ baseViewController.regularGridHandler = _regularGridCoordinator.gridHandler; self.regularTabsMediator = _regularGridCoordinator.regularGridMediator; - ChromeBrowserState* regularBrowserState = - _regularBrowser ? _regularBrowser->GetBrowserState() : nullptr; + ProfileIOS* regularProfile = + _regularBrowser ? _regularBrowser->GetProfile() : nullptr; WebStateList* regularWebStateList = _regularBrowser ? _regularBrowser->GetWebStateList() : nullptr; self.priceCardMediator = @@ -879,8 +877,8 @@ self.incognitoTabsMediator = _incognitoGridCoordinator.incognitoGridMediator; [self.incognitoTabsMediator - initializeSupervisedUserCapabilitiesObserver: - IdentityManagerFactory::GetForProfile(browser_state)]; + initializeSupervisedUserCapabilitiesObserver:IdentityManagerFactory:: + GetForProfile(profile)]; baseViewController.incognitoGridHandler = _incognitoGridCoordinator.gridHandler; @@ -926,22 +924,21 @@ _hackRecentTabsTableViewController = remoteTabsViewController; } else { // TODO(crbug.com/41390276) : Remove RecentTabsTableViewController - // dependency on ChromeBrowserState so that we don't need to expose the view + // dependency on ProfileIOS so that we don't need to expose the view // controller. baseViewController.remoteTabsViewController.browser = self.regularBrowser; sync_sessions::SessionSyncService* syncService = - SessionSyncServiceFactory::GetForBrowserState(regularBrowserState); + SessionSyncServiceFactory::GetForProfile(regularProfile); signin::IdentityManager* identityManager = - IdentityManagerFactory::GetForProfile(regularBrowserState); + IdentityManagerFactory::GetForProfile(regularProfile); sessions::TabRestoreService* restoreService = - IOSChromeTabRestoreServiceFactory::GetForBrowserState( - regularBrowserState); + IOSChromeTabRestoreServiceFactory::GetForProfile(regularProfile); FaviconLoader* faviconLoader = - IOSChromeFaviconLoaderFactory::GetForBrowserState(regularBrowserState); + IOSChromeFaviconLoaderFactory::GetForProfile(regularProfile); syncer::SyncService* service = - SyncServiceFactory::GetForBrowserState(regularBrowserState); + SyncServiceFactory::GetForProfile(regularProfile); BrowserList* browserList = - BrowserListFactory::GetForBrowserState(regularBrowserState); + BrowserListFactory::GetForProfile(regularProfile); SceneState* currentSceneState = self.regularBrowser->GetSceneState(); // TODO(crbug.com/40273478): Rename in recentTabsMediator. self.remoteTabsMediator = [[RecentTabsMediator alloc] @@ -955,7 +952,7 @@ disabledByPolicy:_pageConfiguration == TabGridPageConfiguration::kIncognitoPageOnly engagementTracker:feature_engagement::TrackerFactory:: - GetForBrowserState(regularBrowserState) + GetForProfile(regularProfile) modeHolder:_modeHolder]; self.remoteTabsMediator.consumer = baseViewController.remoteTabsConsumer; self.remoteTabsMediator.tabGridHandler = self; @@ -999,7 +996,7 @@ // hierarchy. As a workaround, the view controller hierarchy is loaded here // before `RecentTabsMediator` updates are started. self.window.rootViewController = self.baseViewController; - if (regularBrowserState) { + if (regularProfile) { [self.remoteTabsMediator initObservers]; [self.remoteTabsMediator refreshSessionsView]; } @@ -1278,15 +1275,15 @@ - (BOOL)tabGridIsUserEligibleForSwipeToIncognitoIPH { return _pageConfiguration == TabGridPageConfiguration::kAllPagesEnabled && IsFirstRunRecent(base::Days(60)) && - feature_engagement::TrackerFactory::GetForBrowserState( - self.regularBrowser->GetBrowserState()) + feature_engagement::TrackerFactory::GetForProfile( + self.regularBrowser->GetProfile()) ->WouldTriggerHelpUI( feature_engagement::kIPHiOSTabGridSwipeRightForIncognito); } - (BOOL)tabGridShouldPresentSwipeToIncognitoIPH { - return feature_engagement::TrackerFactory::GetForBrowserState( - self.regularBrowser->GetBrowserState()) + return feature_engagement::TrackerFactory::GetForProfile( + self.regularBrowser->GetProfile()) ->ShouldTriggerHelpUI( feature_engagement::kIPHiOSTabGridSwipeRightForIncognito); } @@ -1294,8 +1291,8 @@ - (void)tabGridDidDismissSwipeToIncognitoIPHWithReason: (IPHDismissalReasonType)reason { feature_engagement::Tracker* tracker = - feature_engagement::TrackerFactory::GetForBrowserState( - self.regularBrowser->GetBrowserState()); + feature_engagement::TrackerFactory::GetForProfile( + self.regularBrowser->GetProfile()); if (tracker) { tracker->DismissedWithSnooze( feature_engagement::kIPHiOSTabGridSwipeRightForIncognito, @@ -1392,7 +1389,7 @@ "Mobile.RecentTabsManager.TotalTabsFromOtherDevicesOpenAll", session->tabs.size()); - BOOL inIncognito = self.regularBrowser->GetBrowserState()->IsOffTheRecord(); + BOOL inIncognito = self.regularBrowser->GetProfile()->IsOffTheRecord(); OpenDistantSessionInBackground( session, inIncognito, GetDefaultNumberOfTabsToLoadSimultaneously(), UrlLoadingBrowserAgent::FromBrowser(self.regularBrowser), @@ -1445,8 +1442,8 @@ - (void)bookmarkURL:(const GURL&)URL title:(NSString*)title { bookmarks::BookmarkModel* bookmarkModel = - ios::BookmarkModelFactory::GetForBrowserState( - self.regularBrowser->GetBrowserState()); + ios::BookmarkModelFactory::GetForProfile( + self.regularBrowser->GetProfile()); if (bookmarkModel->IsBookmarked(URL)) { [self editBookmarkWithURL:URL]; } else { @@ -1609,7 +1606,7 @@ // The user journey to bring recent tabs on Android to iOS has finished. // Reload the service to update/clear the tabs. BringAndroidTabsToIOSServiceFactory::GetForProfileIfExists( - self.regularBrowser->GetBrowserState()) + self.regularBrowser->GetProfile()) ->LoadTabs(); } [_bringAndroidTabsPromptCoordinator stop]; @@ -1652,8 +1649,8 @@ - (void)showWebSearchForText:(NSString*)text { TemplateURLService* templateURLService = - ios::TemplateURLServiceFactory::GetForBrowserState( - self.regularBrowser->GetBrowserState()); + ios::TemplateURLServiceFactory::GetForProfile( + self.regularBrowser->GetProfile()); const TemplateURL* searchURLTemplate = templateURLService->GetDefaultSearchProvider();
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator_unittest.mm index 4d48cd35..16eb999e 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_coordinator_unittest.mm
@@ -100,27 +100,23 @@ } } - TestChromeBrowserState::Builder test_cbs_builder; - test_cbs_builder.AddTestingFactory( + TestProfileIOS::Builder builder; + builder.AddTestingFactory( IOSChromeTabRestoreServiceFactory::GetInstance(), IOSChromeTabRestoreServiceFactory::GetDefaultFactory()); - test_cbs_builder.AddTestingFactory( + builder.AddTestingFactory( AuthenticationServiceFactory::GetInstance(), AuthenticationServiceFactory::GetDefaultFactory()); - test_cbs_builder.AddTestingFactory( - ios::BookmarkModelFactory::GetInstance(), - ios::BookmarkModelFactory::GetDefaultFactory()); - chrome_browser_state_ = std::move(test_cbs_builder).Build(); - AuthenticationServiceFactory::CreateAndInitializeForBrowserState( - chrome_browser_state_.get(), - std::make_unique<FakeAuthenticationServiceDelegate>()); + builder.AddTestingFactory(ios::BookmarkModelFactory::GetInstance(), + ios::BookmarkModelFactory::GetDefaultFactory()); + profile_ = std::move(builder).Build(); + AuthenticationServiceFactory::CreateAndInitializeForProfile( + profile_.get(), std::make_unique<FakeAuthenticationServiceDelegate>()); bookmarks::test::WaitForBookmarkModelToLoad( - ios::BookmarkModelFactory::GetForBrowserState( - chrome_browser_state_.get())); + ios::BookmarkModelFactory::GetForProfile(profile_.get())); - browser_ = std::make_unique<TestBrowser>(chrome_browser_state_.get(), - scene_state_); + browser_ = std::make_unique<TestBrowser>(profile_.get(), scene_state_); // Set up ApplicationCommands mock. id mock_application_handler = @@ -132,8 +128,7 @@ AddAgentsToBrowser(browser_.get()); incognito_browser_ = std::make_unique<TestBrowser>( - chrome_browser_state_->GetOffTheRecordChromeBrowserState(), - scene_state_); + profile_->GetOffTheRecordProfile(), scene_state_); AddAgentsToBrowser(incognito_browser_.get()); IncognitoReauthSceneAgent* reauth_agent = [[IncognitoReauthSceneAgent alloc] @@ -182,7 +177,7 @@ protected: web::WebTaskEnvironment task_environment_; IOSChromeScopedTestingLocalState scoped_testing_local_state_; - std::unique_ptr<TestChromeBrowserState> chrome_browser_state_; + std::unique_ptr<TestProfileIOS> profile_; // Browser for the coordinator. std::unique_ptr<Browser> browser_;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller_unittest.mm index e7a277f..b2a6a51 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller_unittest.mm
@@ -59,10 +59,9 @@ } InitializeViewController(TabGridPageConfiguration::kAllPagesEnabled); - browser_state_ = TestChromeBrowserState::Builder().Build(); + profile_ = TestProfileIOS::Builder().Build(); browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), - std::make_unique<TabGridFakeWebStateListDelegate>()); + profile_.get(), std::make_unique<TabGridFakeWebStateListDelegate>()); SnapshotBrowserAgent::CreateForBrowser(browser_.get()); } ~TabGridViewControllerTest() override {} @@ -116,7 +115,7 @@ IOSChromeScopedTestingLocalState scoped_testing_local_state_; base::UserActionTester user_action_tester_; TabGridViewController* view_controller_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_; GridContainerViewController* regular_grid_; GridContainerViewController* incognito_grid_;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/create_tab_group_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/create_tab_group_coordinator.mm index 5e46d0a..80c007e 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/create_tab_group_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/create_tab_group_coordinator.mm
@@ -96,10 +96,9 @@ - (void)start { Browser* browser = self.browser; - ChromeBrowserState* browserState = browser->GetBrowserState(); + ProfileIOS* profile = browser->GetProfile(); BOOL editMode = _tabGroup != nullptr; - syncer::SyncService* syncService = - SyncServiceFactory::GetForBrowserState(browserState); + syncer::SyncService* syncService = SyncServiceFactory::GetForProfile(profile); BOOL tabSynced = syncService && syncService->GetUserSettings()->GetSelectedTypes().Has( syncer::UserSelectableType::kTabs);
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/create_tab_group_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/create_tab_group_mediator.mm index 2ff49b6..9799329 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/create_tab_group_mediator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/create_tab_group_mediator.mm
@@ -79,9 +79,8 @@ [_consumer setDefaultGroupColor:TabGroup::DefaultColorForNewTabGroup( _webStateList)]; - ChromeBrowserState* browserState = browser->GetBrowserState(); - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(browserState); + ProfileIOS* profile = browser->GetProfile(); + BrowserList* browserList = BrowserListFactory::GetForProfile(profile); _tabGroupInfos = [[NSMutableArray alloc] init]; @@ -101,7 +100,7 @@ // The selected tab is currently in a different web state list (inactive // tab, or tab from another window). Browser* selectedTabBrowser = GetBrowserForTabWithId( - browserList, identifier, browserState->IsOffTheRecord()); + browserList, identifier, profile->IsOffTheRecord()); CHECK(browser); currentWebStateList = selectedTabBrowser->GetWebStateList(); index =
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_coordinator.mm index c385a88..a1eb3b0 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_coordinator.mm
@@ -73,7 +73,7 @@ self.browser->GetCommandDispatcher(), TabGroupsCommands); _viewController = [[TabGroupViewController alloc] initWithHandler:handler - incognito:self.browser->GetBrowserState()->IsOffTheRecord() + incognito:self.browser->GetProfile()->IsOffTheRecord() tabGroup:_tabGroup]; _viewController.gridViewController.delegate = self; @@ -89,7 +89,7 @@ _mediator.tabGridIdleStatusHandler = self.tabGridIdleStatusHandler; _tabContextMenuHelper = [[TabContextMenuHelper alloc] - initWithBrowserState:self.browser->GetBrowserState() + initWithProfile:self.browser->GetProfile() tabContextMenuDelegate:self.tabContextMenuDelegate]; _viewController.mutator = _mediator; @@ -210,7 +210,7 @@ - (void)gridViewController:(BaseGridViewController*)gridViewController didSelectItemWithID:(web::WebStateID)itemID { - BOOL incognito = self.browser->GetBrowserState()->IsOffTheRecord(); + BOOL incognito = self.browser->GetProfile()->IsOffTheRecord(); if ([_mediator isItemWithIDSelected:itemID]) { if (incognito) { base::RecordAction(base::UserMetricsAction(
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_coordinator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_coordinator_unittest.mm index a932d97..47de9e4 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_coordinator_unittest.mm
@@ -41,9 +41,9 @@ protected: TabGroupCoordinatorTest() { feature_list_.InitWithFeatures({kTabGroupsIPad, kModernTabStrip}, {}); - browser_state_ = TestChromeBrowserState::Builder().Build(); + profile_ = TestProfileIOS::Builder().Build(); browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), + profile_.get(), std::make_unique<TabGroupCoordinatorFakeWebStateListDelegate>()); SnapshotBrowserAgent::CreateForBrowser(browser_.get()); @@ -79,10 +79,10 @@ ~TabGroupCoordinatorTest() override { [coordinator_ stop]; } - // Needed for test browser state created by TestBrowser(). + // Needed for test profile created by TestBrowser(). base::test::TaskEnvironment task_environment_; base::test::ScopedFeatureList feature_list_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_; UIViewController* base_view_controller_; TabGroupCoordinator* coordinator_;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mediator.mm index da3dd11..ea7fb4a9 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mediator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mediator.mm
@@ -89,8 +89,8 @@ tabGridDidPerformAction:TabGridActionType::kInPageAction]; if (IsTabGroupSyncEnabled()) { tab_groups::TabGroupSyncService* syncService = - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - self.browser->GetBrowserState()); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + self.browser->GetProfile()); tab_groups::utils::CloseTabGroupLocally(_tabGroup.get(), self.webStateList, syncService); } else { @@ -196,9 +196,9 @@ } - (void)insertNewWebStateAtGridIndex:(int)index withURL:(const GURL&)newTabURL { - CHECK(self.browser->GetBrowserState()); + CHECK(self.browser->GetProfile()); - web::WebState::CreateParams params(self.browser->GetBrowserState()); + web::WebState::CreateParams params(self.browser->GetProfile()); std::unique_ptr<web::WebState> webState = web::WebState::Create(params); int webStateListIndex = _tabGroup->range().range_begin() + index; @@ -440,10 +440,9 @@ if (!self.browser || !group) { return NO; } - ChromeBrowserState* browserState = self.browser->GetBrowserState(); - if (!browserState || - !IsAddNewTabAllowedByPolicy(browserState->GetPrefs(), - browserState->IsOffTheRecord())) { + ProfileIOS* profile = self.browser->GetProfile(); + if (!profile || !IsAddNewTabAllowedByPolicy(profile->GetPrefs(), + profile->IsOffTheRecord())) { return NO; } @@ -452,7 +451,7 @@ return NO; } - web::WebState::CreateParams params(browserState); + web::WebState::CreateParams params(profile); std::unique_ptr<web::WebState> webState = web::WebState::Create(params); web::NavigationManager::WebLoadParams loadParams((GURL(kChromeUINewTabURL)));
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mediator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mediator_unittest.mm index 9bd54be..759bd81 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mediator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mediator_unittest.mm
@@ -43,7 +43,7 @@ builder_ = std::make_unique<WebStateListBuilderFromDescription>(web_state_list); ASSERT_TRUE(builder_->BuildWebStateListFromDescription( - "| f [ 1 a* b c ] d e ", browser_->GetBrowserState())); + "| f [ 1 a* b c ] d e ", browser_->GetProfile())); mode_holder_ = [[TabGridModeHolder alloc] init]; @@ -139,7 +139,7 @@ // the grid. TEST_F(TabGroupMediatorTest, DropCrossWindowTab) { auto other_browser = std::make_unique<TestBrowser>( - browser_state_.get(), scene_state_, + profile_.get(), scene_state_, std::make_unique<BrowserWebStateListDelegate>()); SnapshotBrowserAgent::CreateForBrowser(other_browser.get());
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_sync_earl_grey_app_interface.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_sync_earl_grey_app_interface.mm index 116bf50..b997aa5 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_sync_earl_grey_app_interface.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_sync_earl_grey_app_interface.mm
@@ -15,11 +15,11 @@ // Returns the first regular (= non-incognito) browser from the loaded browser // states. -ChromeBrowserState* GetRegularBrowser() { - for (ChromeBrowserState* browser_state : +ProfileIOS* GetRegularBrowser() { + for (ProfileIOS* profile : GetApplicationContext()->GetProfileManager()->GetLoadedProfiles()) { - if (!browser_state->IsOffTheRecord()) { - return browser_state; + if (!profile->IsOffTheRecord()) { + return profile; } } return nullptr; @@ -29,7 +29,7 @@ tab_groups::FakeTabGroupSyncService* GetFakeTabGroupSyncService() { CHECK(IsTabGroupSyncEnabled()); return static_cast<tab_groups::FakeTabGroupSyncService*>( - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( + tab_groups::TabGroupSyncServiceFactory::GetForProfile( GetRegularBrowser())); }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_coordinator.mm index 1db2abf..4f5c8aa 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_coordinator.mm
@@ -45,7 +45,7 @@ (id<DisabledGridViewControllerDelegate>)disabledViewControllerDelegate { CHECK(baseViewController); CHECK(regularBrowser); - CHECK(!regularBrowser->GetBrowserState()->IsOffTheRecord()); + CHECK(!regularBrowser->GetProfile()->IsOffTheRecord()); CHECK(toolbarsMutator); CHECK(disabledViewControllerDelegate); self = [super initWithBaseViewController:baseViewController @@ -63,7 +63,7 @@ _gridContainerViewController = [[GridContainerViewController alloc] init]; BOOL regularModeDisabled = - IsIncognitoModeForced(self.browser->GetBrowserState()->GetPrefs()); + IsIncognitoModeForced(self.browser->GetProfile()->GetPrefs()); if (regularModeDisabled) { _disabledViewController = [[DisabledGridViewController alloc] initWithPage:TabGridPageTabGroups]; @@ -76,14 +76,13 @@ } tab_groups::TabGroupSyncService* tabGroupSyncService = - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - self.browser->GetBrowserState()); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + self.browser->GetProfile()); WebStateList* regularWebStateList = self.browser->GetWebStateList(); FaviconLoader* faviconLoader = - IOSChromeFaviconLoaderFactory::GetForBrowserState( - self.browser->GetBrowserState()); + IOSChromeFaviconLoaderFactory::GetForProfile(self.browser->GetProfile()); BrowserList* browserList = - BrowserListFactory::GetForBrowserState(self.browser->GetBrowserState()); + BrowserListFactory::GetForProfile(self.browser->GetProfile()); _mediator = [[TabGroupsPanelMediator alloc] initWithTabGroupSyncService:tabGroupSyncService @@ -135,8 +134,8 @@ - (void)tabGroupsPanelMediator:(TabGroupsPanelMediator*)tabGroupsPanelMediator openGroupWithSyncID:(const base::Uuid&)syncID { tab_groups::TabGroupSyncService* tabGroupSyncService = - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - self.browser->GetBrowserState()); + tab_groups::TabGroupSyncServiceFactory::GetForProfile( + self.browser->GetProfile()); tabGroupSyncService->OpenTabGroup( syncID, std::make_unique<tab_groups::IOSTabGroupActionContext>(self.browser));
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_coordinator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_coordinator_unittest.mm index bdf1a9f..b39a405 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_coordinator_unittest.mm
@@ -82,12 +82,12 @@ class TabGroupsPanelCoordinatorTest : public PlatformTest { protected: TabGroupsPanelCoordinatorTest() { - TestChromeBrowserState::Builder builder; + TestProfileIOS::Builder builder; builder.AddTestingFactory( tab_groups::TabGroupSyncServiceFactory::GetInstance(), base::BindRepeating(&CreateMockSyncService)); - browser_state_ = std::move(builder).Build(); - browser_ = std::make_unique<TestBrowser>(browser_state_.get()); + profile_ = std::move(builder).Build(); + browser_ = std::make_unique<TestBrowser>(profile_.get()); tab_grid_handler_mock_ = OCMProtocolMock(@protocol(TabGridCommands)); [browser_->GetCommandDispatcher() @@ -105,9 +105,9 @@ disabledViewControllerDelegate:disabled_grid_view_controller_delegate_]; } - // Needed for test browser state created by TestBrowser(). + // Needed for test profile created by TestBrowser(). base::test::TaskEnvironment task_environment_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_; UIViewController* base_view_controller_; TestToolbarsMutator* toolbars_mutator_; @@ -142,7 +142,7 @@ // Groups. TEST_F(TabGroupsPanelCoordinatorTest, IncognitoDisabled_TabGroupsShown) { // Disable Incognito with policy. - browser_state_->GetTestingPrefService()->SetManagedPref( + profile_->GetTestingPrefService()->SetManagedPref( policy::policy_prefs::kIncognitoModeAvailability, std::make_unique<base::Value>( static_cast<int>(IncognitoModePrefs::kDisabled))); @@ -162,7 +162,7 @@ // disabled Tab Groups view. TEST_F(TabGroupsPanelCoordinatorTest, IncognitoForced_TabGroupsDisabled) { // Force Incognito with policy. - browser_state_->GetTestingPrefService()->SetManagedPref( + profile_->GetTestingPrefService()->SetManagedPref( policy::policy_prefs::kIncognitoModeAvailability, std::make_unique<base::Value>( static_cast<int>(IncognitoModePrefs::kForced)));
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_mediator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_mediator_unittest.mm index c2d3cb3..fbc3357e 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_mediator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_groups_panel_mediator_unittest.mm
@@ -65,18 +65,17 @@ class TabGroupsPanelMediatorTest : public PlatformTest { protected: TabGroupsPanelMediatorTest() : web_state_list_(&web_state_list_delegate_) { - browser_state_ = TestChromeBrowserState::Builder().Build(); + profile_ = TestProfileIOS::Builder().Build(); // Create a regular browser. - browser_ = std::make_unique<TestBrowser>(browser_state_.get()); - browser_list_ = - BrowserListFactory::GetForBrowserState(browser_state_.get()); + browser_ = std::make_unique<TestBrowser>(profile_.get()); + browser_list_ = BrowserListFactory::GetForProfile(profile_.get()); browser_list_->AddBrowser(browser_.get()); mode_holder_ = [[TabGridModeHolder alloc] init]; } web::WebTaskEnvironment task_environment_; std::unique_ptr<TestBrowser> browser_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; raw_ptr<BrowserList> browser_list_; FakeWebStateListDelegate web_state_list_delegate_; WebStateList web_state_list_;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/toolbars/tab_grid_toolbars_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/toolbars/tab_grid_toolbars_coordinator.mm index 6465de2..0d642cc 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/toolbars/tab_grid_toolbars_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/toolbars/tab_grid_toolbars_coordinator.mm
@@ -33,7 +33,7 @@ - (void)start { Browser* browser = self.browser; - CHECK(!browser->GetBrowserState()->IsOffTheRecord()); + CHECK(!browser->GetProfile()->IsOffTheRecord()); _mediator = [[TabGridToolbarsMediator alloc] initWithModeHolder:self.modeHolder]; @@ -67,8 +67,8 @@ - (void)showSavedTabGroupIPH { feature_engagement::Tracker* tracker = - feature_engagement::TrackerFactory::GetForBrowserState( - self.browser->GetBrowserState()); + feature_engagement::TrackerFactory::GetForProfile( + self.browser->GetProfile()); if (!tracker->WouldTriggerHelpUI( feature_engagement::kIPHiOSSavedTabGroupClosed)) { return; @@ -114,8 +114,8 @@ - (void)savedTabGroupIPHDismissed { [self.topToolbar resetLastPageControlHighlight]; feature_engagement::Tracker* tracker = - feature_engagement::TrackerFactory::GetForBrowserState( - self.browser->GetBrowserState()); + feature_engagement::TrackerFactory::GetForProfile( + self.browser->GetProfile()); tracker->Dismissed(feature_engagement::kIPHiOSSavedTabGroupClosed); }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_group_confirmation_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_group_confirmation_coordinator.mm index 63d9f059..87326ec 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_group_confirmation_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_group_confirmation_coordinator.mm
@@ -150,14 +150,14 @@ // Returns a string used in the action sheet as a message. - (NSString*)sheetMessage { - ChromeBrowserState* browserState = self.browser->GetBrowserState(); + ProfileIOS* profile = self.browser->GetProfile(); // Show a user's email in the message if it's not incognito and a user is // signed in. NSString* userEmail = nil; - if (!browserState->IsOffTheRecord()) { + if (!profile->IsOffTheRecord()) { AuthenticationService* authenticationService = - AuthenticationServiceFactory::GetForBrowserState(browserState); + AuthenticationServiceFactory::GetForProfile(profile); id<SystemIdentity> identity = authenticationService->GetPrimaryIdentity( signin::ConsentLevel::kSignin); userEmail = identity.userEmail;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_coordinator.mm b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_coordinator.mm index 47f979f..2699f4a 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_coordinator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_coordinator.mm
@@ -82,26 +82,25 @@ startDispatchingToTarget:self forProtocol:@protocol(TabStripCommands)]; - ChromeBrowserState* browserState = self.browser->GetBrowserState(); - CHECK(browserState); + ProfileIOS* profile = self.browser->GetProfile(); + CHECK(profile); self.tabStripViewController = [[TabStripViewController alloc] init]; self.tabStripViewController.layoutGuideCenter = LayoutGuideCenterForBrowser(self.browser); self.tabStripViewController.overrideUserInterfaceStyle = - browserState->IsOffTheRecord() ? UIUserInterfaceStyleDark - : UIUserInterfaceStyleUnspecified; - self.tabStripViewController.isIncognito = browserState->IsOffTheRecord(); + profile->IsOffTheRecord() ? UIUserInterfaceStyleDark + : UIUserInterfaceStyleUnspecified; + self.tabStripViewController.isIncognito = profile->IsOffTheRecord(); - BrowserList* browserList = - BrowserListFactory::GetForBrowserState(browserState); + BrowserList* browserList = BrowserListFactory::GetForProfile(profile); tab_groups::TabGroupSyncService* tabGroupSyncService = - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState(browserState); + tab_groups::TabGroupSyncServiceFactory::GetForProfile(profile); self.mediator = [[TabStripMediator alloc] initWithConsumer:self.tabStripViewController tabGroupSyncService:tabGroupSyncService browserList:browserList]; self.mediator.webStateList = self.browser->GetWebStateList(); - self.mediator.browserState = browserState; + self.mediator.profile = profile; self.mediator.browser = self.browser; self.mediator.tabStripHandler = HandlerForProtocol( self.browser->GetCommandDispatcher(), TabStripCommands); @@ -109,7 +108,7 @@ self.contextMenuHelper = [[TabStripContextMenuHelper alloc] initWithBrowserList:browserList webStateList:self.browser->GetWebStateList()]; - self.contextMenuHelper.incognito = browserState->IsOffTheRecord(); + self.contextMenuHelper.incognito = profile->IsOffTheRecord(); self.contextMenuHelper.mutator = self.mediator; self.contextMenuHelper.handler = HandlerForProtocol( self.browser->GetCommandDispatcher(), TabStripCommands); @@ -188,13 +187,13 @@ - (void)showAlertForLastTabDragged: (TabStripLastTabDraggedAlertCommand*)command { - ChromeBrowserState* browserState = self.browser->GetBrowserState(); - if (browserState->IsOffTheRecord()) { + ProfileIOS* profile = self.browser->GetProfile(); + if (profile->IsOffTheRecord()) { return; } AuthenticationService* authenticationService = - AuthenticationServiceFactory::GetForBrowserState(browserState); + AuthenticationServiceFactory::GetForProfile(profile); id<SystemIdentity> identity = authenticationService->GetPrimaryIdentity(signin::ConsentLevel::kSignin); @@ -274,7 +273,7 @@ - (void)showTabStripTabGroupSnackbarAfterClosingGroups: (int)numberOfClosedGroups { if (!IsTabGroupSyncEnabled() || - self.browser->GetBrowserState()->IsOffTheRecord()) { + self.browser->GetProfile()->IsOffTheRecord()) { return; }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator.h b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator.h index b34265e..9873846 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator.h +++ b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator.h
@@ -37,8 +37,8 @@ // number of Webstates. @property(nonatomic, assign) WebStateList* webStateList; -// The ChromeBrowserState model for the corresponding browser. -@property(nonatomic, assign) ChromeBrowserState* browserState; +// The ProfileIOS model for the corresponding browser. +@property(nonatomic, assign) ProfileIOS* profile; // The associated browser needed to move tabs across browsers. @property(nonatomic, assign) Browser* browser;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator.mm b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator.mm index 15ceb3b..088ba187 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator.mm
@@ -647,7 +647,7 @@ #pragma mark - TabStripMutator - (void)addNewItem { - if (!self.webStateList || !self.browserState) { + if (!self.webStateList || !self.profile) { return; } const auto insertionParams = WebStateList::InsertionParams::Automatic(); @@ -763,12 +763,12 @@ - (void)addItem:(TabSwitcherItem*)item toGroup:(const TabGroup*)destinationGroup { - if (!self.webStateList || !self.browserState) { + if (!self.webStateList || !self.profile) { return; } base::RecordAction(base::UserMetricsAction("MobileTabStripAddItemToGroup")); - const bool incognito = self.browserState->IsOffTheRecord(); + const bool incognito = self.profile->IsOffTheRecord(); Browser* browserOfGroup = GetBrowserForGroup(_browserList, destinationGroup, incognito); @@ -795,7 +795,7 @@ } - (void)addNewTabInGroup:(TabGroupItem*)tabGroupItem { - if (!self.webStateList || !self.browserState) { + if (!self.webStateList || !self.profile) { return; } base::RecordAction(base::UserMetricsAction("MobileTabStripNewTabInGroup")); @@ -883,7 +883,7 @@ } - (UIDragItem*)dragItemForTabGroupItem:(TabGroupItem*)tabGroupItem { - return CreateTabGroupDragItem(tabGroupItem.tabGroup, self.browserState); + return CreateTabGroupDragItem(tabGroupItem.tabGroup, self.profile); } - (void)dragWillBeginForTabSwitcherItem:(TabSwitcherItem*)item { @@ -921,12 +921,12 @@ // asynchronous drops. if ([dragItem.localObject isKindOfClass:[TabInfo class]]) { TabInfo* tabInfo = static_cast<TabInfo*>(dragItem.localObject); - if (tabInfo.profile != self.browserState) { + if (tabInfo.profile != self.profile) { // Tabs from different profiles cannot be dropped. return UIDropOperationForbidden; } - if (_browserState->IsOffTheRecord() == tabInfo.incognito) { + if (_profile->IsOffTheRecord() == tabInfo.incognito) { return UIDropOperationMove; } @@ -940,7 +940,7 @@ if ([dragItem.localObject isKindOfClass:[TabGroupInfo class]]) { TabGroupInfo* tabGroupInfo = base::apple::ObjCCast<TabGroupInfo>(dragItem.localObject); - if (tabGroupInfo.profile != self.browserState) { + if (tabGroupInfo.profile != self.profile) { // Tabs from different profiles cannot be dropped. return UIDropOperationForbidden; } @@ -961,7 +961,7 @@ } } - if (self.browserState->IsOffTheRecord() == tabGroupInfo.incognito) { + if (self.profile->IsOffTheRecord() == tabGroupInfo.incognito) { return UIDropOperationMove; } // Tabs of different profiles (regular/incognito) cannot be dropped. @@ -1186,9 +1186,9 @@ DCHECK(false) << "Reentrant web state insertion!"; return; } - DCHECK(_browserState); + DCHECK(_profile); - web::WebState::CreateParams params(_browserState); + web::WebState::CreateParams params(_profile); std::unique_ptr<web::WebState> webState = web::WebState::Create(params); web::NavigationManager::WebLoadParams loadParams(newTabURL); @@ -1405,15 +1405,15 @@ // `insertionParams`. - (void)insertAndActivateNewWebStateWithInsertionParams: (WebStateList::InsertionParams)insertionParams { - CHECK(self.browserState); + CHECK(self.profile); CHECK(self.webStateList); - if (!IsAddNewTabAllowedByPolicy(self.browserState->GetPrefs(), - self.browserState->IsOffTheRecord())) { + if (!IsAddNewTabAllowedByPolicy(self.profile->GetPrefs(), + self.profile->IsOffTheRecord())) { return; } - web::WebState::CreateParams params(self.browserState); + web::WebState::CreateParams params(self.profile); std::unique_ptr<web::WebState> webState = web::WebState::Create(params); GURL url(kChromeUINewTabURL);
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator_unittest.mm index bd62413c..21cc605 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator_unittest.mm
@@ -96,24 +96,22 @@ TabStripMediatorTest() { feature_list_.InitWithFeatures( {kTabGroupsIPad, kModernTabStrip, kTabGroupSync}, {}); - TestChromeBrowserState::Builder browser_state_builder; - browser_state_builder.AddTestingFactory( + TestProfileIOS::Builder profile_builder; + profile_builder.AddTestingFactory( ios::FaviconServiceFactory::GetInstance(), ios::FaviconServiceFactory::GetDefaultFactory()); - browser_state_builder.AddTestingFactory( + profile_builder.AddTestingFactory( ios::HistoryServiceFactory::GetInstance(), ios::HistoryServiceFactory::GetDefaultFactory()); tab_group_sync_service_ = std::make_unique< ::testing::NiceMock<tab_groups::MockTabGroupSyncService>>(); - browser_state_ = std::move(browser_state_builder).Build(); + profile_ = std::move(profile_builder).Build(); browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), - std::make_unique<TabStripFakeWebStateListDelegate>()); + profile_.get(), std::make_unique<TabStripFakeWebStateListDelegate>()); other_browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), - std::make_unique<TabStripFakeWebStateListDelegate>()); + profile_.get(), std::make_unique<TabStripFakeWebStateListDelegate>()); web_state_list_ = browser_->GetWebStateList(); SnapshotBrowserAgent::CreateForBrowser(other_browser_.get()); @@ -128,7 +126,7 @@ void InitializeMediator() { BrowserList* browser_list = - BrowserListFactory::GetForBrowserState(browser_state_.get()); + BrowserListFactory::GetForProfile(profile_.get()); browser_list->AddBrowser(browser_.get()); browser_list->AddBrowser(other_browser_.get()); @@ -136,7 +134,7 @@ [[TabStripMediator alloc] initWithConsumer:consumer_ tabGroupSyncService:tab_group_sync_service_.get() browserList:browser_list]; - mediator_.browserState = browser_state_.get(); + mediator_.profile = profile_.get(); mediator_.webStateList = web_state_list_; mediator_.browser = browser_.get(); mediator_.tabStripHandler = tab_strip_handler_; @@ -144,11 +142,11 @@ void AddWebState(bool pinned = false) { auto web_state = std::make_unique<web::FakeWebState>(); - web_state->SetBrowserState(browser_state_.get()); + web_state->SetBrowserState(profile_.get()); favicon::WebFaviconDriver::CreateForWebState( web_state.get(), - ios::FaviconServiceFactory::GetForBrowserState( - browser_state_.get(), ServiceAccessType::IMPLICIT_ACCESS)); + ios::FaviconServiceFactory::GetForProfile( + profile_.get(), ServiceAccessType::IMPLICIT_ACCESS)); web_state_list_->InsertWebState( std::move(web_state), @@ -172,7 +170,7 @@ web::WebTaskEnvironment task_environment_; FakeTabStripHandler* tab_strip_handler_; base::test::ScopedFeatureList feature_list_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_; std::unique_ptr<TestBrowser> other_browser_; raw_ptr<WebStateList> web_state_list_; @@ -263,11 +261,10 @@ for (int i = 0; i < web_state_list_->count(); ++i) { web::FakeWebState* web_state = static_cast<web::FakeWebState*>(web_state_list_->GetWebStateAt(i)); - web_state->SetBrowserState(browser_state_.get()); + web_state->SetBrowserState(profile_.get()); favicon::WebFaviconDriver::CreateForWebState( - web_state, - ios::FaviconServiceFactory::GetForBrowserState( - browser_state_.get(), ServiceAccessType::IMPLICIT_ACCESS)); + web_state, ios::FaviconServiceFactory::GetForProfile( + profile_.get(), ServiceAccessType::IMPLICIT_ACCESS)); } InitializeMediator(); @@ -445,11 +442,10 @@ for (int i = 0; i < web_state_list_->count(); ++i) { web::FakeWebState* web_state = static_cast<web::FakeWebState*>(web_state_list_->GetWebStateAt(i)); - web_state->SetBrowserState(browser_state_.get()); + web_state->SetBrowserState(profile_.get()); favicon::WebFaviconDriver::CreateForWebState( - web_state, - ios::FaviconServiceFactory::GetForBrowserState( - browser_state_.get(), ServiceAccessType::IMPLICIT_ACCESS)); + web_state, ios::FaviconServiceFactory::GetForProfile( + profile_.get(), ServiceAccessType::IMPLICIT_ACCESS)); } InitializeMediator(); @@ -649,11 +645,10 @@ consumer_.selectedItem.identifier); auto web_state = std::make_unique<web::FakeWebState>(); - web_state->SetBrowserState(browser_state_.get()); + web_state->SetBrowserState(profile_.get()); favicon::WebFaviconDriver::CreateForWebState( - web_state.get(), - ios::FaviconServiceFactory::GetForBrowserState( - browser_state_.get(), ServiceAccessType::IMPLICIT_ACCESS)); + web_state.get(), ios::FaviconServiceFactory::GetForProfile( + profile_.get(), ServiceAccessType::IMPLICIT_ACCESS)); web_state_list_->InsertWebState(std::move(web_state), WebStateList::InsertionParams::AtIndex(1)); @@ -733,7 +728,7 @@ WebStateList* web_state_list = browser_->GetWebStateList(); WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "a b | c d e f* [ 1 g h ]", browser_->GetBrowserState())); + "a b | c d e f* [ 1 g h ]", browser_->GetProfile())); web::WebState* web_state_to_keep = builder.GetWebStateForIdentifier('b'); InitializeMediator(); @@ -758,7 +753,7 @@ WebStateList* web_state_list = browser_->GetWebStateList(); WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "a b | c d e f* [ 1 g h ]", browser_->GetBrowserState())); + "a b | c d e f* [ 1 g h ]", browser_->GetProfile())); web::WebState* web_state_to_keep = builder.GetWebStateForIdentifier('d'); InitializeMediator(); @@ -783,7 +778,7 @@ WebStateList* web_state_list = browser_->GetWebStateList(); WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "a b | c d e f* [ 1 g h ]", browser_->GetBrowserState())); + "a b | c d e f* [ 1 g h ]", browser_->GetProfile())); web::WebState* web_state_to_keep = builder.GetWebStateForIdentifier('f'); InitializeMediator(); @@ -808,7 +803,7 @@ WebStateList* web_state_list = browser_->GetWebStateList(); WebStateListBuilderFromDescription builder(web_state_list); ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "a b | c d e f* [ 1 g h ]", browser_->GetBrowserState())); + "a b | c d e f* [ 1 g h ]", browser_->GetProfile())); web::WebState* web_state_to_keep = builder.GetWebStateForIdentifier('g'); InitializeMediator(); @@ -1093,8 +1088,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); InitializeMediator(); @@ -1121,8 +1116,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); InitializeMediator(); @@ -1151,8 +1146,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); InitializeMediator(); @@ -1178,8 +1173,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b [ 0 c ]", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b [ 0 c ]", + browser_->GetProfile())); InitializeMediator(); @@ -1225,13 +1220,13 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b", + browser_->GetProfile())); WebStateList* other_web_state_list = other_browser_->GetWebStateList(); WebStateListBuilderFromDescription other_builder(other_web_state_list); ASSERT_TRUE(other_builder.BuildWebStateListFromDescription( - "| d* [ 0 e ] f", other_browser_->GetBrowserState())); + "| d* [ 0 e ] f", other_browser_->GetProfile())); InitializeMediator(); @@ -1279,8 +1274,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* [ 0 b c ]", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* [ 0 b c ]", + browser_->GetProfile())); InitializeMediator(); @@ -1326,8 +1321,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); const GURL new_url = GURL("https://cancelled_url.com"); const std::u16string new_title = u"cancelled title"; @@ -1384,8 +1379,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); web::WebStateID web_state_id = web_state_list->GetWebStateAt(1)->GetUniqueIdentifier(); @@ -1431,8 +1426,8 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); const GURL new_url = GURL("https://cancelled_url.com"); const std::u16string new_title = u"cancelled title"; @@ -1489,13 +1484,13 @@ WebStateList* web_state_list = browser_->GetWebStateList(); CloseAllWebStates(*web_state_list, WebStateList::CLOSE_NO_FLAGS); WebStateListBuilderFromDescription builder(web_state_list); - ASSERT_TRUE(builder.BuildWebStateListFromDescription( - "| a* b c ", browser_->GetBrowserState())); + ASSERT_TRUE(builder.BuildWebStateListFromDescription("| a* b c ", + browser_->GetProfile())); WebStateList* other_web_state_list = other_browser_->GetWebStateList(); WebStateListBuilderFromDescription other_builder(other_web_state_list); ASSERT_TRUE(other_builder.BuildWebStateListFromDescription( - "| [ 0 a* b ] c d e", other_browser_->GetBrowserState())); + "| [ 0 a* b ] c d e", other_browser_->GetProfile())); const GURL new_url = GURL("https://cancelled_url.com"); const std::u16string new_title = u"cancelled title";
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator_utils_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator_utils_unittest.mm index 2582f41..3155349 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator_utils_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_strip/coordinator/tab_strip_mediator_utils_unittest.mm
@@ -49,22 +49,21 @@ TabStripMediatorUtilsTest() { feature_list_.InitWithFeatures( {kTabGroupsIPad, kModernTabStrip, kTabGroupSync}, {}); - TestChromeBrowserState::Builder browser_state_builder; - browser_state_builder.AddTestingFactory( + TestProfileIOS::Builder profile_builder; + profile_builder.AddTestingFactory( tab_groups::TabGroupSyncServiceFactory::GetInstance(), base::BindRepeating(&CreateMockSyncService)); - browser_state_ = std::move(browser_state_builder).Build(); + profile_ = std::move(profile_builder).Build(); mock_service_ = static_cast<tab_groups::MockTabGroupSyncService*>( - tab_groups::TabGroupSyncServiceFactory::GetForBrowserState( - browser_state_.get())); + tab_groups::TabGroupSyncServiceFactory::GetForProfile(profile_.get())); browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), std::make_unique<FakeWebStateListDelegate>()); + profile_.get(), std::make_unique<FakeWebStateListDelegate>()); web_state_list_ = browser_->GetWebStateList(); other_browser_ = std::make_unique<TestBrowser>( - browser_state_.get(), std::make_unique<FakeWebStateListDelegate>()); + profile_.get(), std::make_unique<FakeWebStateListDelegate>()); other_web_state_list_ = other_browser_->GetWebStateList(); BrowserList* browser_list = - BrowserListFactory::GetForBrowserState(browser_state_.get()); + BrowserListFactory::GetForProfile(profile_.get()); local_observer_ = std::make_unique<tab_groups::TabGroupLocalUpdateObserver>( browser_list, mock_service_); browser_list->AddBrowser(browser_.get()); @@ -76,7 +75,7 @@ protected: web::WebTaskEnvironment task_environment_; base::test::ScopedFeatureList feature_list_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_; raw_ptr<WebStateList> web_state_list_; std::unique_ptr<TestBrowser> other_browser_;
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_utils_unittest.mm b/ios/chrome/browser/ui/tab_switcher/tab_utils_unittest.mm index 3f93352..3288849 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_utils_unittest.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_utils_unittest.mm
@@ -15,17 +15,16 @@ class TabSwitcherUtilsTest : public PlatformTest { public: TabSwitcherUtilsTest() { - browser_state_ = TestChromeBrowserState::Builder().Build(); + profile_ = TestProfileIOS::Builder().Build(); // Creates all kind of browsers. - browser_regular_ = std::make_unique<TestBrowser>(browser_state_.get()); - browser_inactive_ = std::make_unique<TestBrowser>(browser_state_.get()); - browser_incognito_ = std::make_unique<TestBrowser>( - browser_state_->GetOffTheRecordChromeBrowserState()); + browser_regular_ = std::make_unique<TestBrowser>(profile_.get()); + browser_inactive_ = std::make_unique<TestBrowser>(profile_.get()); + browser_incognito_ = + std::make_unique<TestBrowser>(profile_->GetOffTheRecordProfile()); // Add them to the apropriate lists. - browser_list_ = - BrowserListFactory::GetForBrowserState(browser_state_.get()); + browser_list_ = BrowserListFactory::GetForProfile(profile_.get()); browser_list_->AddBrowser(browser_regular_.get()); browser_list_->AddBrowser(browser_inactive_.get()); browser_list_->AddBrowser(browser_incognito_.get()); @@ -48,7 +47,7 @@ } web::WebTaskEnvironment task_environment_; - std::unique_ptr<TestChromeBrowserState> browser_state_; + std::unique_ptr<TestProfileIOS> profile_; std::unique_ptr<TestBrowser> browser_regular_; std::unique_ptr<TestBrowser> browser_inactive_; std::unique_ptr<TestBrowser> browser_incognito_; @@ -58,8 +57,8 @@ TEST_F(TabSwitcherUtilsTest, GetTheCorrectBrowser) { for (Browser* browser : browsers_) { - ChromeBrowserState* browserState = browser->GetBrowserState(); - BOOL incognito = browserState->IsOffTheRecord(); + ProfileIOS* profile = browser->GetProfile(); + BOOL incognito = profile->IsOffTheRecord(); web::WebState* inserted_web_state = AddTabToBrowser(browser); ASSERT_EQ(browser, GetBrowserForTabWithId(browser_list_.get(),
diff --git a/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios.zip.sha1 index 8f00c16..e0477d8 100644 --- a/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@ -ed124858f61bcb9a8f92c20ffff0995572dafd94 \ No newline at end of file +6b433a1c15011868a191e3fd86851d28d5f92b46 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 index bb5d98d..58eef91 100644 --- a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@ -53f910765d191a5407f4c56924d1a155c4ac05c6 \ No newline at end of file +af43cbe2e1ea93857668daf685182ac0badf1958 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 index a13223a5..fe150d8 100644 --- a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@ -a0b0ac35ce5296c20c63af459745b6aa70678988 \ No newline at end of file +85e5fe8e5cdbd1ef280d606156353f91ca6c0d54 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios.zip.sha1 index 49e6d27..e7eb45da 100644 --- a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -44a7bd758f49fa01338d58d0edeffa5f38b768ae \ No newline at end of file +d1cd110f9165241f0e52cbe99b7311fe883d12a7 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator.zip.sha1 index cbf9debd..73fc689 100644 --- a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -4c76bb23298a4089acbaddc4d934e97eaf99e329 \ No newline at end of file +bcdf1c836b0cf31310632eb85e2c89e6e77135ee \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 index cc28df0..b2357534 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -c32f2ae2155e180c5739f4385badd4be4cf71612 \ No newline at end of file +940c0c45a8bc570ec0ed116ea959a375a069f70b \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 index d706094..d96b568 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -d77ce7c2f8c00944876c3fdbd836506fc6b82a39 \ No newline at end of file +f73fb0564eb8f84837ce8a3c68952d953e84ff25 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 index 7a7815a..0bf3913 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -e84e7f3fc6eca24f22ea7c679aef7d9e499e9a49 \ No newline at end of file +48a9c3af0386c8e5273b7c90546b8a27bab8b1c8 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 index bee438f..8ebfb2f9 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -1e79574c11376dbe884c0a06a49e1a9f37c932db \ No newline at end of file +b0ae2401786683a259abb42714ecd35187929a86 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 index cab6f2b..1723723 100644 --- a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -f978dd90b7ff88fe68fb82a696e06663e0026899 \ No newline at end of file +aec3024b89a3792c7b445f96b63cdbb587eca3dc \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 index bf8561ee..e8355d8 100644 --- a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -5dbee3e955966f4353d3cbeede29328b384e1a3b \ No newline at end of file +54e9bb59aaab17fb3c31505bc7f360de0ee2fe0e \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 index 77332ac..6cad73bf 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -51a1cc4774d73436bd8d318ddc759bc8ecb9ec16 \ No newline at end of file +1736d7e26e51d243473efca822fe6c16993fb815 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 index 5837981..22b7c47 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -968a9f8cdbcb4f701904e8d166b02a63415b2112 \ No newline at end of file +ad74c688700a758873a92bc8da28dfdd73c43f9d \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 index a328b98..5366b61e 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -3a15c0b097e171fb707aa91d082c682e7bb5ce86 \ No newline at end of file +1cf64a183d50983bb668e97521c7c899156e7721 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 index 18a370f8..6d80e1f 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -f48da9c84b5ad3fddafcdccdaefa76f74eb12ba0 \ No newline at end of file +ecfc621103387ca0a42fbab27e16e6880535dc5a \ No newline at end of file
diff --git a/ios_internal b/ios_internal index c7ca556..028fcf8 160000 --- a/ios_internal +++ b/ios_internal
@@ -1 +1 @@ -Subproject commit c7ca556bc732c861810971db63ceffa352c2442e +Subproject commit 028fcf85bcfd643709d3174307c2e4303e76fcd7
diff --git a/media/base/video_frame.cc b/media/base/video_frame.cc index 7613c9c..d0684407 100644 --- a/media/base/video_frame.cc +++ b/media/base/video_frame.cc
@@ -468,12 +468,7 @@ return nullptr; } - // `mailbox` is not backed by a GPU texture, so using a texture target of 0 - // is fine. - constexpr uint32_t kTextureTarget = 0; - - frame->mailbox_holder_ = - gpu::MailboxHolder(mailbox, gpu::SyncToken(), kTextureTarget); + frame->mailbox_ = mailbox; frame->mailbox_holder_and_gmb_release_cb_ = WrapReleaseMailboxCB(std::move(mailbox_holder_release_cb)); @@ -501,8 +496,9 @@ } if (shared_image) { - frame->mailbox_holder_ = gpu::MailboxHolder( - shared_image->mailbox(), sync_token, shared_image->GetTextureTarget()); + frame->mailbox_ = shared_image->mailbox(); + frame->texture_sync_token_ = sync_token; + frame->texture_target_ = shared_image->GetTextureTarget(); frame->shared_image_ = shared_image->MakeUnowned(); } frame->mailbox_holder_and_gmb_release_cb_ = @@ -530,8 +526,9 @@ if (!frame) { return nullptr; } - frame->mailbox_holder_ = gpu::MailboxHolder( - shared_image->mailbox(), sync_token, shared_image->GetTextureTarget()); + frame->mailbox_ = shared_image->mailbox(); + frame->texture_sync_token_ = sync_token; + frame->texture_target_ = shared_image->GetTextureTarget(); // Note that we can not use |shared_image|->MakeUnOwned() here since that // will not work for MappableSI due to it owning a GMB internally and we can @@ -770,8 +767,9 @@ } if (shared_image) { - frame->mailbox_holder_ = gpu::MailboxHolder( - shared_image->mailbox(), sync_token, shared_image->GetTextureTarget()); + frame->mailbox_ = shared_image->mailbox(); + frame->texture_sync_token_ = sync_token; + frame->texture_target_ = shared_image->GetTextureTarget(); frame->shared_image_ = shared_image->MakeUnowned(); } return frame; @@ -807,7 +805,7 @@ DLOG(ERROR) << __func__ << " Couldn't create VideoFrame instance."; return nullptr; } - frame->mailbox_holder_ = gpu::MailboxHolder(); + frame->mailbox_holder_and_gmb_release_cb_ = ReleaseMailboxAndGpuMemoryBufferCB(); frame->dmabuf_fds_ = std::move(dmabuf_fds); @@ -1270,8 +1268,7 @@ } bool VideoFrame::HasTextures() const { - return wrapped_frame_ ? wrapped_frame_->HasTextures() - : !mailbox_holder_.mailbox.IsZero(); + return wrapped_frame_ ? wrapped_frame_->HasTextures() : !mailbox_.IsZero(); } bool VideoFrame::HasSharedImage() const { @@ -1490,11 +1487,17 @@ } // TODO(crbug.com/332564976): Update method to not take in param. -const gpu::MailboxHolder& VideoFrame::mailbox_holder( +const gpu::MailboxHolder VideoFrame::mailbox_holder( size_t texture_index) const { DCHECK(HasTextures()); - return wrapped_frame_ ? wrapped_frame_->mailbox_holder(texture_index) - : mailbox_holder_; + if (wrapped_frame_) { + return wrapped_frame_->mailbox_holder(texture_index); + } + if (shared_image_) { + return gpu::MailboxHolder(shared_image_->mailbox(), texture_sync_token_, + shared_image_->GetTextureTarget()); + } + return gpu::MailboxHolder(mailbox_, texture_sync_token_, texture_target_); } scoped_refptr<gpu::ClientSharedImage> VideoFrame::shared_image() const { @@ -1584,7 +1587,7 @@ DCHECK(!wrapped_frame_); // No lock is required due to the HasOneRef() check. - auto& token = mailbox_holder_.sync_token; + auto& token = texture_sync_token_; if (token.HasData()) client->WaitSyncToken(token); client->GenerateSyncToken(&token); @@ -1625,7 +1628,6 @@ DCHECK(visible_rect_ == visible_rect) << "visible_rect " << visible_rect.ToString() << " exceeds coded_size " << coded_size().ToString(); - memset(&mailbox_holder_, 0, sizeof(mailbox_holder_)); memset(&data_, 0, sizeof(data_)); }
diff --git a/media/base/video_frame.h b/media/base/video_frame.h index 79a84ff..3dd21ada 100644 --- a/media/base/video_frame.h +++ b/media/base/video_frame.h
@@ -714,7 +714,7 @@ // Returns a mailbox holder for a given texture. // Only valid to call if this is a NATIVE_TEXTURE frame. Before using the // mailbox, the caller must wait for the included sync point. - const gpu::MailboxHolder& mailbox_holder(size_t texture_index) const; + const gpu::MailboxHolder mailbox_holder(size_t texture_index) const; // Returns the ClientSharedImage. // Only valid to call if this is a NATIVE_TEXTURE frame and contains valid @@ -963,8 +963,10 @@ // VideoFrame. const uint8_t* data_[kMaxPlanes]; - // Native texture mailbox, if this is a IsTexture() frame. - gpu::MailboxHolder mailbox_holder_; + // Native texture mailbox, if this frame HasTextures(). + gpu::Mailbox mailbox_; + gpu::SyncToken texture_sync_token_; + uint32_t texture_target_ = 0; ReleaseMailboxAndGpuMemoryBufferCB mailbox_holder_and_gmb_release_cb_; // Native texture shared image that is only set when the VideoFrame is
diff --git a/media/base/video_util.cc b/media/base/video_util.cc index 24d4696..3356856 100644 --- a/media/base/video_util.cc +++ b/media/base/video_util.cc
@@ -121,7 +121,7 @@ // With multiplanar shared images, there's one shared image mailbox so perform // readback passing the appropriate `src_plane` for the single mailbox. - const gpu::MailboxHolder& holder = src_frame.mailbox_holder(0); + const gpu::MailboxHolder holder = src_frame.mailbox_holder(0); DCHECK(!holder.mailbox.IsZero()); ri->WaitSyncTokenCHROMIUM(holder.sync_token.GetConstData()); bool result =
diff --git a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java index 5e904bbb..8b7f130 100644 --- a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java +++ b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java
@@ -1710,7 +1710,11 @@ } @Override + @SuppressWarnings("Finalize") public void finalize() { + // TODO(crbug.com/40286193): Use an explicit close (or timer-based timeout?) rather than + // finalize, which + // discouraged and difficult to ensure actually runs. mCameraThreadHandler.getLooper().quit(); }
diff --git a/media/midi/java/src/org/chromium/midi/MidiDeviceAndroid.java b/media/midi/java/src/org/chromium/midi/MidiDeviceAndroid.java index bc8e26bf..d2796f18 100644 --- a/media/midi/java/src/org/chromium/midi/MidiDeviceAndroid.java +++ b/media/midi/java/src/org/chromium/midi/MidiDeviceAndroid.java
@@ -10,8 +10,8 @@ import org.jni_zero.CalledByNative; import org.jni_zero.JNINamespace; -@JNINamespace("midi") /** A class implementing midi::MidiDeviceAndroid functionality. */ +@JNINamespace("midi") class MidiDeviceAndroid { /** The underlying device. */ private final MidiDevice mDevice;
diff --git a/media/renderers/paint_canvas_video_renderer.cc b/media/renderers/paint_canvas_video_renderer.cc index db72350d..7acb94b 100644 --- a/media/renderers/paint_canvas_video_renderer.cc +++ b/media/renderers/paint_canvas_video_renderer.cc
@@ -133,7 +133,7 @@ GLuint texture; }; -const gpu::MailboxHolder& GetVideoFrameMailboxHolder(VideoFrame* video_frame) { +const gpu::MailboxHolder GetVideoFrameMailboxHolder(VideoFrame* video_frame) { DCHECK(video_frame->HasTextures()); DCHECK(PIXEL_FORMAT_ARGB == video_frame->format() || @@ -156,7 +156,7 @@ PIXEL_FORMAT_BGRA == video_frame->format()) << "Format: " << VideoPixelFormatToString(video_frame->format()); - const gpu::MailboxHolder& mailbox_holder = video_frame->mailbox_holder(0); + const gpu::MailboxHolder mailbox_holder = video_frame->mailbox_holder(0); return mailbox_holder; } @@ -1506,7 +1506,7 @@ DCHECK_EQ(video_frame->shared_image_format_type(), SharedImageFormatType::kSharedImageFormatExternalSampler); - const gpu::MailboxHolder& mailbox_holder = + const gpu::MailboxHolder mailbox_holder = GetVideoFrameMailboxHolder(video_frame.get()); DCHECK(mailbox_holder.texture_target == GL_TEXTURE_2D || mailbox_holder.texture_target == GL_TEXTURE_RECTANGLE_ARB || @@ -1846,7 +1846,7 @@ if (allow_wrap_texture && can_wrap_texture) { cache_.emplace(video_frame->unique_id()); - const gpu::MailboxHolder& holder = + const gpu::MailboxHolder holder = GetVideoFrameMailboxHolder(video_frame.get()); mailbox = holder.mailbox; ri->WaitSyncTokenCHROMIUM(holder.sync_token.GetConstData()); @@ -1897,7 +1897,7 @@ // Copy into the texture backing of the cached copy. This supports // multiplanar shared images. - const gpu::MailboxHolder& frame_mailbox_holder = + const gpu::MailboxHolder frame_mailbox_holder = GetVideoFrameMailboxHolder(video_frame.get()); ri->WaitSyncTokenCHROMIUM(frame_mailbox_holder.sync_token.GetConstData()); ri->CopySharedImage( @@ -1991,7 +1991,7 @@ // If we have single source shared image, just use CopySharedImage(). if (video_frame->HasTextures()) { - const auto& source = video_frame->mailbox_holder(0); + const auto source = video_frame->mailbox_holder(0); auto source_rect = use_visible_rect ? video_frame->visible_rect() : gfx::Rect(video_frame->coded_size()); ri->WaitSyncTokenCHROMIUM(source.sync_token.GetConstData());
diff --git a/media/renderers/video_frame_rgba_to_yuva_converter.cc b/media/renderers/video_frame_rgba_to_yuva_converter.cc index 8acfae7f..c708fd8 100644 --- a/media/renderers/video_frame_rgba_to_yuva_converter.cc +++ b/media/renderers/video_frame_rgba_to_yuva_converter.cc
@@ -55,7 +55,7 @@ ri->WaitSyncTokenCHROMIUM(src_mailbox_holder.sync_token.GetConstData()); - const auto& dst_mailbox_holder = + const auto dst_mailbox_holder = dst_video_frame->mailbox_holder(/*texture_index=*/0); ri->WaitSyncTokenCHROMIUM(dst_mailbox_holder.sync_token.GetConstData());
diff --git a/media/renderers/video_resource_updater.cc b/media/renderers/video_resource_updater.cc index 830372f..afbda1b 100644 --- a/media/renderers/video_resource_updater.cc +++ b/media/renderers/video_resource_updater.cc
@@ -978,9 +978,9 @@ void VideoResourceUpdater::CopyHardwarePlane( VideoFrame* video_frame, - const gpu::MailboxHolder& mailbox_holder, VideoFrameExternalResource* external_resource) { const gfx::Size output_plane_resource_size = video_frame->coded_size(); + auto mailbox_holder = video_frame->mailbox_holder(0); // The copy needs to be a direct transfer of pixel data, so we use an RGBA8 // target to avoid loss of precision or dropping any alpha component. constexpr viz::SharedImageFormat copy_si_format = @@ -1063,13 +1063,13 @@ CopyingSyncTokenClient client; auto original_release_token = video_frame->UpdateReleaseSyncToken(&client); - const gpu::MailboxHolder& mailbox_holder = + const gpu::MailboxHolder mailbox_holder = video_frame->mailbox_holder(/*texture_index=*/0); if (mailbox_holder.mailbox.IsZero()) { return external_resource; } if (copy_required) { - CopyHardwarePlane(video_frame.get(), mailbox_holder, &external_resource); + CopyHardwarePlane(video_frame.get(), &external_resource); return external_resource; }
diff --git a/media/renderers/video_resource_updater.h b/media/renderers/video_resource_updater.h index a7f20251..80eb0d9 100644 --- a/media/renderers/video_resource_updater.h +++ b/media/renderers/video_resource_updater.h
@@ -155,7 +155,6 @@ // and the source video frame texture can't be used on the output GL context. // https://crbug.com/582170 void CopyHardwarePlane(VideoFrame* video_frame, - const gpu::MailboxHolder& mailbox_holder, VideoFrameExternalResource* external_resources); // Get resource ready to be appended into DrawQuad. This is used for GPU
diff --git a/mojo/public/java/bindings/src/org/chromium/mojo/bindings/AutoCloseableRouter.java b/mojo/public/java/bindings/src/org/chromium/mojo/bindings/AutoCloseableRouter.java index b601b31..9bdc0ec 100644 --- a/mojo/public/java/bindings/src/org/chromium/mojo/bindings/AutoCloseableRouter.java +++ b/mojo/public/java/bindings/src/org/chromium/mojo/bindings/AutoCloseableRouter.java
@@ -98,6 +98,7 @@ * @see Object#finalize() */ @Override + @SuppressWarnings("Finalize") // TODO(crbug.com/40286193): Use LifetimeAssert instead. protected void finalize() throws Throwable { if (!mClosed) { mExecutor.execute(
diff --git a/mojo/public/java/bindings/src/org/chromium/mojo/bindings/Decoder.java b/mojo/public/java/bindings/src/org/chromium/mojo/bindings/Decoder.java index 5e543b4..97c70b0 100644 --- a/mojo/public/java/bindings/src/org/chromium/mojo/bindings/Decoder.java +++ b/mojo/public/java/bindings/src/org/chromium/mojo/bindings/Decoder.java
@@ -811,13 +811,13 @@ * array of booleans. */ private DataHeader readDataHeaderForBooleanArray( - long expectedLength, boolean containsHasValueBitfield) { + int expectedLength, boolean containsHasValueBitfield) { DataHeader dataHeader = readDataHeader(); - long packedBoolSize = (dataHeader.elementsOrVersion + 7) / 8; - long expectedSize = DataHeader.HEADER_SIZE + packedBoolSize; + int packedBoolSize = (dataHeader.elementsOrVersion + 7) / 8; + int expectedSize = DataHeader.HEADER_SIZE + packedBoolSize; if (containsHasValueBitfield) { - long hasValueBitfieldSize = packedBoolSize; + int hasValueBitfieldSize = packedBoolSize; expectedSize += hasValueBitfieldSize; }
diff --git a/mojo/public/java/bindings/src/org/chromium/mojo/bindings/RouterImpl.java b/mojo/public/java/bindings/src/org/chromium/mojo/bindings/RouterImpl.java index cfaa95c9..8eb7f88d 100644 --- a/mojo/public/java/bindings/src/org/chromium/mojo/bindings/RouterImpl.java +++ b/mojo/public/java/bindings/src/org/chromium/mojo/bindings/RouterImpl.java
@@ -64,6 +64,7 @@ } @Override + @SuppressWarnings("Finalize") // TODO(crbug.com/40286193): Use LifetimeAssert instead. protected void finalize() throws Throwable { if (!mAcceptWasInvoked) { // We close the pipe here as a way of signaling to the calling application that an
diff --git a/mojo/public/java/system/src/org/chromium/mojo/system/impl/HandleBase.java b/mojo/public/java/system/src/org/chromium/mojo/system/impl/HandleBase.java index c013113..fcb52cf 100644 --- a/mojo/public/java/system/src/org/chromium/mojo/system/impl/HandleBase.java +++ b/mojo/public/java/system/src/org/chromium/mojo/system/impl/HandleBase.java
@@ -114,6 +114,7 @@ * @see java.lang.Object#finalize() */ @Override + @SuppressWarnings("Finalize") // TODO(crbug.com/40286193): Use LifetimeAssert instead. protected final void finalize() throws Throwable { if (isValid()) { // This should not happen, as the user of this class should close the handle. Adding a
diff --git a/net/android/junit/src/org/chromium/net/HttpNegotiateAuthenticatorTest.java b/net/android/junit/src/org/chromium/net/HttpNegotiateAuthenticatorTest.java index 4167423..c752a8f 100644 --- a/net/android/junit/src/org/chromium/net/HttpNegotiateAuthenticatorTest.java +++ b/net/android/junit/src/org/chromium/net/HttpNegotiateAuthenticatorTest.java
@@ -8,7 +8,6 @@ import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; @@ -441,7 +440,7 @@ when(accountManagerFuture.getResult()).thenReturn(result); } catch (OperationCanceledException | AuthenticatorException | IOException e) { // Can never happen - artifact of Mockito. - fail(); + throw new RuntimeException(e); } return accountManagerFuture; } @@ -459,7 +458,7 @@ when(accountManagerFuture.getResult()).thenThrow(ex); } catch (OperationCanceledException | AuthenticatorException | IOException e) { // Can never happen - artifact of Mockito. - fail(); + throw new RuntimeException(e); } return accountManagerFuture; }
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins index 3dfa2a5..2fafd4c 100644 --- a/net/http/transport_security_state_static.pins +++ b/net/http/transport_security_state_static.pins
@@ -43,9 +43,9 @@ # hash function for preloaded entries again (we have already done so once). # -# Last updated: 2024-09-30 12:55 UTC +# Last updated: 2024-10-01 12:55 UTC PinsListTimestamp -1727700937 +1727787340 TestSPKI sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/net/http/transport_security_state_static_pins.json b/net/http/transport_security_state_static_pins.json index c46b954..e297714 100644 --- a/net/http/transport_security_state_static_pins.json +++ b/net/http/transport_security_state_static_pins.json
@@ -31,7 +31,7 @@ // the 'static_spki_hashes' and 'bad_static_spki_hashes' fields in 'pinsets' // refer to, and the timestamp at which the pins list was last updated. // -// Last updated: 2024-09-30 12:55 UTC +// Last updated: 2024-10-01 12:55 UTC // { "pinsets": [
diff --git a/pdf/pdf_ink_module.cc b/pdf/pdf_ink_module.cc index e402d77..5de195b 100644 --- a/pdf/pdf_ink_module.cc +++ b/pdf/pdf_ink_module.cc
@@ -286,7 +286,7 @@ } gfx::PointF position = normalized_event.PositionInWidget(); - return is_drawing_stroke() ? StartStroke(position) + return is_drawing_stroke() ? StartStroke(position, event.TimeStamp()) : StartEraseStroke(position); } @@ -298,7 +298,7 @@ } gfx::PointF position = event.PositionInWidget(); - return is_drawing_stroke() ? FinishStroke(position) + return is_drawing_stroke() ? FinishStroke(position, event.TimeStamp()) : FinishEraseStroke(position); } @@ -306,11 +306,12 @@ CHECK(enabled()); gfx::PointF position = event.PositionInWidget(); - return is_drawing_stroke() ? ContinueStroke(position) + return is_drawing_stroke() ? ContinueStroke(position, event.TimeStamp()) : ContinueEraseStroke(position); } -bool PdfInkModule::StartStroke(const gfx::PointF& position) { +bool PdfInkModule::StartStroke(const gfx::PointF& position, + base::TimeTicks timestamp) { int page_index = client_->VisiblePageIndexFromPoint(position); if (page_index < 0) { // Do not draw when not on a page. @@ -324,7 +325,7 @@ ConvertEventPositionToCanonicalPosition(position, page_index); CHECK(!state.start_time.has_value()); - state.start_time = base::Time::Now(); + state.start_time = timestamp; state.page_index = page_index; // Start of the first segment of a stroke. @@ -352,7 +353,8 @@ return true; } -bool PdfInkModule::ContinueStroke(const gfx::PointF& position) { +bool PdfInkModule::ContinueStroke(const gfx::PointF& position, + base::TimeTicks timestamp) { CHECK(is_drawing_stroke()); DrawingStrokeState& state = drawing_stroke_state(); if (!state.start_time.has_value()) { @@ -386,7 +388,7 @@ if (boundary_position != last_position) { // Record the last point before leaving the page, if `last_position` was // not already on the page boundary. - RecordStrokePosition(boundary_position); + RecordStrokePosition(boundary_position, timestamp); client_->Invalidate( state.brush->GetInvalidateArea(last_position, boundary_position)); } @@ -407,12 +409,12 @@ last_position); if (boundary_position != position) { // Record the first point after entering the page. - RecordStrokePosition(boundary_position); + RecordStrokePosition(boundary_position, timestamp); invalidation_position = boundary_position; } } - RecordStrokePosition(position); + RecordStrokePosition(position, timestamp); // Invalidate area covering a straight line between this position and the // previous one. @@ -425,10 +427,11 @@ return true; } -bool PdfInkModule::FinishStroke(const gfx::PointF& position) { +bool PdfInkModule::FinishStroke(const gfx::PointF& position, + base::TimeTicks timestamp) { // Process `position` as though it was the last point of movement first, // before moving on to various bookkeeping tasks. - if (!ContinueStroke(position)) { + if (!ContinueStroke(position, timestamp)) { return false; } @@ -679,12 +682,13 @@ client_->GetZoom()); } -void PdfInkModule::RecordStrokePosition(const gfx::PointF& position) { +void PdfInkModule::RecordStrokePosition(const gfx::PointF& position, + base::TimeTicks timestamp) { CHECK(is_drawing_stroke()); DrawingStrokeState& state = drawing_stroke_state(); gfx::PointF canonical_position = ConvertEventPositionToCanonicalPosition(position, state.page_index); - base::TimeDelta time_diff = base::Time::Now() - state.start_time.value(); + base::TimeDelta time_diff = timestamp - state.start_time.value(); // TODO(crbug.com/353942909): Set the tool type appropriately. auto result = state.inputs.back().Append(CreateInkStrokeInput( ink::StrokeInput::ToolType::kMouse, canonical_position, time_diff));
diff --git a/pdf/pdf_ink_module.h b/pdf/pdf_ink_module.h index 18dea04e..111a7ce 100644 --- a/pdf/pdf_ink_module.h +++ b/pdf/pdf_ink_module.h
@@ -100,7 +100,7 @@ // The current brush to use for drawing strokes. Never null. std::unique_ptr<PdfInkBrush> brush; - std::optional<base::Time> start_time; + std::optional<base::TimeTicks> start_time; // The 0-based page index which is currently being stroked. int page_index = -1; @@ -180,9 +180,9 @@ bool OnMouseMove(const blink::WebMouseEvent& event); // Return values have the same semantics as OnMouse()* above. - bool StartStroke(const gfx::PointF& position); - bool ContinueStroke(const gfx::PointF& position); - bool FinishStroke(const gfx::PointF& position); + bool StartStroke(const gfx::PointF& position, base::TimeTicks timestamp); + bool ContinueStroke(const gfx::PointF& position, base::TimeTicks timestamp); + bool FinishStroke(const gfx::PointF& position, base::TimeTicks timestamp); // Return values have the same semantics as OnMouse*() above. bool StartEraseStroke(const gfx::PointF& position); @@ -231,8 +231,10 @@ int page_index); // Helper to convert `position` to a canonical position and record it into - // `current_tool_state_`. Can only be called when drawing. - void RecordStrokePosition(const gfx::PointF& position); + // `current_tool_state_` for the indicated time. Can only be called when + // drawing. + void RecordStrokePosition(const gfx::PointF& position, + base::TimeTicks timestamp); void ApplyUndoRedoCommands(const PdfInkUndoRedoModel::Commands& commands); void ApplyUndoRedoCommandsHelper(std::set<size_t> ids, bool should_draw);
diff --git a/remoting/host/cloud_heartbeat_service_client.cc b/remoting/host/cloud_heartbeat_service_client.cc index a665af6..4f69719 100644 --- a/remoting/host/cloud_heartbeat_service_client.cc +++ b/remoting/host/cloud_heartbeat_service_client.cc
@@ -29,11 +29,10 @@ CloudHeartbeatServiceClient::CloudHeartbeatServiceClient( const std::string& directory_id, - const std::string& api_key, OAuthTokenGetter* oauth_token_getter, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) : directory_id_(directory_id), - client_(api_key, oauth_token_getter, url_loader_factory) {} + client_(/*api_key=*/"", oauth_token_getter, url_loader_factory) {} CloudHeartbeatServiceClient::~CloudHeartbeatServiceClient() = default;
diff --git a/remoting/host/cloud_heartbeat_service_client.h b/remoting/host/cloud_heartbeat_service_client.h index aa7069af..826bb09c 100644 --- a/remoting/host/cloud_heartbeat_service_client.h +++ b/remoting/host/cloud_heartbeat_service_client.h
@@ -33,7 +33,6 @@ public: CloudHeartbeatServiceClient( const std::string& directory_id, - const std::string& api_key, OAuthTokenGetter* oauth_token_getter, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
diff --git a/remoting/host/host_config.cc b/remoting/host/host_config.cc index ea297e10..33ca8da 100644 --- a/remoting/host/host_config.cc +++ b/remoting/host/host_config.cc
@@ -28,7 +28,6 @@ const char kCorpHostTypeHint[] = "corp"; const char kCloudHostTypeHint[] = "cloud"; const char kMe2MeHostTypeHint[] = "me2me"; -const char kCloudApiKeyPath[] = "cloud_api_key"; // Deprecated values. const char kDeprecatedHostOwnerEmailConfigPath[] = "host_owner_email";
diff --git a/remoting/host/host_config.h b/remoting/host/host_config.h index 5cee5cf..63e153b 100644 --- a/remoting/host/host_config.h +++ b/remoting/host/host_config.h
@@ -56,12 +56,6 @@ extern const char kCloudHostTypeHint[]; extern const char kMe2MeHostTypeHint[]; -// The API_KEY used for Cloud API service requests. Note that this is only used -// for billing and quota purposes and is does not provide authn/authz. Using an -// API_KEY for a different project than where the request originates from will -// result in the request being rejected. -extern const char kCloudApiKeyPath[]; - // Deprecated keys. These keys were used in pre-M120 host versions and are being // kept around for backward compatibility. We should consider rewriting the // config file at some point so we no longer need to support them.
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc index ecaa51a..09367b1 100644 --- a/remoting/host/remoting_me2me_host.cc +++ b/remoting/host/remoting_me2me_host.cc
@@ -437,7 +437,6 @@ scoped_refptr<RsaKeyPair> key_pair_; std::string oauth_refresh_token_; std::string service_account_email_; - std::string cloud_api_key_; base::Value::Dict config_; std::set<std::string> host_owner_emails_; @@ -1302,15 +1301,6 @@ return false; } - if (is_cloud_host_) { - const std::string* cloud_api_key = config.FindString(kCloudApiKeyPath); - if (!cloud_api_key || cloud_api_key->empty()) { - LOG(ERROR) << "Host config is missing the cloud_api_key."; - return false; - } - cloud_api_key_ = *cloud_api_key; - } - return true; } @@ -1717,8 +1707,7 @@ std::unique_ptr<HeartbeatServiceClient> service_client; if (is_cloud_host_) { service_client = std::make_unique<CloudHeartbeatServiceClient>( - host_id_, cloud_api_key_, oauth_token_getter_.get(), - context_->url_loader_factory()); + host_id_, oauth_token_getter_.get(), context_->url_loader_factory()); // TODO: joedow - Implement CorpHeartbeatServiceClient. // } else if (is_corp_host_) { // service_client = std::make_unique<CorpHeartbeatServiceClient>(
diff --git a/remoting/host/setup/cloud_host_starter.cc b/remoting/host/setup/cloud_host_starter.cc index 04e7a49..aa9332fe 100644 --- a/remoting/host/setup/cloud_host_starter.cc +++ b/remoting/host/setup/cloud_host_starter.cc
@@ -168,7 +168,6 @@ } else { config.Set(kHostTypeHintPath, kCloudHostTypeHint); config.Set(kRequireSessionAuthorizationPath, true); - config.Set(kCloudApiKeyPath, params().api_key); } }
diff --git a/services/accessibility/android/ax_tree_source_android_unittest.cc b/services/accessibility/android/ax_tree_source_android_unittest.cc index 1029cc5f..a682d0e64 100644 --- a/services/accessibility/android/ax_tree_source_android_unittest.cc +++ b/services/accessibility/android/ax_tree_source_android_unittest.cc
@@ -77,7 +77,8 @@ } void DispatchAccessibilityLocationChange( - const ui::AXLocationChanges& details) override {} + const ui::AXTreeID& tree_id, + const ui::AXLocationChange& details) override {} void DispatchTreeDestroyedEvent(ui::AXTreeID tree_id) override {}
diff --git a/services/device/generic_sensor/android/junit/src/org/chromium/device/sensors/PlatformSensorAndProviderTest.java b/services/device/generic_sensor/android/junit/src/org/chromium/device/sensors/PlatformSensorAndProviderTest.java index 31b3466..225c714b 100644 --- a/services/device/generic_sensor/android/junit/src/org/chromium/device/sensors/PlatformSensorAndProviderTest.java +++ b/services/device/generic_sensor/android/junit/src/org/chromium/device/sensors/PlatformSensorAndProviderTest.java
@@ -60,9 +60,8 @@ private static final long PLATFORM_SENSOR_TIMESTAMP = 314159265358979L; private static final double SECONDS_IN_NANOSECOND = 0.000000001d; - @SuppressWarnings("LockNotBeforeTry") - /** Class that overrides thread management callbacks for testing purposes. */ + @SuppressWarnings("LockNotBeforeTry") private static class TestPlatformSensorProvider extends PlatformSensorProvider { public TestPlatformSensorProvider(Context context) { super(context);
diff --git a/services/video_effects/BUILD.gn b/services/video_effects/BUILD.gn index a7f3339..9407ac8 100644 --- a/services/video_effects/BUILD.gn +++ b/services/video_effects/BUILD.gn
@@ -2,12 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//services/video_effects/args.gni") import("//third_party/mediapipe/features.gni") -assert(enable_video_effects, - "The Video Effects service requires enable_video_effects to be true.") - source_set("service") { public = [ "video_effects_processor_impl.h",
diff --git a/testing/buildbot/chromium.coverage.json b/testing/buildbot/chromium.coverage.json index 6b10f76..0db9fea 100644 --- a/testing/buildbot/chromium.coverage.json +++ b/testing/buildbot/chromium.coverage.json
@@ -11907,12 +11907,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -11961,12 +11961,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12015,12 +12015,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12069,12 +12069,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12123,12 +12123,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12177,12 +12177,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12231,12 +12231,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12285,12 +12285,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12339,12 +12339,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12393,12 +12393,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12447,12 +12447,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12501,12 +12501,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12555,12 +12555,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12609,12 +12609,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -12663,12 +12663,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -13335,12 +13335,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -13389,12 +13389,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -13443,12 +13443,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -13497,12 +13497,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -13551,12 +13551,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir", @@ -13605,12 +13605,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--output-disabled-tests", "--out-dir",
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 01a69c39..7303692 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -8908,12 +8908,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--extra-app-args=--disable-field-trial-config", "--out-dir", @@ -8962,12 +8962,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--extra-app-args=--disable-field-trial-config", "--out-dir", @@ -9016,12 +9016,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--extra-app-args=--disable-field-trial-config", "--out-dir", @@ -9070,12 +9070,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--extra-app-args=--disable-field-trial-config", "--out-dir", @@ -9330,12 +9330,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--extra-app-args=--disable-field-trial-config", "--out-dir", @@ -9384,12 +9384,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--extra-app-args=--disable-field-trial-config", "--out-dir", @@ -11299,12 +11299,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -11353,12 +11353,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -11407,12 +11407,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -11461,12 +11461,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -11515,12 +11515,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -11569,12 +11569,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -11623,12 +11623,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -11677,12 +11677,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -12143,12 +12143,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -12197,12 +12197,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -12251,12 +12251,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -12305,12 +12305,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -17473,12 +17473,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -17527,12 +17527,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -17581,12 +17581,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -17635,12 +17635,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -17689,12 +17689,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -17743,12 +17743,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -17797,12 +17797,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -17851,12 +17851,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -18317,12 +18317,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -18371,12 +18371,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -18425,12 +18425,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -18479,12 +18479,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--args-json", "{\"test_args\": [\"--run-with-custom-webkit\"]}", @@ -22917,12 +22917,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -22971,12 +22971,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -23025,12 +23025,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -23079,12 +23079,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -23339,12 +23339,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -23393,12 +23393,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -26553,12 +26553,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -26605,12 +26605,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -26657,12 +26657,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -26709,12 +26709,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -26959,12 +26959,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -27011,12 +27011,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "18.1", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -30022,12 +30022,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad (10th generation)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30076,12 +30076,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30130,12 +30130,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30184,12 +30184,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad (10th generation)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30238,12 +30238,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30292,12 +30292,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30346,12 +30346,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30812,12 +30812,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad (10th generation)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30866,12 +30866,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30920,12 +30920,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -30974,12 +30974,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -34434,12 +34434,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -34488,12 +34488,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -34542,12 +34542,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -34596,12 +34596,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -34650,12 +34650,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -34704,12 +34704,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -35067,12 +35067,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -35121,12 +35121,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -35175,12 +35175,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only",
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json index c3562ec..d27027d 100644 --- a/testing/buildbot/chromium.mac.json +++ b/testing/buildbot/chromium.mac.json
@@ -6357,12 +6357,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -6410,12 +6410,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10010,12 +10010,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10063,12 +10063,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10116,12 +10116,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10169,12 +10169,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10222,12 +10222,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10275,12 +10275,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10328,12 +10328,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10381,12 +10381,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10434,12 +10434,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10487,12 +10487,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10944,12 +10944,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -10997,12 +10997,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -11050,12 +11050,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 14", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -11103,12 +11103,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPhone 15", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--out-dir", "${ISOLATED_OUTDIR}", @@ -15611,12 +15611,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -15665,12 +15665,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air (5th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -15719,12 +15719,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Air 11-inch (M2)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -15773,12 +15773,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -15827,12 +15827,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -15881,12 +15881,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -16244,12 +16244,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "16.4", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -16298,12 +16298,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro (12.9-inch) (6th generation)", "--version", "17.5", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only", @@ -16352,12 +16352,12 @@ }, { "args": [ + "--clones", + "2", "--platform", "iPad Pro 13-inch (M4)", "--version", "18.0", - "--clones", - "2", "--xcodebuild-sim-runner", "--record-video", "failed_only",
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index aeb7082b..3d5acc91 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -525,7 +525,7 @@ "hard_timeout": 21600, "io_timeout": 21600, "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 40 + "shards": 23 }, "test": "performance_webview_test_suite", "trigger_script": {
diff --git a/testing/buildbot/chromium.perf.pinpoint.json b/testing/buildbot/chromium.perf.pinpoint.json index ae17e29..37c5c86 100644 --- a/testing/buildbot/chromium.perf.pinpoint.json +++ b/testing/buildbot/chromium.perf.pinpoint.json
@@ -453,7 +453,7 @@ "hard_timeout": 21600, "io_timeout": 21600, "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 40 + "shards": 23 }, "test": "performance_webview_test_suite", "trigger_script": {
diff --git a/testing/buildbot/generate_buildbot_json.py b/testing/buildbot/generate_buildbot_json.py index 71eedee..feeb0d17 100755 --- a/testing/buildbot/generate_buildbot_json.py +++ b/testing/buildbot/generate_buildbot_json.py
@@ -647,6 +647,17 @@ self.ensure_valid_mixin_list(test_mixins, f'test {test_name} mixins') test = self.apply_mixins(test, test_mixins, mixins_to_ignore, builder) + # Apply any variant details + variant = test.pop('*variant*', None) + if variant is not None: + test = self.apply_mixin(variant, test) + variant_mixins = test.pop('*variant_mixins*', []) + self.ensure_valid_mixin_list( + variant_mixins, + (f'variant mixins for test {test_name}' + f' with variant with identifier{test["variant_id"]}')) + test = self.apply_mixins(test, variant_mixins, mixins_to_ignore, builder) + # Add any swarming or args from the builder self.dictionary_merge(test['swarming'], builder.get('swarming', {})) if supports_args: @@ -1161,10 +1172,7 @@ variant_skylab = variant.pop('skylab', {}) for test_name, test_config in basic_test_definition.items(): - new_test = self.apply_mixin(variant, test_config) - - new_test['mixins'] = (test_config.get('mixins', []) + variant_mixins + - mixins) + new_test = copy.copy(test_config) # The identifier is used to make the name of the test unique. # Generators in the recipe uniquely identify a test by it's name, so we @@ -1176,6 +1184,15 @@ # is mainly used in generate_gpu_telemetry_test(). new_test['variant_id'] = identifier + # Save the variant details and mixins to be applied in + # apply_common_transformations to match the order that starlark will + # apply things + new_test['*variant*'] = variant + new_test['*variant_mixins*'] = variant_mixins + mixins + + # TODO: crbug.com/40258588 - When skylab support is implemented in + # starlark, these fields should be incorporated into mixins and handled + # consistently with other fields for k, v in variant_skylab.items(): # cros_chrome_version is the ash chrome version in the cros img in the # variant of cros_board. We don't want to include it in the final json
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index aed3d69..b6453a6e6 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -374,6 +374,7 @@ "AndroidBrowserControlsInViz" ], "disable_features": [ + "AndroidBcivWithSimpleScheduler", "AndroidBcivWithSuppression", "AndroidBcivZeroBrowserFrames" ] @@ -3947,6 +3948,43 @@ ] } ], + "CaptureModeEducation": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros" + ], + "experiments": [ + { + "name": "EnabledShortcutNudge_20231214", + "params": { + "CaptureModeEducationParam": "ShortcutNudge" + }, + "enable_features": [ + "CaptureModeEducation" + ] + }, + { + "name": "EnabledShortcutTutorial_20231214", + "params": { + "CaptureModeEducationParam": "ShortcutTutorial" + }, + "enable_features": [ + "CaptureModeEducation" + ] + }, + { + "name": "EnabledQuickSettingsNudge_20231214", + "params": { + "CaptureModeEducationParam": "QuickSettingsNudge" + }, + "enable_features": [ + "CaptureModeEducation" + ] + } + ] + } + ], "CastCertificateRevocation": [ { "platforms": [ @@ -10067,6 +10105,23 @@ ] } ], + "FetchListFamilyMembersWithCapability": [ + { + "platforms": [ + "android", + "chromeos", + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FetchListFamilyMembersWithCapability" + ] + } + ] + } + ], "FindRegistrationImprovements": [ { "platforms": [ @@ -19172,27 +19227,6 @@ ] } ], - "ReadAnythingReadAloudWordHighlighting": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "ReadAnythingReadAloudAutomaticWordHighlighting" - ] - }, - { - "name": "Disabled", - "disable_features": [ - "ReadAnythingReadAloudAutomaticWordHighlighting" - ] - } - ] - } - ], "ReclaimOldPrepaintTiles": [ { "platforms": [
diff --git a/third_party/angle b/third_party/angle index 0040cda..cc44090 160000 --- a/third_party/angle +++ b/third_party/angle
@@ -1 +1 @@ -Subproject commit 0040cda1170f9d481135a95d2fbff616120f404b +Subproject commit cc44090d3483efdbae0dacf9c3fdb6c5d5a950fa
diff --git a/third_party/blink/common/messaging/string_message_codec.cc b/third_party/blink/common/messaging/string_message_codec.cc index 2d2c490..440a342 100644 --- a/third_party/blink/common/messaging/string_message_codec.cc +++ b/third_party/blink/common/messaging/string_message_codec.cc
@@ -2,11 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifdef UNSAFE_BUFFERS_BUILD -// TODO(crbug.com/351564777): Remove this and convert code to safer constructs. -#pragma allow_unsafe_buffers -#endif - #include "third_party/blink/public/common/messaging/string_message_codec.h" #include <memory> @@ -48,15 +43,18 @@ std::optional<base::span<const uint8_t>> GetAsSpanIfPossible() const override { - return base::make_span(data_).subspan(position_, length_); + return AsSpan(); } void CopyInto(base::span<uint8_t> dest) const override { - CHECK_GE(dest.size(), length_); - memcpy(dest.data(), data_.data() + position_, length_); + dest.copy_from(AsSpan()); } private: + base::span<const uint8_t> AsSpan() const { + return base::span(data_).subspan(position_, length_); + } + std::vector<uint8_t> data_; size_t position_; size_t length_; @@ -87,8 +85,7 @@ } void CopyInto(base::span<uint8_t> dest) const override { - CHECK(dest.size() >= data_.size()); - memcpy(dest.data(), data_.data(), data_.size()); + dest.copy_from(base::make_span(data_)); } private: @@ -134,10 +131,8 @@ } } -void WriteBytes(const char* bytes, - size_t num_bytes, - std::vector<uint8_t>* buffer) { - buffer->insert(buffer->end(), bytes, bytes + num_bytes); +void WriteBytes(base::span<const uint8_t> bytes, std::vector<uint8_t>* buffer) { + buffer->insert(buffer->end(), bytes.begin(), bytes.end()); } bool ReadUint8(base::BufferIterator<const uint8_t>& iter, uint8_t* value) { @@ -199,15 +194,17 @@ std::string data_latin1(str.cbegin(), str.cend()); WriteUint8(kOneByteStringTag, &buffer); WriteUint32(data_latin1.size(), &buffer); - WriteBytes(data_latin1.c_str(), data_latin1.size(), &buffer); + WriteBytes(base::as_byte_span(data_latin1), &buffer); } else { - size_t num_bytes = str.size() * sizeof(char16_t); - if ((buffer.size() + 1 + BytesNeededForUint32(num_bytes)) & 1) + auto str_as_bytes = base::as_byte_span(str); + if ((buffer.size() + 1 + + BytesNeededForUint32(str_as_bytes.size())) & + 1) { WriteUint8(kPaddingTag, &buffer); + } WriteUint8(kTwoByteStringTag, &buffer); - WriteUint32(num_bytes, &buffer); - WriteBytes(reinterpret_cast<const char*>(str.data()), num_bytes, - &buffer); + WriteUint32(str_as_bytes.size(), &buffer); + WriteBytes(str_as_bytes, &buffer); } }, [&](const std::unique_ptr<WebMessageArrayBufferPayload>&
diff --git a/third_party/blink/public/mojom/render_accessibility.mojom b/third_party/blink/public/mojom/render_accessibility.mojom index dbbbb99..e1a4495 100644 --- a/third_party/blink/public/mojom/render_accessibility.mojom +++ b/third_party/blink/public/mojom/render_accessibility.mojom
@@ -12,17 +12,10 @@ import "ui/accessibility/mojom/ax_tree_id.mojom"; import "ui/accessibility/mojom/ax_tree_update.mojom"; import "ui/accessibility/mojom/ax_updates_and_events.mojom"; +import "ui/accessibility/mojom/ax_location_and_scroll_updates.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; import "third_party/blink/public/mojom/tokens/tokens.mojom"; -struct LocationChanges { - // ID of the object whose location is changing. - int32 id; - - // The object's new location info. - ax.mojom.AXRelativeBounds new_location; -}; - struct HitTestResponse { // The frame token of the frame that got hit. If this is not equal to the // frame that the original hit test was called on, the client should do @@ -59,6 +52,7 @@ // TODO(crbug.com/1088484) tracks work to improve the payload size. [UnlimitedSize] HandleAXEvents(ax.mojom.AXUpdatesAndEvents events_and_updates, + ax.mojom.AXLocationAndScrollUpdates location_and_scroll_updates, uint32 reset_token) => (); // Sent to update the browser of the location of accessibility objects. @@ -70,7 +64,7 @@ // most recent Reset() or SetMode(), so that the browser can filter out // obsolete messages. [UnlimitedSize] - HandleAXLocationChanges(array<LocationChanges> changes, uint32 reset_token); + HandleAXLocationChanges(ax.mojom.AXLocationAndScrollUpdates changes, uint32 reset_token); }; // Interface for accessibility messages sent from RenderFrameHostImpl in the
diff --git a/third_party/blink/public/web/DEPS b/third_party/blink/public/web/DEPS index a7597e20..07ac03d 100644 --- a/third_party/blink/public/web/DEPS +++ b/third_party/blink/public/web/DEPS
@@ -77,6 +77,7 @@ "+ui/accessibility/ax_tree_data.h", "+ui/accessibility/ax_tree_id.h", "+ui/accessibility/ax_tree_source.h", + "+ui/accessibility/ax_location_and_scroll_updates.h", "+ui/base/ime/mojom/ime_types.mojom-shared.h", "+ui/base/ime/mojom/virtual_keyboard_types.mojom-shared.h",
diff --git a/third_party/blink/public/web/web_frame_serializer.h b/third_party/blink/public/web/web_frame_serializer.h index 7cc24e45..7f19457 100644 --- a/third_party/blink/public/web/web_frame_serializer.h +++ b/third_party/blink/public/web/web_frame_serializer.h
@@ -31,6 +31,7 @@ #ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_FRAME_SERIALIZER_H_ #define THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_FRAME_SERIALIZER_H_ +#include "base/functional/callback.h" #include "third_party/blink/public/platform/web_common.h" #include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/public/platform/web_thread_safe_data.h" @@ -70,15 +71,18 @@ WebLocalFrame*, MHTMLPartsGenerationDelegate*); - // Generates and returns MHTML parts for the given frame and the - // savable resources underneath. + // Generates and MHTML parts for the given frame and the savable resources + // underneath. Calls `callback` with the result which should be appended to + // the MHTML file. // - // Same |boundary| needs to used for all generateMHTMLHeader and + // The same `boundary` needs to be used for all generateMHTMLHeader and // generateMHTMLParts and generateMHTMLFooter calls that belong to the same // MHTML document (see also rfc1341, section 7.2.1, "boundary" description). - static WebThreadSafeData GenerateMHTMLParts(const WebString& boundary, - WebLocalFrame*, - MHTMLPartsGenerationDelegate*); + static void GenerateMHTMLParts( + const WebString& boundary, + WebLocalFrame*, + MHTMLPartsGenerationDelegate*, + base::OnceCallback<void(WebThreadSafeData)> callback); // IMPORTANT: // The API below is an older implementation of frame serialization that
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h index a8e13d16..26c92021 100644 --- a/third_party/blink/public/web/web_local_frame_client.h +++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -96,6 +96,7 @@ #include "third_party/blink/public/web/web_navigation_type.h" #include "ui/accessibility/ax_enums.mojom-shared.h" #include "ui/accessibility/ax_event.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_tree_update.h" #include "ui/events/types/scroll_types.h" #include "v8/include/v8.h" @@ -709,6 +710,7 @@ virtual bool SendAccessibilitySerialization( std::vector<ui::AXTreeUpdate> updates, std::vector<ui::AXEvent> events, + ui::AXLocationAndScrollUpdates location_and_scroll_updates, bool had_load_complete_messages) { return false; }
diff --git a/third_party/blink/renderer/bindings/core/v8/idl_types.h b/third_party/blink/renderer/bindings/core/v8/idl_types.h index b8b2199e..97012a2 100644 --- a/third_party/blink/renderer/bindings/core/v8/idl_types.h +++ b/third_party/blink/renderer/bindings/core/v8/idl_types.h
@@ -20,7 +20,8 @@ class BigInt; class EventListener; -class ScriptPromiseUntyped; +template <typename T> +class ScriptPromise; class ScriptValue; struct ToV8UndefinedGenerator; @@ -202,7 +203,8 @@ struct IDLObject final : public IDLBaseHelper<ScriptValue> {}; // Promise types -struct IDLPromise final : public IDLBaseHelper<ScriptPromiseUntyped> {}; +template <typename T> +struct IDLPromise final : public IDLBaseHelper<ScriptPromise<T>> {}; // Sequence types template <typename T>
diff --git a/third_party/blink/renderer/bindings/core/v8/idl_types_test.cc b/third_party/blink/renderer/bindings/core/v8/idl_types_test.cc index 1445e78..f906bc9 100644 --- a/third_party/blink/renderer/bindings/core/v8/idl_types_test.cc +++ b/third_party/blink/renderer/bindings/core/v8/idl_types_test.cc
@@ -105,10 +105,11 @@ static_assert(std::is_same<IDLUnrestrictedFloat::ImplType, float>::value, "IDLUnrestrictedFloat's ImplType is float"); -static_assert(std::is_base_of<IDLBase, IDLPromise>::value, +static_assert(std::is_base_of<IDLBase, IDLPromise<IDLAny>>::value, "IDLPromise inherits from IDLBase"); -static_assert(std::is_same<IDLPromise::ImplType, ScriptPromiseUntyped>::value, - "IDLPromise's ImplType is ScriptPromiseUntyped"); +static_assert( + std::is_same<IDLPromise<IDLAny>::ImplType, ScriptPromise<IDLAny>>::value, + "IDLPromise<T>'s ImplType is ScriptPromiseTyped<T>"); static_assert(std::is_base_of<IDLBase, IDLSequence<IDLByte>>::value, "IDLSequence inherits from IDLBase");
diff --git a/third_party/blink/renderer/bindings/core/v8/is_return_type_compatible.h b/third_party/blink/renderer/bindings/core/v8/is_return_type_compatible.h index 4e18f8a..b8843d8 100644 --- a/third_party/blink/renderer/bindings/core/v8/is_return_type_compatible.h +++ b/third_party/blink/renderer/bindings/core/v8/is_return_type_compatible.h
@@ -146,11 +146,12 @@ inline constexpr bool IsReturnTypeCompatible<IDLObject, v8::Local<v8::Value>> = true; -// TODO(caseq): take care of this case, promises should be returned as -// IDLPromise<>. -template <> -inline constexpr bool - IsReturnTypeCompatible<blink::IDLPromise, v8::Local<v8::Promise>> = true; +// TODO(caseq): take care of this case, all promises should be returned as +// ScriptPromise<PromiseType> and IDLTypeImplementedAsV8Promise extended +// attribute should be removed. +template <typename PromiseType> +inline constexpr bool IsReturnTypeCompatible<blink::IDLPromise<PromiseType>, + v8::Local<v8::Promise>> = true; // Any IDL strings are compatible to any blink strings. template <typename IDLStringType>
diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h index 896d0d2..0ebb403a 100644 --- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h +++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
@@ -43,12 +43,16 @@ class ScriptWrappable; struct WrapperTypeInfo; +struct ToV8UndefinedGenerator { + DISALLOW_NEW(); + using ImplType = ToV8UndefinedGenerator; +}; + namespace bindings { class EnumerationBase; class InputDictionaryBase; class UnionBase; - CORE_EXPORT void NativeValueTraitsInterfaceNotOfType( const WrapperTypeInfo* wrapper_type_info, ExceptionState& exception_state); @@ -120,6 +124,17 @@ } }; +// undefined +template <> +struct CORE_EXPORT NativeValueTraits<IDLUndefined> + : public NativeValueTraitsBase<IDLUndefined> { + static ToV8UndefinedGenerator NativeValue(v8::Isolate*, + v8::Local<v8::Value>, + ExceptionState&) { + return ToV8UndefinedGenerator(); + } +}; + // boolean template <> struct CORE_EXPORT NativeValueTraits<IDLBoolean> @@ -902,19 +917,32 @@ }; // Promise types -template <> -struct CORE_EXPORT NativeValueTraits<IDLPromise> - : public NativeValueTraitsBase<IDLPromise> { - static ScriptPromiseUntyped NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { - return ScriptPromise<IDLAny>::FromV8Value(isolate, value); +template <typename T> +struct NativeValueTraits<IDLPromise<T>> + : public NativeValueTraitsBase<IDLPromise<T>> { + static ScriptPromise<T> NativeValue(v8::Isolate* isolate, + v8::Local<v8::Value> value, + ExceptionState&) { + if (value.IsEmpty()) { + return ScriptPromise<T>(); + } + if (value->IsPromise()) { + return ScriptPromise<T>::FromV8Promise(isolate, value.As<v8::Promise>()); + } + ScriptState* script_state = ScriptState::ForCurrentRealm(isolate); + v8::TryCatch try_catch(isolate); + auto&& blink_value = NativeValueTraits<T>::NativeValue( + isolate, value, PassThroughException(isolate)); + if (try_catch.HasCaught()) { + return ScriptPromise<T>::Reject(script_state, try_catch.Exception()); + } + return ToResolvedPromise<T>(script_state, std::move(blink_value)); } }; // IDLNullable<IDLPromise> must not be used. -template <> -struct NativeValueTraits<IDLNullable<IDLPromise>>; +template <typename T> +struct NativeValueTraits<IDLNullable<IDLPromise<T>>>; // Sequence types
diff --git a/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc b/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc index 3f95c900..71866e5f 100644 --- a/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc +++ b/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc
@@ -79,8 +79,8 @@ if (target && sanitize_script_errors_ == SanitizeScriptErrors::kDoNotSanitize) { PromiseRejectionEventInit* init = PromiseRejectionEventInit::Create(); - init->setPromise( - ScriptPromiseUntyped(script_state_->GetIsolate(), promise)); + init->setPromise(ScriptPromise<IDLAny>::FromV8Promise( + script_state_->GetIsolate(), promise)); init->setReason(ScriptValue(script_state_->GetIsolate(), reason)); init->setCancelable(true); PromiseRejectionEvent* event = PromiseRejectionEvent::Create( @@ -126,8 +126,8 @@ if (target && sanitize_script_errors_ == SanitizeScriptErrors::kDoNotSanitize) { PromiseRejectionEventInit* init = PromiseRejectionEventInit::Create(); - init->setPromise( - ScriptPromiseUntyped(script_state_->GetIsolate(), promise)); + init->setPromise(ScriptPromise<IDLAny>::FromV8Promise( + script_state_->GetIsolate(), promise)); init->setReason(ScriptValue(script_state_->GetIsolate(), reason)); PromiseRejectionEvent* event = PromiseRejectionEvent::Create( script_state_, event_type_names::kRejectionhandled, init);
diff --git a/third_party/blink/renderer/bindings/core/v8/script_promise.h b/third_party/blink/renderer/bindings/core/v8/script_promise.h index 0c3252e..5a60e96 100644 --- a/third_party/blink/renderer/bindings/core/v8/script_promise.h +++ b/third_party/blink/renderer/bindings/core/v8/script_promise.h
@@ -132,25 +132,11 @@ ScriptPromise() = default; template <typename T = IDLResolvedType> - requires std::is_same_v<T, IDLAny> static ScriptPromise<T> FromV8Promise(v8::Isolate* isolate, v8::Local<v8::Promise> promise) { return ScriptPromise<T>(isolate, promise); } - template <typename T = IDLResolvedType> - requires std::is_same_v<T, IDLAny> - static ScriptPromise<T> FromV8Value(v8::Isolate* isolate, - v8::Local<v8::Value> value) { - if (value.IsEmpty()) { - return ScriptPromise<T>(); - } - if (value->IsPromise()) { - return FromV8Promise(isolate, value.As<v8::Promise>()); - } - return ToResolvedPromise<T>(ScriptState::ForCurrentRealm(isolate), value); - } - static ScriptPromise<IDLResolvedType> RejectWithDOMException( ScriptState* script_state, DOMException* exception) {
diff --git a/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h b/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h index d6f361a1..852a227 100644 --- a/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h +++ b/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h
@@ -49,13 +49,6 @@ template <typename T, typename SFINAEHelper = void> struct ToV8Traits; -// Used only for allowing a ScriptPromiseProperty to specify that it will -// resolve/reject with v8::Undefined. -struct ToV8UndefinedGenerator { - DISALLOW_NEW(); - using ImplType = ToV8UndefinedGenerator; -}; - // undefined template <> struct ToV8Traits<IDLUndefined> { @@ -88,6 +81,12 @@ return v8::Undefined(script_state->GetIsolate()); return value; } + + [[nodiscard]] static v8::Local<v8::Value> ToV8( + ScriptState* script_state, + const bindings::NativeValueTraitsAnyAdapter& adapter) { + return adapter; + } }; // Boolean @@ -243,11 +242,11 @@ }; // Promise -template <> -struct ToV8Traits<IDLPromise> { +template <typename T> +struct ToV8Traits<IDLPromise<T>> { [[nodiscard]] static v8::Local<v8::Value> ToV8( ScriptState* script_state, - const ScriptPromiseUntyped& script_promise) { + const ScriptPromise<T>& script_promise) { DCHECK(!script_promise.IsEmpty()); return script_promise.V8Value(); }
diff --git a/third_party/blink/renderer/bindings/core/v8/to_v8_traits_test.cc b/third_party/blink/renderer/bindings/core/v8/to_v8_traits_test.cc index bd7acb9..20f01be 100644 --- a/third_party/blink/renderer/bindings/core/v8/to_v8_traits_test.cc +++ b/third_party/blink/renderer/bindings/core/v8/to_v8_traits_test.cc
@@ -282,7 +282,8 @@ test::TaskEnvironment task_environment; const V8TestingScope scope; auto promise = ToResolvedUndefinedPromise(scope.GetScriptState()); - TEST_TOV8_TRAITS(scope, IDLPromise, "[object Promise]", promise); + TEST_TOV8_TRAITS(scope, IDLPromise<IDLUndefined>, "[object Promise]", + promise); } TEST(ToV8TraitsTest, NotShared) {
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py b/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py index 775012a..04c18be 100644 --- a/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py +++ b/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py
@@ -363,7 +363,8 @@ if "IDLTypeImplementedAsV8Promise" in real_type.extended_attributes: type_name = "v8::Local<v8::Promise>" else: - type_name = "ScriptPromiseUntyped" + type_name = "ScriptPromise<{}>".format( + native_value_tag(real_type.result_type)) return TypeInfo(type_name, ref_fmt="{}&", const_ref_fmt="const {}&", @@ -522,7 +523,8 @@ _native_value_tag_impl(real_type.value_type)) if real_type.is_promise: - return "IDLPromise" + return "IDLPromise<{}>".format( + _native_value_tag_impl(real_type.result_type)) if real_type.is_union: return blink_class_name(real_type.union_definition_object)
diff --git a/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py b/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py index 1669448..3f723de 100644 --- a/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py +++ b/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py
@@ -991,8 +991,6 @@ return idl_type elif isinstance(idl_type, _ArrayLikeType): idl_type = idl_type.element_type - elif isinstance(idl_type, PromiseType): - idl_type = idl_type.result_type elif isinstance(idl_type, NullableType): idl_type = idl_type.inner_type else: @@ -1025,6 +1023,11 @@ visit_type(member_type, target_set) elif isinstance(idl_type, RecordType): visit_type(idl_type.value_type, target_set) + elif isinstance(idl_type, PromiseType): + visit_type(idl_type.result_type, target_set) + # Because of how we convert Promise<> input parameters, we need + # to be able to covert the result type back to V8. + visit_type(idl_type.result_type, outputs) else: assert isinstance(idl_type, SimpleType), type(idl_type)
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc index 9adda13..57f2f7ed 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc
@@ -1624,9 +1624,13 @@ // fast-path parser fails, the full parser will adjust the mode // appropriately. SetCompatibilityMode(kQuirksMode); + // Set the state so that the attribute cache is enabled for fragments. + // TODO(sesse): Should we do this also for the non-fastpath parser? + SetParsingState(kParsing); const bool success = TryParsingHTMLFragment(content, *this, *body, *body, kAllowScriptingContent, parser_behavior, nullptr); + SetParsingState(kFinishedParsing); if (success) { // When DCHECK is enabled, use SetContent() and verify fast-path // content matches. This effectively means the results of the fast-path @@ -7729,9 +7733,9 @@ } void Document::MaybeRecordShapeTextElapsedTime(base::TimeDelta elapsed_time) { - data_->accumulated_shape_text_elapsed_time_ += elapsed_time; - data_->max_shape_text_elapsed_time_ = - std::max(data_->max_shape_text_elapsed_time_, elapsed_time); + data_->accumulated_shape_text_elapsed_time_ += elapsed_time; + data_->max_shape_text_elapsed_time_ = + std::max(data_->max_shape_text_elapsed_time_, elapsed_time); } void Document::MaybeRecordSvgImageProcessingTime(
diff --git a/third_party/blink/renderer/core/exported/DEPS b/third_party/blink/renderer/core/exported/DEPS index 121d977..d95d845 100644 --- a/third_party/blink/renderer/core/exported/DEPS +++ b/third_party/blink/renderer/core/exported/DEPS
@@ -7,6 +7,9 @@ ] specific_include_rules = { + "web_frame_serializer_test_helper.cc": [ + "+base/run_loop.h", + ], "web_view_impl\.cc": [ "+base/command_line.h", "+components/viz/common/features.h",
diff --git a/third_party/blink/renderer/core/exported/web_frame_serializer.cc b/third_party/blink/renderer/core/exported/web_frame_serializer.cc index 43db55ef..1a999df 100644 --- a/third_party/blink/renderer/core/exported/web_frame_serializer.cc +++ b/third_party/blink/renderer/core/exported/web_frame_serializer.cc
@@ -48,11 +48,55 @@ #include "third_party/blink/renderer/platform/mhtml/serialized_resource.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" #include "third_party/blink/renderer/platform/wtf/deque.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/text/string_concatenate.h" #include "third_party/blink/renderer/platform/wtf/vector.h" namespace blink { +namespace { + +void ContinueGenerateMHTMLParts( + const WebString& boundary, + const blink::LocalFrameToken& frame_token, + MHTMLArchive::EncodingPolicy encoding_policy, + base::OnceCallback<void(WebThreadSafeData)> callback, + Deque<SerializedResource> resources) { + WebFrame* web_frame = WebLocalFrame::FromFrameToken(frame_token); + LocalFrame* frame = + web_frame ? To<WebLocalFrameImpl>(web_frame)->GetFrame() : nullptr; + + TRACE_EVENT_END1("page-serialization", + "WebFrameSerializer::generateMHTMLParts serializing", + "resource count", static_cast<uint64_t>(resources.size())); + + // There was an error serializing the frame (e.g. of an image resource). + if (resources.empty() || !frame) { + std::move(callback).Run(WebThreadSafeData()); + return; + } + + // Encode serialized resources as MHTML. + scoped_refptr<RawData> output = RawData::Create(); + { + // Frame is the 1st resource (see FrameSerializer::serializeFrame doc + // comment). Frames get a Content-ID header. + MHTMLArchive::GenerateMHTMLPart( + boundary, FrameSerializer::GetContentID(frame), encoding_policy, + resources.TakeFirst(), *output->MutableData()); + while (!resources.empty()) { + TRACE_EVENT0("page-serialization", + "WebFrameSerializer::generateMHTMLParts encoding"); + MHTMLArchive::GenerateMHTMLPart(boundary, String(), encoding_policy, + resources.TakeFirst(), + *output->MutableData()); + } + } + std::move(callback).Run(WebThreadSafeData(output)); +} + +} // namespace + WebThreadSafeData WebFrameSerializer::GenerateMHTMLHeader( const WebString& boundary, WebLocalFrame* frame, @@ -72,10 +116,11 @@ return WebThreadSafeData(buffer); } -WebThreadSafeData WebFrameSerializer::GenerateMHTMLParts( +void WebFrameSerializer::GenerateMHTMLParts( const WebString& boundary, WebLocalFrame* web_frame, - MHTMLPartsGenerationDelegate* web_delegate) { + MHTMLPartsGenerationDelegate* web_delegate, + base::OnceCallback<void(WebThreadSafeData)> callback) { TRACE_EVENT0("page-serialization", "WebFrameSerializer::generateMHTMLParts"); DCHECK(web_frame); DCHECK(web_delegate); @@ -91,33 +136,11 @@ TRACE_EVENT_BEGIN0("page-serialization", "WebFrameSerializer::generateMHTMLParts serializing"); Deque<SerializedResource> resources; - FrameSerializer::SerializeFrame(resources, *web_delegate, *frame); - - TRACE_EVENT_END1("page-serialization", - "WebFrameSerializer::generateMHTMLParts serializing", - "resource count", static_cast<uint64_t>(resources.size())); - - // There was an error serializing the frame (e.g. of an image resource). - if (resources.empty()) - return WebThreadSafeData(); - - // Encode serialized resources as MHTML. - scoped_refptr<RawData> output = RawData::Create(); - { - // Frame is the 1st resource (see FrameSerializer::serializeFrame doc - // comment). Frames get a Content-ID header. - MHTMLArchive::GenerateMHTMLPart( - boundary, FrameSerializer::GetContentID(frame), encoding_policy, - resources.TakeFirst(), *output->MutableData()); - while (!resources.empty()) { - TRACE_EVENT0("page-serialization", - "WebFrameSerializer::generateMHTMLParts encoding"); - MHTMLArchive::GenerateMHTMLPart(boundary, String(), encoding_policy, - resources.TakeFirst(), - *output->MutableData()); - } - } - return WebThreadSafeData(output); + FrameSerializer::SerializeFrame( + *web_delegate, *frame, + WTF::BindOnce(&ContinueGenerateMHTMLParts, boundary, + web_frame->GetLocalFrameToken(), encoding_policy, + std::move(callback))); } bool WebFrameSerializer::Serialize(
diff --git a/third_party/blink/renderer/core/exported/web_frame_serializer_test_helper.cc b/third_party/blink/renderer/core/exported/web_frame_serializer_test_helper.cc index 4acd586c..6bbc4b13 100644 --- a/third_party/blink/renderer/core/exported/web_frame_serializer_test_helper.cc +++ b/third_party/blink/renderer/core/exported/web_frame_serializer_test_helper.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/core/exported/web_frame_serializer_test_helper.h" +#include "base/run_loop.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/web_string.h" @@ -12,6 +13,7 @@ #include "third_party/blink/renderer/core/frame/web_local_frame_impl.h" #include "third_party/blink/renderer/platform/mhtml/mhtml_archive.h" #include "third_party/blink/renderer/platform/mhtml/mhtml_parser.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/shared_buffer.h" #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" @@ -55,9 +57,17 @@ static_cast<unsigned>(header_result.size())); } - WebThreadSafeData body_result = - WebFrameSerializer::GenerateMHTMLParts(boundary, frame, &mhtml_delegate); - mhtml.Append(body_result.data(), static_cast<unsigned>(body_result.size())); + base::RunLoop run_loop; + WebFrameSerializer::GenerateMHTMLParts( + boundary, frame, &mhtml_delegate, + WTF::BindOnce( + [](StringBuilder* mhtml, base::OnceClosure quit, + WebThreadSafeData data) { + mhtml->Append(data.data(), static_cast<unsigned>(data.size())); + std::move(quit).Run(); + }, + WTF::Unretained(&mhtml), run_loop.QuitClosure())); + run_loop.Run(); if (!only_body_parts) { scoped_refptr<RawData> footer_data = RawData::Create();
diff --git a/third_party/blink/renderer/core/frame/frame_serializer.cc b/third_party/blink/renderer/core/frame/frame_serializer.cc index 0820098..8fc06eb 100644 --- a/third_party/blink/renderer/core/frame/frame_serializer.cc +++ b/third_party/blink/renderer/core/frame/frame_serializer.cc
@@ -123,7 +123,7 @@ } void AppendLinkElement(StringBuilder& markup, const KURL& url) { - markup.Append(R"html(<link rel="stylesheet" type="text/css" href=")html"); + markup.Append(R"(<link rel="stylesheet" type="text/css" href=")"); markup.Append(url.GetString()); markup.Append("\" />"); } @@ -135,9 +135,8 @@ class MultiResourcePacker { public: MultiResourcePacker( - Deque<SerializedResource>* resources, WebFrameSerializer::MHTMLPartsGenerationDelegate* web_delegate) - : resources_(resources), web_delegate_(web_delegate) {} + : web_delegate_(web_delegate) {} bool HasResource(const KURL& url) const { return resource_urls_.Contains(url); @@ -148,7 +147,7 @@ const KURL& url) { // The main resource must be first. // We do not call `ShouldAddURL()` for the main resource. - resources_->push_front(SerializedResource(url, mime_type, std::move(data))); + resources_.push_front(SerializedResource(url, mime_type, std::move(data))); } void AddToResources(const String& mime_type, @@ -160,7 +159,7 @@ } CHECK(resource_urls_.Contains(url)) << "ShouldAddURL() not called before AddToResources"; - resources_->push_back(SerializedResource(url, mime_type, std::move(data))); + resources_.push_back(SerializedResource(url, mime_type, std::move(data))); } void AddImageToResources(ImageResourceContent* image, const KURL& url) { @@ -204,11 +203,15 @@ font.Url()); } + Deque<SerializedResource> FinishAndTakeResources() && { + return std::move(resources_); + } + private: // This hashset is only used for de-duplicating resources to be serialized. HashSet<KURL> resource_urls_; - Deque<SerializedResource>* resources_; + Deque<SerializedResource> resources_; WebFrameSerializer::MHTMLPartsGenerationDelegate* web_delegate_; }; @@ -954,17 +957,19 @@ // static void FrameSerializer::SerializeFrame( - Deque<SerializedResource>& resources, WebFrameSerializer::MHTMLPartsGenerationDelegate& web_delegate, - const LocalFrame& frame) { + LocalFrame& frame, + base::OnceCallback<void(Deque<SerializedResource>)> done_callback) { TRACE_EVENT0("page-serialization", "FrameSerializer::serializeFrame"); DCHECK(frame.GetDocument()); Document& document = *frame.GetDocument(); KURL url = document.Url(); - MultiResourcePacker resource_serializer(&resources, &web_delegate); + MultiResourcePacker resource_serializer(&web_delegate); // If frame is an image document, add the image and don't continue if (auto* image_document = DynamicTo<ImageDocument>(document)) { resource_serializer.AddImageToResources(image_document->CachedImage(), url); + std::move(done_callback) + .Run(std::move(resource_serializer).FinishAndTakeResources()); return; } @@ -980,6 +985,9 @@ resource_serializer.AddMainResource( document.SuggestedMIMEType(), SharedBuffer::Create(frame_html.c_str(), frame_html.length()), url); + // TODO(crbug.com/363289333): Add async fetching of fonts. + std::move(done_callback) + .Run(std::move(resource_serializer).FinishAndTakeResources()); } }
diff --git a/third_party/blink/renderer/core/frame/frame_serializer.h b/third_party/blink/renderer/core/frame/frame_serializer.h index ddc61fe..417d7c1 100644 --- a/third_party/blink/renderer/core/frame/frame_serializer.h +++ b/third_party/blink/renderer/core/frame/frame_serializer.h
@@ -31,6 +31,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_FRAME_SERIALIZER_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_FRAME_SERIALIZER_H_ +#include "base/functional/callback.h" #include "third_party/blink/public/web/web_frame_serializer.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" @@ -63,9 +64,9 @@ // added to `resources`. The first resource is the frame's serialized content. // Subsequent resources are images, css, etc. static void SerializeFrame( - Deque<SerializedResource>& resources, WebFrameSerializer::MHTMLPartsGenerationDelegate& web_delegate, - const LocalFrame&); + LocalFrame& frame, + base::OnceCallback<void(Deque<SerializedResource>)> done_callback); static String MarkOfTheWebDeclaration(const KURL&); };
diff --git a/third_party/blink/renderer/core/frame/frame_serializer_test.cc b/third_party/blink/renderer/core/frame/frame_serializer_test.cc index 2941dd8a..4b549c5 100644 --- a/third_party/blink/renderer/core/frame/frame_serializer_test.cc +++ b/third_party/blink/renderer/core/frame/frame_serializer_test.cc
@@ -32,6 +32,8 @@ #include <string> +#include "base/run_loop.h" +#include "base/test/bind.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/public/platform/web_url.h" @@ -126,13 +128,19 @@ for (; frame; frame = frame->Tree().TraverseNext()) { // This is safe, because tests do not do cross-site navigation // (and therefore don't have remote frames). - FrameSerializer::SerializeFrame(resources_, *this, - *To<LocalFrame>(frame)); - // Don't serialize the same resource on subsequent frames. This mimics how - // FrameSerializer is actually used. - for (auto& res : GetResources()) { - skip_urls_.insert(res.url); - } + base::RunLoop run_loop; + FrameSerializer::SerializeFrame( + *this, *To<LocalFrame>(frame), + base::BindLambdaForTesting([&](Deque<SerializedResource> resources) { + for (auto& res : resources) { + resources_.push_back(res); + // Don't serialize the same resource on subsequent frames. This + // mimics how FrameSerializer is actually used. + skip_urls_.insert(res.url); + } + run_loop.Quit(); + })); + run_loop.Run(); } }
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc b/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc index acb1b36..5587a8f 100644 --- a/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc +++ b/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc
@@ -74,25 +74,55 @@ namespace { +gfx::Size ParseDstSize(const ImageBitmapOptions* options, + const gfx::Rect& src_rect) { + int resize_width = 0; + int resize_height = 0; + if (!options->hasResizeWidth() && !options->hasResizeHeight()) { + resize_width = src_rect.width(); + resize_height = src_rect.height(); + } else if (options->hasResizeWidth() && options->hasResizeHeight()) { + resize_width = options->resizeWidth(); + resize_height = options->resizeHeight(); + } else if (options->hasResizeWidth() && !options->hasResizeHeight()) { + resize_width = options->resizeWidth(); + resize_height = + ClampTo<unsigned>(ceil(static_cast<float>(options->resizeWidth()) / + src_rect.width() * src_rect.height())); + } else { + resize_height = options->resizeHeight(); + resize_width = + ClampTo<unsigned>(ceil(static_cast<float>(options->resizeHeight()) / + src_rect.height() * src_rect.width())); + } + return gfx::Size(resize_width, resize_height); +} + ImageBitmap::ParsedOptions ParseOptions(const ImageBitmapOptions* options, std::optional<gfx::Rect> crop_rect, - gfx::Size source_size) { + gfx::Size source_size, + ImageOrientation source_orientation, + bool source_is_unpremul) { ImageBitmap::ParsedOptions parsed_options; if (options->imageOrientation() == kImageOrientationFlipY) { parsed_options.flip_y = true; parsed_options.orientation_from_image = true; + parsed_options.source_orientation = source_orientation; } else { DCHECK(options->imageOrientation() == kImageOrientationFromImage || options->imageOrientation() == kImageBitmapOptionNone); parsed_options.flip_y = false; parsed_options.orientation_from_image = true; - + parsed_options.source_orientation = source_orientation; if (base::FeatureList::IsEnabled( features::kCreateImageBitmapOrientationNone) && options->imageOrientation() == kImageBitmapOptionNone) { parsed_options.orientation_from_image = false; + parsed_options.source_orientation = ImageOrientation(); } } + + parsed_options.source_is_unpremul = source_is_unpremul; if (options->premultiplyAlpha() == kImageBitmapOptionNone) { parsed_options.premultiply_alpha = false; } else { @@ -110,30 +140,28 @@ << IDLEnumAsString(options->colorSpaceConversion()); } - int source_width = source_size.width(); - int source_height = source_size.height(); + parsed_options.source_size = + parsed_options.source_orientation.UsesWidthAsHeight() + ? gfx::TransposeSize(source_size) + : source_size; if (!crop_rect) { - parsed_options.crop_rect = gfx::Rect(0, 0, source_width, source_height); + // TODO(crbug.com/40773069): This should use `parsed_options.source_size`, + // because it should be in the same (post-orientation) space. The are + // other bugs that depend on this bug, so keep this present, adding + // `source_rect` as the future replacement. + parsed_options.crop_rect = gfx::Rect(source_size); + parsed_options.source_rect = gfx::Rect(parsed_options.source_size); } else { parsed_options.crop_rect = *crop_rect; + parsed_options.source_rect = *crop_rect; } - if (!options->hasResizeWidth() && !options->hasResizeHeight()) { - parsed_options.resize_width = parsed_options.crop_rect.width(); - parsed_options.resize_height = parsed_options.crop_rect.height(); - } else if (options->hasResizeWidth() && options->hasResizeHeight()) { - parsed_options.resize_width = options->resizeWidth(); - parsed_options.resize_height = options->resizeHeight(); - } else if (options->hasResizeWidth() && !options->hasResizeHeight()) { - parsed_options.resize_width = options->resizeWidth(); - parsed_options.resize_height = ClampTo<unsigned>(ceil( - static_cast<float>(options->resizeWidth()) / - parsed_options.crop_rect.width() * parsed_options.crop_rect.height())); - } else { - parsed_options.resize_height = options->resizeHeight(); - parsed_options.resize_width = ClampTo<unsigned>(ceil( - static_cast<float>(options->resizeHeight()) / - parsed_options.crop_rect.height() * parsed_options.crop_rect.width())); - } + // TODO(crbug.com/40773069): The above error propagates into `resize_width` + // and `resize_height`. Add `dest_size` as the future replacement. + gfx::Size resize = ParseDstSize(options, parsed_options.crop_rect); + parsed_options.resize_width = resize.width(); + parsed_options.resize_height = resize.height(); + parsed_options.dest_size = ParseDstSize(options, parsed_options.source_rect); + if (static_cast<int>(parsed_options.resize_width) == parsed_options.crop_rect.width() && static_cast<int>(parsed_options.resize_height) == @@ -154,6 +182,27 @@ return parsed_options; } +ImageBitmap::ParsedOptions ParseOptions(const ImageBitmapOptions* options, + std::optional<gfx::Rect> crop_rect, + scoped_refptr<Image> input) { + const auto info = input->PaintImageForCurrentFrame().GetSkImageInfo(); + return ParseOptions(options, crop_rect, + gfx::Size(info.width(), info.height()), + input->CurrentFrameOrientation(), + info.alphaType() == kUnpremul_SkAlphaType); +} + +ImageBitmap::ParsedOptions ParseOptions( + const ImageBitmapOptions* options, + std::optional<gfx::Rect> crop_rect, + scoped_refptr<StaticBitmapImage> input) { + auto info = input->GetSkImageInfo(); + return ParseOptions(options, crop_rect, + gfx::Size(info.width(), info.height()), + input->CurrentFrameOrientation(), + info.alphaType() == kUnpremul_SkAlphaType); +} + // The function dstBufferSizeHasOverflow() is being called at the beginning of // each ImageBitmap() constructor, which makes sure that doing // width * height * bytesPerPixel will never overflow unsigned. @@ -361,7 +410,7 @@ scoped_refptr<StaticBitmapImage> ApplyColorSpaceConversion( scoped_refptr<StaticBitmapImage>&& image, - ImageBitmap::ParsedOptions& options) { + const ImageBitmap::ParsedOptions& options) { SkImageInfo src_image_info = image->PaintImageForCurrentFrame().GetSkImageInfo(); if (src_image_info.isEmpty()) @@ -385,7 +434,7 @@ scoped_refptr<StaticBitmapImage> BakeOrientation( scoped_refptr<StaticBitmapImage> input, - ImageBitmap::ParsedOptions& options, + const ImageBitmap::ParsedOptions& options, gfx::Rect src_rect) { SkImageInfo info = GetSkImageInfo(input); if (info.isEmpty()) { @@ -453,7 +502,7 @@ static scoped_refptr<StaticBitmapImage> CropImageAndApplyColorSpaceConversion( scoped_refptr<StaticBitmapImage>&& image, - ImageBitmap::ParsedOptions& parsed_options) { + const ImageBitmap::ParsedOptions& parsed_options) { DCHECK(image); DCHECK(!image->HasData()); @@ -564,11 +613,7 @@ scoped_refptr<Image> input = cached ? cached->GetImage() : Image::NullImage(); DCHECK(!input->IsTextureBacked()); - ParsedOptions parsed_options = - ParseOptions(options, crop_rect, image->BitmapSourceSize()); - parsed_options.source_is_unpremul = - (input->PaintImageForCurrentFrame().GetAlphaType() == - kUnpremul_SkAlphaType); + ParsedOptions parsed_options = ParseOptions(options, crop_rect, input); if (DstBufferSizeHasOverflow(parsed_options)) return; @@ -638,23 +683,23 @@ ImageBitmap::ImageBitmap(HTMLVideoElement* video, std::optional<gfx::Rect> crop_rect, const ImageBitmapOptions* options) { - ParsedOptions parsed_options = - ParseOptions(options, crop_rect, video->BitmapSourceSize()); - if (DstBufferSizeHasOverflow(parsed_options)) - return; - // TODO(crbug.com/1181329): ImageBitmap resize test case failed when // quality equals to "low" and "medium". Need further investigate to // enable gpu backed imageBitmap with resize options. const bool allow_accelerated_images = !options->hasResizeWidth() && !options->hasResizeHeight(); + const bool reinterpret_as_srgb = + (options->colorSpaceConversion() == kImageBitmapOptionNone); auto input = video->CreateStaticBitmapImage( - allow_accelerated_images, - /*size=*/std::nullopt, - /*reinterpret_as_srgb=*/!parsed_options.has_color_space_conversion); + allow_accelerated_images, /*size=*/std::nullopt, reinterpret_as_srgb); if (!input) return; + ParsedOptions parsed_options = ParseOptions(options, crop_rect, input); + if (DstBufferSizeHasOverflow(parsed_options)) { + return; + } + image_ = CropImageAndApplyColorSpaceConversion(std::move(input), parsed_options); if (!image_) @@ -677,8 +722,7 @@ scoped_refptr<StaticBitmapImage> input = static_cast<StaticBitmapImage*>(image_input.get()); - ParsedOptions parsed_options = ParseOptions( - options, crop_rect, gfx::Size(input->width(), input->height())); + const ParsedOptions parsed_options = ParseOptions(options, crop_rect, input); if (DstBufferSizeHasOverflow(parsed_options)) return; @@ -706,8 +750,7 @@ if (status != kNormalSourceImageStatus) return; - ParsedOptions parsed_options = ParseOptions( - options, crop_rect, gfx::Size(input->width(), input->height())); + const ParsedOptions parsed_options = ParseOptions(options, crop_rect, input); if (DstBufferSizeHasOverflow(parsed_options)) return; @@ -736,10 +779,10 @@ ImageBitmap::ImageBitmap(ImageData* data, std::optional<gfx::Rect> crop_rect, const ImageBitmapOptions* options) { - ParsedOptions parsed_options = - ParseOptions(options, crop_rect, data->BitmapSourceSize()); - // ImageData is always unpremul. - parsed_options.source_is_unpremul = true; + const ParsedOptions parsed_options = + ParseOptions(options, crop_rect, data->BitmapSourceSize(), + ImageOrientationEnum::kOriginTopLeft, + /*source_is_unpremul=*/true); if (DstBufferSizeHasOverflow(parsed_options)) return; @@ -822,11 +865,7 @@ scoped_refptr<StaticBitmapImage> input = bitmap->BitmapImage(); if (!input) return; - ParsedOptions parsed_options = - ParseOptions(options, crop_rect, input->Size()); - parsed_options.source_is_unpremul = - (input->PaintImageForCurrentFrame().GetAlphaType() == - kUnpremul_SkAlphaType); + const ParsedOptions parsed_options = ParseOptions(options, crop_rect, input); if (DstBufferSizeHasOverflow(parsed_options)) return; @@ -843,11 +882,7 @@ std::optional<gfx::Rect> crop_rect, const ImageBitmapOptions* options) { bool origin_clean = image->OriginClean(); - ParsedOptions parsed_options = - ParseOptions(options, crop_rect, image->Size()); - parsed_options.source_is_unpremul = - (image->PaintImageForCurrentFrame().GetAlphaType() == - kUnpremul_SkAlphaType); + const ParsedOptions parsed_options = ParseOptions(options, crop_rect, image); if (DstBufferSizeHasOverflow(parsed_options)) return; @@ -992,17 +1027,16 @@ mojom::blink::PreferredColorScheme preferred_color_scheme, ExceptionState& exception_state, const ImageBitmapOptions* options) { - ParsedOptions parsed_options = - ParseOptions(options, crop_rect, image->BitmapSourceSize()); + scoped_refptr<Image> input = image->CachedImage()->GetImage(); + DCHECK(input->IsSVGImage()); + + const ParsedOptions parsed_options = ParseOptions(options, crop_rect, input); if (DstBufferSizeHasOverflow(parsed_options)) { exception_state.ThrowDOMException( DOMExceptionCode::kInvalidStateError, "The ImageBitmap could not be allocated."); return EmptyPromise(); } - - scoped_refptr<Image> input = image->CachedImage()->GetImage(); - DCHECK(input->IsSVGImage()); gfx::Rect input_rect(input->Size()); // In the case when |crop_rect| doesn't intersect the source image, we return
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap.h b/third_party/blink/renderer/core/imagebitmap/image_bitmap.h index 4b222ae..902305b5 100644 --- a/third_party/blink/renderer/core/imagebitmap/image_bitmap.h +++ b/third_party/blink/renderer/core/imagebitmap/image_bitmap.h
@@ -131,17 +131,38 @@ ExceptionState&) override; struct ParsedOptions { + // If true, then the final result should be flipped vertically. This happens + // in the space after `source_orientation` has been applied. bool flip_y = false; bool premultiply_alpha = true; + // TODO(crbug.com/40773069): This is based on the incorrect values and needs + // to be removed. bool should_scale_input = false; bool has_color_space_conversion = false; bool source_is_unpremul = false; bool orientation_from_image = true; + // TODO(crbug.com/40773069): The value of `resize_width`, `resize_height`, + // and `crop_rect` are computed incorrectly. Remove this when all code that + // uses it is removed. unsigned resize_width = 0; unsigned resize_height = 0; gfx::Rect crop_rect; cc::PaintFlags::FilterQuality resize_quality = cc::PaintFlags::FilterQuality::kLow; + + // The filter quality specified by the options. This is always set, even + // if no resampling is needed. + cc::PaintFlags::FilterQuality filter_quality = + cc::PaintFlags::FilterQuality::kLow; + + // The orientation of the source. This may be from the source or overridden. + class ImageOrientation source_orientation; + + // The `source_size`, `source_rect`, and `dest_size` parameters are all in + // the space after the `source_orientation` has been applied. + gfx::Size source_size; + gfx::Rect source_rect; + gfx::Size dest_size; }; private:
diff --git a/third_party/blink/renderer/core/navigation_api/navigate_event.cc b/third_party/blink/renderer/core/navigation_api/navigate_event.cc index f349266..e5f59d3 100644 --- a/third_party/blink/renderer/core/navigation_api/navigate_event.cc +++ b/third_party/blink/renderer/core/navigation_api/navigate_event.cc
@@ -381,7 +381,7 @@ handlers_list.swap(navigation_action_handlers_list_); for (auto& function : handlers_list) { - ScriptPromiseUntyped result; + ScriptPromise<IDLUndefined> result; if (function->Invoke(this).To(&result)) navigation_action_promises_list_.push_back(result); }
diff --git a/third_party/blink/renderer/core/navigation_api/navigation_intercept_options.idl b/third_party/blink/renderer/core/navigation_api/navigation_intercept_options.idl index de7d50e..4e91e93 100644 --- a/third_party/blink/renderer/core/navigation_api/navigation_intercept_options.idl +++ b/third_party/blink/renderer/core/navigation_api/navigation_intercept_options.idl
@@ -3,7 +3,7 @@ // found in the LICENSE file. // https://wicg.github.io/navigation-api/ -callback NavigationInterceptHandler = Promise<void>(); +callback NavigationInterceptHandler = Promise<undefined>(); dictionary NavigationInterceptOptions { NavigationInterceptHandler handler;
diff --git a/third_party/blink/renderer/core/streams/byte_stream_tee_engine.cc b/third_party/blink/renderer/core/streams/byte_stream_tee_engine.cc index 8df5d4e..f0fb16d4 100644 --- a/third_party/blink/renderer/core/streams/byte_stream_tee_engine.cc +++ b/third_party/blink/renderer/core/streams/byte_stream_tee_engine.cc
@@ -652,7 +652,8 @@ // 13. Let cancelPromise be a new promise. cancel_promise_ = - MakeGarbageCollected<ScriptPromiseResolver<IDLPromise>>(script_state); + MakeGarbageCollected<ScriptPromiseResolver<IDLPromise<IDLUndefined>>>( + script_state); // 17. Let pull1Algorithm be the following steps: // (See PullAlgorithm::Run()).
diff --git a/third_party/blink/renderer/core/streams/byte_stream_tee_engine.h b/third_party/blink/renderer/core/streams/byte_stream_tee_engine.h index f68469c..1a67c1a 100644 --- a/third_party/blink/renderer/core/streams/byte_stream_tee_engine.h +++ b/third_party/blink/renderer/core/streams/byte_stream_tee_engine.h
@@ -69,7 +69,7 @@ Member<ReadableStream> stream_; Member<ReadableStreamGenericReader> reader_; - Member<ScriptPromiseResolver<IDLPromise>> cancel_promise_; + Member<ScriptPromiseResolver<IDLPromise<IDLUndefined>>> cancel_promise_; bool reading_ = false; // The standard contains a number of pairs of variables with one for each
diff --git a/third_party/blink/renderer/core/streams/tee_engine.cc b/third_party/blink/renderer/core/streams/tee_engine.cc index ea6a328..3ab5780 100644 --- a/third_party/blink/renderer/core/streams/tee_engine.cc +++ b/third_party/blink/renderer/core/streams/tee_engine.cc
@@ -323,7 +323,8 @@ // 12. Let cancelPromise be a new promise. cancel_promise_ = - MakeGarbageCollected<ScriptPromiseResolver<IDLPromise>>(script_state); + MakeGarbageCollected<ScriptPromiseResolver<IDLPromise<IDLUndefined>>>( + script_state); // 13. Let pullAlgorithm be the following steps: // (steps are defined in PullAlgorithm::Run()).
diff --git a/third_party/blink/renderer/core/streams/tee_engine.h b/third_party/blink/renderer/core/streams/tee_engine.h index d20a8a1..a011141 100644 --- a/third_party/blink/renderer/core/streams/tee_engine.h +++ b/third_party/blink/renderer/core/streams/tee_engine.h
@@ -61,7 +61,7 @@ Member<ReadableStream> stream_; Member<ReadableStreamDefaultReader> reader_; - Member<ScriptPromiseResolver<IDLPromise>> cancel_promise_; + Member<ScriptPromiseResolver<IDLPromise<IDLUndefined>>> cancel_promise_; bool reading_ = false; bool read_again_ = false; bool clone_for_branch2_ = false;
diff --git a/third_party/blink/renderer/core/streams/transferable_streams.cc b/third_party/blink/renderer/core/streams/transferable_streams.cc index 68ec3b2..af796f9 100644 --- a/third_party/blink/renderer/core/streams/transferable_streams.cc +++ b/third_party/blink/renderer/core/streams/transferable_streams.cc
@@ -803,7 +803,7 @@ public: explicit ConcatenatingUnderlyingSourceReadRequest( ConcatenatingUnderlyingSource* source, - ScriptPromiseResolver<IDLPromise>* resolver) + ScriptPromiseResolver<IDLPromise<IDLAny>>* resolver) : source_(source), resolver_(resolver) {} void ChunkSteps(ScriptState* script_state, @@ -862,7 +862,7 @@ private: Member<ConcatenatingUnderlyingSource> source_; - Member<ScriptPromiseResolver<IDLPromise>> resolver_; + Member<ScriptPromiseResolver<IDLPromise<IDLAny>>> resolver_; }; ConcatenatingUnderlyingSource(ScriptState* script_state, @@ -891,7 +891,8 @@ return source2_->Pull(script_state, exception_state); } auto* promise = - MakeGarbageCollected<ScriptPromiseResolver<IDLPromise>>(script_state); + MakeGarbageCollected<ScriptPromiseResolver<IDLPromise<IDLAny>>>( + script_state); auto* read_request = MakeGarbageCollected<ConcatenatingUnderlyingSourceReadRequest>(this, promise);
diff --git a/third_party/blink/renderer/core/streams/underlying_source_cancel_callback.idl b/third_party/blink/renderer/core/streams/underlying_source_cancel_callback.idl index 2626c7a..8fa43b2d 100644 --- a/third_party/blink/renderer/core/streams/underlying_source_cancel_callback.idl +++ b/third_party/blink/renderer/core/streams/underlying_source_cancel_callback.idl
@@ -4,4 +4,4 @@ // https://streams.spec.whatwg.org/#callbackdef-underlyingsourcecancelcallback -callback UnderlyingSourceCancelCallback = Promise<void> (optional any reason); +callback UnderlyingSourceCancelCallback = Promise<undefined> (optional any reason);
diff --git a/third_party/blink/renderer/core/streams/underlying_source_pull_callback.idl b/third_party/blink/renderer/core/streams/underlying_source_pull_callback.idl index c2200c0e..8d1e59b 100644 --- a/third_party/blink/renderer/core/streams/underlying_source_pull_callback.idl +++ b/third_party/blink/renderer/core/streams/underlying_source_pull_callback.idl
@@ -4,4 +4,4 @@ // https://streams.spec.whatwg.org/#callbackdef-underlyingsourcepullcallback -callback UnderlyingSourcePullCallback = Promise<void> (ReadableStreamController controller); +callback UnderlyingSourcePullCallback = Promise<undefined> (ReadableStreamController controller);
diff --git a/third_party/blink/renderer/core/testing/internals.cc b/third_party/blink/renderer/core/testing/internals.cc index 8b131e8..f4f4e83 100644 --- a/third_party/blink/renderer/core/testing/internals.cc +++ b/third_party/blink/renderer/core/testing/internals.cc
@@ -3942,7 +3942,8 @@ object ->Set(script_state->GetContext(), V8String(script_state->GetIsolate(), "sink"), - ToV8Traits<IDLPromise>::ToV8(script_state, resolver->Promise())) + ToV8Traits<IDLPromise<IDLString>>::ToV8(script_state, + resolver->Promise())) .Check(); return ScriptValue(script_state->GetIsolate(), object); }
diff --git a/third_party/blink/renderer/core/view_transition/dom_view_transition.cc b/third_party/blink/renderer/core/view_transition/dom_view_transition.cc index d8bcbfe2..2b68854 100644 --- a/third_party/blink/renderer/core/view_transition/dom_view_transition.cc +++ b/third_party/blink/renderer/core/view_transition/dom_view_transition.cc
@@ -171,7 +171,7 @@ dom_callback_result_ = DOMCallbackResult::kRunning; - ScriptPromiseUntyped result; + ScriptPromise<IDLUndefined> result; // It's ok to use the main world when there is no callback, since we're only // using it to call DOMChangeFinishedCallback which doesn't use the script @@ -182,7 +182,7 @@ ScriptState::Scope scope(script_state); if (update_dom_callback_) { - v8::Maybe<ScriptPromiseUntyped> maybe_result = + v8::Maybe<ScriptPromise<IDLUndefined>> maybe_result = update_dom_callback_->Invoke(nullptr); // If the callback couldn't be run for some reason, treat it as an empty
diff --git a/third_party/blink/renderer/core/view_transition/view_transition_callback.idl b/third_party/blink/renderer/core/view_transition/view_transition_callback.idl index 7e5d82c..c5a50d1 100644 --- a/third_party/blink/renderer/core/view_transition/view_transition_callback.idl +++ b/third_party/blink/renderer/core/view_transition/view_transition_callback.idl
@@ -5,5 +5,5 @@ // TODO(vmpstr): Rename this to UpdateDOMCallback [ SupportsTaskAttribution -] callback ViewTransitionCallback = Promise<void>(); +] callback ViewTransitionCallback = Promise<undefined>();
diff --git a/third_party/blink/renderer/modules/accessibility/BUILD.gn b/third_party/blink/renderer/modules/accessibility/BUILD.gn index 72c8104..20fded44 100644 --- a/third_party/blink/renderer/modules/accessibility/BUILD.gn +++ b/third_party/blink/renderer/modules/accessibility/BUILD.gn
@@ -60,6 +60,7 @@ "//ui/accessibility", "//ui/accessibility:ax_base", "//ui/accessibility:ax_enums_mojo_blink", + "//ui/accessibility/mojom:mojom_blink", ] # The modules/accessibility/ depends closely on core/ --
diff --git a/third_party/blink/renderer/modules/accessibility/DEPS b/third_party/blink/renderer/modules/accessibility/DEPS index cbcbbc0..19f814a4 100644 --- a/third_party/blink/renderer/modules/accessibility/DEPS +++ b/third_party/blink/renderer/modules/accessibility/DEPS
@@ -21,5 +21,7 @@ "+ui/accessibility/ax_tree_data.h", "+ui/accessibility/ax_tree_id.h", "+ui/accessibility/ax_tree_serializer.h", - "+ui/accessibility/mojom/ax_relative_bounds.mojom-blink.h" + "+ui/accessibility/mojom/ax_relative_bounds.mojom-blink.h", + "+ui/accessibility/ax_location_and_scroll_updates.h", + "+ui/accessibility/mojom/ax_location_and_scroll_updates.mojom-blink.h", ]
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc index ac57a5e..3f63b29 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -1474,7 +1474,9 @@ dst.AddBoolAttribute(ax::mojom::blink::BoolAttribute::kIsLineBreakingObject, true); } - AXObjectCache().SetCachedBoundingBox(AXObjectID(), dst.relative_bounds); + gfx::Point scroll_offset = GetScrollOffset(); + AXObjectCache().SetCachedBoundingBox(AXObjectID(), dst.relative_bounds, + scroll_offset.x(), scroll_offset.y()); } static bool AXShouldIncludePageScaleFactorInRoot() {
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc index a5d08e4..bf931d4 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
@@ -126,8 +126,10 @@ #include "ui/accessibility/ax_common.h" #include "ui/accessibility/ax_enums.mojom-blink.h" #include "ui/accessibility/ax_event.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_node.h" #include "ui/accessibility/ax_role_properties.h" +#include "ui/accessibility/mojom/ax_location_and_scroll_updates.mojom-blink.h" #include "ui/accessibility/mojom/ax_relative_bounds.mojom-blink.h" #if DCHECK_IS_ON() #include "third_party/blink/renderer/modules/accessibility/ax_debug_utils.h" @@ -757,7 +759,6 @@ DEBUG_STRING_CASE(kEditableTextContentChanged); DEBUG_STRING_CASE(kFocusableChanged); DEBUG_STRING_CASE(kIdChanged); - DEBUG_STRING_CASE(kMarkDirtyFromHandleScroll); DEBUG_STRING_CASE(kNodeIsAttached); DEBUG_STRING_CASE(kNodeGainedFocus); DEBUG_STRING_CASE(kNodeLostFocus); @@ -1991,14 +1992,12 @@ } // Allow the new AXObject for the same node to be serialized correctly. nodes_with_pending_children_changed_.erase(obj_id); - nodes_with_pending_scroll_changed_.erase(obj_id); computed_node_mapping_.erase(obj_id); } else { // Non-DOM ids should never find their way into these maps. DCHECK(!fixed_or_sticky_node_ids_.Contains(obj_id)); DCHECK(!computed_node_mapping_.Contains(obj_id)); DCHECK(!nodes_with_pending_children_changed_.Contains(obj_id)); - DCHECK(!nodes_with_pending_scroll_changed_.Contains(obj_id)); } } @@ -3240,7 +3239,6 @@ CHECK(tree_update_callback_queue_main_.empty()); CHECK(tree_update_callback_queue_popup_.empty()); CHECK(nodes_with_pending_children_changed_.empty()); - CHECK(nodes_with_pending_scroll_changed_.empty()); { lifecycle_.AdvanceTo(AXObjectCacheLifecycle::kFinalizingTree); @@ -3256,7 +3254,6 @@ CHECK(tree_update_callback_queue_main_.empty()); CHECK(tree_update_callback_queue_popup_.empty()); CHECK(nodes_with_pending_children_changed_.empty()); - CHECK(nodes_with_pending_scroll_changed_.empty()); // Updating the tree did not add dirty objects. DUMP_WILL_BE_CHECK(!IsDirty()); @@ -3301,9 +3298,10 @@ // ***** Serialize Location Changes ***** // Even if there are no dirty objects, we ensure pending location changes - // are sent. However, we wait until the document load is complete because - // layout often shifts during the load process. - if (reset_token_ && GetDocument().IsLoadCompleted()) { + // are sent. + if (reset_token_ && !changed_bounds_ids_.empty()) { + DCHECK(!did_serialize); // Location changes should have been sent with + // full serialization. SerializeLocationChanges(); } @@ -3402,9 +3400,16 @@ // There should be no more dirty objects. CHECK(!HasObjectsPendingSerialization()); + /* If there's location updates pending, send them on the way. */ + ui::AXLocationAndScrollUpdates location_and_scroll_changes; + if (!changed_bounds_ids_.empty()) { + location_and_scroll_changes = TakeLocationChangsForSerialization(); + } + /* Send the actual serialization message.*/ bool success = client->SendAccessibilitySerialization( - std::move(updates), std::move(events), had_load_complete_messages); + std::move(updates), std::move(events), + std::move(location_and_scroll_changes), had_load_complete_messages); if (!success) { // In some cases, like in web tests or if a11y is off, serialization doesn't @@ -3516,7 +3521,6 @@ TreeUpdateCallbackQueue old_tree_update_callback_queue; GetTreeUpdateCallbackQueue(document).swap(old_tree_update_callback_queue); nodes_with_pending_children_changed_.clear(); - nodes_with_pending_scroll_changed_.clear(); last_value_change_node_ = ui::AXNodeData::kInvalidAXID; for (TreeUpdateParams* tree_update : old_tree_update_callback_queue) { @@ -3737,9 +3741,6 @@ // When the id attribute changes, the relations its in may also change. MaybeNewRelationTarget(*node, ax_object); break; - case TreeUpdateReason::kMarkDirtyFromHandleScroll: - MarkAXObjectDirtyWithCleanLayout(Get(node)); - break; case TreeUpdateReason::kNodeGainedFocus: HandleNodeGainedFocusWithCleanLayout(node); break; @@ -4783,7 +4784,6 @@ case TreeUpdateReason::kDelayEventFromPostNotification: case TreeUpdateReason::kFocusableChanged: case TreeUpdateReason::kIdChanged: - case TreeUpdateReason::kMarkDirtyFromHandleScroll: case TreeUpdateReason::kNodeIsAttached: case TreeUpdateReason::kPostNotificationFromHandleLoadStart: case TreeUpdateReason::kPostNotificationFromHandleScrolledToAnchor: @@ -5253,12 +5253,70 @@ return active_aria_modal_dialog_; } +ui::AXLocationAndScrollUpdates +AXObjectCacheImpl::TakeLocationChangsForSerialization() { + CHECK(!changed_bounds_ids_.empty()); + + TRACE_EVENT0("accessibility", + load_sent_ ? "TakeLocationChangsForSerialization" + : "TakeLocationChangsForSerializationLoading"); + SCOPED_UMA_HISTOGRAM_TIMER_MICROS( + "Accessibility.Performance.TakeLocationChangsForSerialization"); + + ui::AXLocationAndScrollUpdates changes; + + // Reserve is just an optimization. The actual value doesn't have to be + // accurate but just an estimate. Assume the changes will always be half and + // half. + changes.location_changes.reserve(changed_bounds_ids_.size()); + changes.scroll_changes.reserve(changed_bounds_ids_.size()); + + for (AXID changed_bounds_id : changed_bounds_ids_) { + if (AXObject* obj = ObjectFromAXID(changed_bounds_id)) { + DCHECK(!obj->IsDetached()); + // Only update locations that are already known. + auto bounds = cached_bounding_boxes_.find(changed_bounds_id); + if (bounds == cached_bounding_boxes_.end()) { + continue; + } + + ui::AXRelativeBounds new_location; + bool clips_children; + obj->PopulateAXRelativeBounds(new_location, &clips_children); + gfx::Point scroll_offset = obj->GetScrollOffset(); + + if (bounds->value.bounds != new_location) { + changes.location_changes.emplace_back(changed_bounds_id, new_location); + } + + if (bounds->value.scroll_x != scroll_offset.x() || + bounds->value.scroll_y != scroll_offset.y()) { + changes.scroll_changes.emplace_back( + changed_bounds_id, scroll_offset.x(), scroll_offset.y()); + } + + cached_bounding_boxes_.Set( + changed_bounds_id, + CachedLocationChange(new_location, scroll_offset.x(), + scroll_offset.y())); + } + } + + changed_bounds_ids_.clear(); + last_location_serialization_time_ = + base::Time::Now(); // Since this method is non-recoverable, update the + // time here and assume this serializtion will arrive. + return changes; +} + void AXObjectCacheImpl::SerializeLocationChanges() { - CHECK(GetDocument().IsActive()); - if (changed_bounds_ids_.empty()) { + // We wait until the document load is complete because layout often shifts + // during the load process. + if (!GetDocument().IsLoadCompleted()) { return; } + CHECK(GetDocument().IsActive()); TRACE_EVENT0("accessibility", load_sent_ ? "SerializeLocationChanges" : "SerializeLocationChangesLoading"); SCOPED_UMA_HISTOGRAM_TIMER_MICROS( @@ -5291,33 +5349,26 @@ weak_factory_for_loc_updates_pipeline_.Invalidate(); - Vector<mojom::blink::LocationChangesPtr> changes; - changes.reserve(changed_bounds_ids_.size()); - for (AXID changed_bounds_id : changed_bounds_ids_) { - if (AXObject* obj = ObjectFromAXID(changed_bounds_id)) { - DCHECK(!obj->IsDetached()); - // Only update locations that are already known. - auto bounds = cached_bounding_boxes_.find(changed_bounds_id); - if (bounds == cached_bounding_boxes_.end()) - continue; + ui::AXLocationAndScrollUpdates changes = TakeLocationChangsForSerialization(); - ui::AXRelativeBounds new_location; - bool clips_children; - obj->PopulateAXRelativeBounds(new_location, &clips_children); - if (bounds->value == new_location) - continue; - - cached_bounding_boxes_.Set(changed_bounds_id, new_location); - changes.push_back( - mojom::blink::LocationChanges::New(changed_bounds_id, new_location)); - } + // Convert to blink mojom type + ax::mojom::blink::AXLocationAndScrollUpdatesPtr location_and_scroll_changes = + ax::mojom::blink::AXLocationAndScrollUpdates::New(); + for (auto& item : changes.location_changes) { + location_and_scroll_changes->location_changes.push_back( + ax::mojom::blink::AXLocationChange::New(item.id, item.new_location)); } - changed_bounds_ids_.clear(); - if (!changes.empty()) { + for (auto& item : changes.scroll_changes) { + location_and_scroll_changes->scroll_changes.push_back( + ax::mojom::blink::AXScrollChange::New(item.id, item.scroll_x, + item.scroll_y)); + } + + if (!location_and_scroll_changes->location_changes.empty() || + !location_and_scroll_changes->scroll_changes.empty()) { CHECK(reset_token_); GetOrCreateRemoteRenderAccessibilityHost()->HandleAXLocationChanges( - std::move(changes), *reset_token_); - last_location_serialization_time_ = base::Time::Now(); + std::move(location_and_scroll_changes), *reset_token_); } } @@ -5884,13 +5935,15 @@ changed_bounds_ids_.insert(id); } -void AXObjectCacheImpl::SetCachedBoundingBox( - AXID id, - const ui::AXRelativeBounds& bounds) { +void AXObjectCacheImpl::SetCachedBoundingBox(AXID id, + const ui::AXRelativeBounds& bounds, + const int scroll_x, + const int scroll_y) { // When a bounding box of a node is serialized, we store the last value for it // in cached_bounding_boxes_, to help with comparing if it really changed // or not when sending another serialization later. - cached_bounding_boxes_.Set(id, bounds); + cached_bounding_boxes_.Set(id, + CachedLocationChange(bounds, scroll_x, scroll_y)); } void AXObjectCacheImpl::HandleScrollPositionChanged( @@ -5908,12 +5961,7 @@ Node* node = GetClosestNodeForLayoutObject(layout_object); if (node) { - if (!nodes_with_pending_scroll_changed_.insert(node->GetDomNodeId()) - .is_new_entry) { - return; - } - - DeferTreeUpdate(TreeUpdateReason::kMarkDirtyFromHandleScroll, node); + InvalidateBoundingBox(node->GetDomNodeId()); } }
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h index 72c7337..f6e0e1e 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h +++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
@@ -65,6 +65,7 @@ #include "third_party/blink/renderer/platform/wtf/vector.h" #include "ui/accessibility/ax_enums.mojom-blink-forward.h" #include "ui/accessibility/ax_error_types.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_mode.h" #include "ui/accessibility/ax_tree_serializer.h" @@ -345,7 +346,10 @@ void InvalidateBoundingBox(const LayoutObject*) override; void InvalidateBoundingBox(const AXID&); - void SetCachedBoundingBox(AXID id, const ui::AXRelativeBounds& bounds); + void SetCachedBoundingBox(AXID id, + const ui::AXRelativeBounds& bounds, + const int scroll_x, + const int scroll_y); const AtomicString& ComputedRoleForNode(Node*) override; String ComputedNameForNode(Node*) override; @@ -530,9 +534,12 @@ } // Retrieves a vector of all AXObjects whose bounding boxes may have changed - // since the last query. Sends the resulting vector over mojo to the browser - // process. Clears the vector so that the next time it's - // called, it will only retrieve objects that have changed since now. + // since the last query. Note that this function is destructive and clears the + // vector so that the next time it's called, it will only retrieve objects + // that have changed since now. + ui::AXLocationAndScrollUpdates TakeLocationChangsForSerialization(); + + // Sends the location changes over mojo to the browser process. void SerializeLocationChanges(); // This method is used to fulfill AXTreeSnapshotter requests. @@ -705,7 +712,6 @@ kEditableTextContentChanged, kFocusableChanged, kIdChanged, - kMarkDirtyFromHandleScroll, kNodeIsAttached, kNodeGainedFocus, kNodeLostFocus, @@ -1121,7 +1127,6 @@ // Help de-dupe processing of repetitive events. HashSet<AXID> nodes_with_pending_children_changed_; - HashSet<AXID> nodes_with_pending_scroll_changed_; // Nodes with document markers that have received accessibility updates. HashSet<AXID> nodes_with_spelling_or_grammar_markers_; @@ -1185,8 +1190,13 @@ AXID current_menu_list_axid_ = 0; // Known locations and sizes of bounding boxes that are known to have been - // serialized. - HashMap<AXID, ui::AXRelativeBounds> cached_bounding_boxes_; + // serialized as well as their scroll offsets. + struct CachedLocationChange { + ui::AXRelativeBounds bounds; + int scroll_x; + int scroll_y; + }; + HashMap<AXID, CachedLocationChange> cached_bounding_boxes_; // The list of node IDs whose position is fixed or sticky. HashSet<AXID> fixed_or_sticky_node_ids_;
diff --git a/third_party/blink/renderer/modules/ad_auction/auction_ad_config.idl b/third_party/blink/renderer/modules/ad_auction/auction_ad_config.idl index 81a10ac4..3654a73f 100644 --- a/third_party/blink/renderer/modules/ad_auction/auction_ad_config.idl +++ b/third_party/blink/renderer/modules/ad_auction/auction_ad_config.idl
@@ -60,7 +60,7 @@ Promise<DOMString> directFromSellerSignalsHeaderAdSlot; [RuntimeEnabled=FledgeDeprecatedRenderURLReplacements] - Promise<record<USVString, USVString>> deprecatedRenderURLReplacements; + Promise<record<USVString, USVString>?> deprecatedRenderURLReplacements; unsigned long long sellerTimeout; unsigned short sellerExperimentGroupId;
diff --git a/third_party/blink/renderer/modules/clipboard/clipboard_item.cc b/third_party/blink/renderer/modules/clipboard/clipboard_item.cc index eb87fd1..58bcb4bd6 100644 --- a/third_party/blink/renderer/modules/clipboard/clipboard_item.cc +++ b/third_party/blink/renderer/modules/clipboard/clipboard_item.cc
@@ -19,7 +19,7 @@ // static ClipboardItem* ClipboardItem::Create( - const HeapVector<std::pair<String, ScriptPromiseUntyped>>& representations, + const HeapVector<std::pair<String, ScriptPromise<Blob>>>& representations, ExceptionState& exception_state) { // Check that incoming dictionary isn't empty. If it is, it's possible that // Javascript bindings implicitly converted an Object (like a @@ -32,8 +32,7 @@ } ClipboardItem::ClipboardItem( - const HeapVector<std::pair<String, ScriptPromiseUntyped>>& - representations) { + const HeapVector<std::pair<String, ScriptPromise<Blob>>>& representations) { for (const auto& representation : representations) { String web_custom_format = Clipboard::ParseWebCustomFormat(representation.first);
diff --git a/third_party/blink/renderer/modules/clipboard/clipboard_item.h b/third_party/blink/renderer/modules/clipboard/clipboard_item.h index 9a5b0c4..c459b36 100644 --- a/third_party/blink/renderer/modules/clipboard/clipboard_item.h +++ b/third_party/blink/renderer/modules/clipboard/clipboard_item.h
@@ -25,8 +25,7 @@ // If `representations` is empty, writes error info to `exception_state` and // returns nullptr. static ClipboardItem* Create( - const HeapVector<std::pair<String, ScriptPromiseUntyped>>& - representations, + const HeapVector<std::pair<String, ScriptPromise<Blob>>>& representations, ExceptionState& exception_state); // Constructs a `ClipboardItem` instance from `representations`. @@ -35,7 +34,7 @@ // If an empty `ClipboardItem` is a valid use-case, use the constructor // directly, else use `Create` method. explicit ClipboardItem( - const HeapVector<std::pair<String, ScriptPromiseUntyped>>& + const HeapVector<std::pair<String, ScriptPromise<Blob>>>& representations); // Returns the MIME types contained in the `ClipboardItem`.
diff --git a/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc b/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc index d9e8dbe..d7b16966 100644 --- a/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc +++ b/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc
@@ -356,12 +356,14 @@ return; } ScriptState::Scope scope(script_state); - HeapVector<std::pair<String, ScriptPromiseUntyped>> items; + HeapVector<std::pair<String, ScriptPromise<Blob>>> items; items.ReserveInitialCapacity(clipboard_item_data_.size()); for (const auto& item : clipboard_item_data_) { - ScriptPromiseUntyped promise = - ToResolvedPromise<IDLNullable<Blob>>(script_state, item.second); + if (!item.second) { + continue; + } + auto promise = ToResolvedPromise<Blob>(script_state, item.second); items.emplace_back(item.first, promise); } HeapVector<Member<ClipboardItem>> clipboard_items = {
diff --git a/third_party/blink/renderer/modules/mediasession/media_session.cc b/third_party/blink/renderer/modules/mediasession/media_session.cc index 50947c8..034dd74c 100644 --- a/third_party/blink/renderer/modules/mediasession/media_session.cc +++ b/third_party/blink/renderer/modules/mediasession/media_session.cc
@@ -7,6 +7,7 @@ #include <memory> #include <optional> +#include "base/notreached.h" #include "base/time/default_tick_clock.h" #include "base/time/time.h" #include "third_party/blink/public/mojom/frame/user_activation_notification_type.mojom-blink.h" @@ -14,6 +15,7 @@ #include "third_party/blink/renderer/bindings/modules/v8/v8_media_position_state.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_media_session_action_details.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_media_session_action_handler.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_media_session_playback_state.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_media_session_seek_to_action_details.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/local_frame.h" @@ -32,133 +34,109 @@ using ::media_session::mojom::blink::MediaSessionAction; -const AtomicString& MojomActionToActionName(MediaSessionAction action) { - DEFINE_STATIC_LOCAL(const AtomicString, play_action_name, ("play")); - DEFINE_STATIC_LOCAL(const AtomicString, pause_action_name, ("pause")); - DEFINE_STATIC_LOCAL(const AtomicString, previous_track_action_name, - ("previoustrack")); - DEFINE_STATIC_LOCAL(const AtomicString, next_track_action_name, - ("nexttrack")); - DEFINE_STATIC_LOCAL(const AtomicString, seek_backward_action_name, - ("seekbackward")); - DEFINE_STATIC_LOCAL(const AtomicString, seek_forward_action_name, - ("seekforward")); - DEFINE_STATIC_LOCAL(const AtomicString, skip_ad_action_name, ("skipad")); - DEFINE_STATIC_LOCAL(const AtomicString, stop_action_name, ("stop")); - DEFINE_STATIC_LOCAL(const AtomicString, seek_to_action_name, ("seekto")); - DEFINE_STATIC_LOCAL(const AtomicString, toggle_microphone_action_name, - ("togglemicrophone")); - DEFINE_STATIC_LOCAL(const AtomicString, toggle_camera_action_name, - ("togglecamera")); - DEFINE_STATIC_LOCAL(const AtomicString, hang_up_action_name, ("hangup")); - DEFINE_STATIC_LOCAL(const AtomicString, previous_slide_action_name, - ("previousslide")); - DEFINE_STATIC_LOCAL(const AtomicString, next_slide_action_name, - ("nextslide")); - DEFINE_STATIC_LOCAL(const AtomicString, enter_picture_in_picture_action_name, - ("enterpictureinpicture")); - +V8MediaSessionAction::Enum MojomActionToActionEnum(MediaSessionAction action) { switch (action) { case MediaSessionAction::kPlay: - return play_action_name; + return V8MediaSessionAction::Enum::kPlay; case MediaSessionAction::kPause: - return pause_action_name; + return V8MediaSessionAction::Enum::kPause; case MediaSessionAction::kPreviousTrack: - return previous_track_action_name; + return V8MediaSessionAction::Enum::kPrevioustrack; case MediaSessionAction::kNextTrack: - return next_track_action_name; + return V8MediaSessionAction::Enum::kNexttrack; case MediaSessionAction::kSeekBackward: - return seek_backward_action_name; + return V8MediaSessionAction::Enum::kSeekbackward; case MediaSessionAction::kSeekForward: - return seek_forward_action_name; + return V8MediaSessionAction::Enum::kSeekforward; case MediaSessionAction::kSkipAd: - return skip_ad_action_name; + return V8MediaSessionAction::Enum::kSkipad; case MediaSessionAction::kStop: - return stop_action_name; + return V8MediaSessionAction::Enum::kStop; case MediaSessionAction::kSeekTo: - return seek_to_action_name; + return V8MediaSessionAction::Enum::kSeekto; case MediaSessionAction::kToggleMicrophone: - return toggle_microphone_action_name; + return V8MediaSessionAction::Enum::kTogglemicrophone; case MediaSessionAction::kToggleCamera: - return toggle_camera_action_name; + return V8MediaSessionAction::Enum::kTogglecamera; case MediaSessionAction::kHangUp: - return hang_up_action_name; + return V8MediaSessionAction::Enum::kHangup; case MediaSessionAction::kPreviousSlide: - return previous_slide_action_name; + return V8MediaSessionAction::Enum::kPreviousslide; case MediaSessionAction::kNextSlide: - return next_slide_action_name; + return V8MediaSessionAction::Enum::kNextslide; case MediaSessionAction::kEnterPictureInPicture: - return enter_picture_in_picture_action_name; - default: - NOTREACHED_IN_MIGRATION(); + return V8MediaSessionAction::Enum::kEnterpictureinpicture; + case MediaSessionAction::kScrubTo: + case MediaSessionAction::kExitPictureInPicture: + case MediaSessionAction::kSwitchAudioDevice: + case MediaSessionAction::kEnterAutoPictureInPicture: + case MediaSessionAction::kSetMute: + case MediaSessionAction::kRaise: + NOTREACHED(); } - return WTF::g_empty_atom; + NOTREACHED(); } -std::optional<MediaSessionAction> ActionNameToMojomAction( - const String& action_name) { - if ("play" == action_name) - return MediaSessionAction::kPlay; - if ("pause" == action_name) - return MediaSessionAction::kPause; - if ("previoustrack" == action_name) - return MediaSessionAction::kPreviousTrack; - if ("nexttrack" == action_name) - return MediaSessionAction::kNextTrack; - if ("seekbackward" == action_name) - return MediaSessionAction::kSeekBackward; - if ("seekforward" == action_name) - return MediaSessionAction::kSeekForward; - if ("skipad" == action_name) - return MediaSessionAction::kSkipAd; - if ("stop" == action_name) - return MediaSessionAction::kStop; - if ("seekto" == action_name) - return MediaSessionAction::kSeekTo; - if ("togglemicrophone" == action_name) - return MediaSessionAction::kToggleMicrophone; - if ("togglecamera" == action_name) - return MediaSessionAction::kToggleCamera; - if ("hangup" == action_name) - return MediaSessionAction::kHangUp; - if ("previousslide" == action_name) - return MediaSessionAction::kPreviousSlide; - if ("nextslide" == action_name) - return MediaSessionAction::kNextSlide; - if ("enterpictureinpicture" == action_name) { - return MediaSessionAction::kEnterPictureInPicture; +MediaSessionAction ActionEnumToMojomAction(V8MediaSessionAction::Enum action) { + switch (action) { + case V8MediaSessionAction::Enum::kPlay: + return MediaSessionAction::kPlay; + case V8MediaSessionAction::Enum::kPause: + return MediaSessionAction::kPause; + case V8MediaSessionAction::Enum::kPrevioustrack: + return MediaSessionAction::kPreviousTrack; + case V8MediaSessionAction::Enum::kNexttrack: + return MediaSessionAction::kNextTrack; + case V8MediaSessionAction::Enum::kSeekbackward: + return MediaSessionAction::kSeekBackward; + case V8MediaSessionAction::Enum::kSeekforward: + return MediaSessionAction::kSeekForward; + case V8MediaSessionAction::Enum::kSkipad: + return MediaSessionAction::kSkipAd; + case V8MediaSessionAction::Enum::kStop: + return MediaSessionAction::kStop; + case V8MediaSessionAction::Enum::kSeekto: + return MediaSessionAction::kSeekTo; + case V8MediaSessionAction::Enum::kTogglemicrophone: + return MediaSessionAction::kToggleMicrophone; + case V8MediaSessionAction::Enum::kTogglecamera: + return MediaSessionAction::kToggleCamera; + case V8MediaSessionAction::Enum::kHangup: + return MediaSessionAction::kHangUp; + case V8MediaSessionAction::Enum::kPreviousslide: + return MediaSessionAction::kPreviousSlide; + case V8MediaSessionAction::Enum::kNextslide: + return MediaSessionAction::kNextSlide; + case V8MediaSessionAction::Enum::kEnterpictureinpicture: + return MediaSessionAction::kEnterPictureInPicture; } - - NOTREACHED_IN_MIGRATION(); - return std::nullopt; + NOTREACHED(); } -const AtomicString& MediaSessionPlaybackStateToString( +V8MediaSessionPlaybackState::Enum MediaSessionPlaybackStateToEnum( mojom::blink::MediaSessionPlaybackState state) { - DEFINE_STATIC_LOCAL(const AtomicString, none_value, ("none")); - DEFINE_STATIC_LOCAL(const AtomicString, paused_value, ("paused")); - DEFINE_STATIC_LOCAL(const AtomicString, playing_value, ("playing")); - switch (state) { case mojom::blink::MediaSessionPlaybackState::NONE: - return none_value; + return V8MediaSessionPlaybackState::Enum::kNone; case mojom::blink::MediaSessionPlaybackState::PAUSED: - return paused_value; + return V8MediaSessionPlaybackState::Enum::kPaused; case mojom::blink::MediaSessionPlaybackState::PLAYING: - return playing_value; + return V8MediaSessionPlaybackState::Enum::kPlaying; } - NOTREACHED_IN_MIGRATION(); - return WTF::g_empty_atom; + NOTREACHED(); } -mojom::blink::MediaSessionPlaybackState StringToMediaSessionPlaybackState( - const String& state_name) { - if (state_name == "none") - return mojom::blink::MediaSessionPlaybackState::NONE; - if (state_name == "paused") - return mojom::blink::MediaSessionPlaybackState::PAUSED; - DCHECK_EQ(state_name, "playing"); - return mojom::blink::MediaSessionPlaybackState::PLAYING; +mojom::blink::MediaSessionPlaybackState EnumToMediaSessionPlaybackState( + const V8MediaSessionPlaybackState::Enum& state) { + switch (state) { + case V8MediaSessionPlaybackState::Enum::kNone: + return mojom::blink::MediaSessionPlaybackState::NONE; + case V8MediaSessionPlaybackState::Enum::kPaused: + return mojom::blink::MediaSessionPlaybackState::PAUSED; + case V8MediaSessionPlaybackState::Enum::kPlaying: + return mojom::blink::MediaSessionPlaybackState::PLAYING; + } + NOTREACHED(); } } // anonymous namespace @@ -182,8 +160,9 @@ service_(navigator.GetExecutionContext()), client_receiver_(this, navigator.DomWindow()) {} -void MediaSession::setPlaybackState(const String& playback_state) { - playback_state_ = StringToMediaSessionPlaybackState(playback_state); +void MediaSession::setPlaybackState( + const V8MediaSessionPlaybackState& playback_state) { + playback_state_ = EnumToMediaSessionPlaybackState(playback_state.AsEnum()); RecalculatePositionState(/*was_set=*/false); @@ -192,8 +171,9 @@ service->SetPlaybackState(playback_state_); } -String MediaSession::playbackState() { - return MediaSessionPlaybackStateToString(playback_state_); +V8MediaSessionPlaybackState MediaSession::playbackState() { + return V8MediaSessionPlaybackState( + MediaSessionPlaybackStateToEnum(playback_state_)); } void MediaSession::setMetadata(MediaMetadata* metadata) { @@ -226,10 +206,11 @@ MediaMetadataSanitizer::SanitizeAndConvertToMojo(metadata_, context)); } -void MediaSession::setActionHandler(const String& action, +void MediaSession::setActionHandler(const V8MediaSessionAction& action, V8MediaSessionActionHandler* handler, ExceptionState& exception_state) { - if (action == "skipad") { + auto action_value = action.AsEnum(); + if (action_value == V8MediaSessionAction::Enum::kSkipad) { LocalDOMWindow* window = GetSupplementable()->DomWindow(); if (!RuntimeEnabledFeatures::SkipAdEnabled(window)) { exception_state.ThrowTypeError( @@ -242,7 +223,7 @@ } if (!RuntimeEnabledFeatures::MediaSessionEnterPictureInPictureEnabled()) { - if ("enterpictureinpicture" == action) { + if (action_value == V8MediaSessionAction::Enum::kEnterpictureinpicture) { exception_state.ThrowTypeError( "The provided value 'enterpictureinpicture'" " is not a valid enum " @@ -252,19 +233,20 @@ } if (handler) { - auto add_result = action_handlers_.Set(action, handler); + auto add_result = action_handlers_.Set(action_value, handler); if (!add_result.is_new_entry) return; - NotifyActionChange(action, ActionChangeType::kActionEnabled); + NotifyActionChange(action_value, ActionChangeType::kActionEnabled); } else { - if (action_handlers_.find(action) == action_handlers_.end()) + if (action_handlers_.find(action_value) == action_handlers_.end()) { return; + } - action_handlers_.erase(action); + action_handlers_.erase(action_value); - NotifyActionChange(action, ActionChangeType::kActionDisabled); + NotifyActionChange(action_value, ActionChangeType::kActionDisabled); } } @@ -358,21 +340,19 @@ } } -void MediaSession::NotifyActionChange(const String& action, +void MediaSession::NotifyActionChange(V8MediaSessionAction::Enum action, ActionChangeType type) { mojom::blink::MediaSessionService* service = GetService(); if (!service) return; - auto mojom_action = ActionNameToMojomAction(action); - DCHECK(mojom_action.has_value()); - + auto mojom_action = ActionEnumToMojomAction(action); switch (type) { case ActionChangeType::kActionEnabled: - service->EnableAction(mojom_action.value()); + service->EnableAction(mojom_action); break; case ActionChangeType::kActionDisabled: - service->DisableAction(mojom_action.value()); + service->DisableAction(mojom_action); break; } } @@ -448,16 +428,16 @@ window->GetFrame(), mojom::blink::UserActivationNotificationType::kInteraction); - auto& name = MojomActionToActionName(action); + auto v8_action = MojomActionToActionEnum(action); - auto iter = action_handlers_.find(name); + auto iter = action_handlers_.find(v8_action); if (iter == action_handlers_.end()) return; const auto* blink_details = mojo::TypeConverter<const blink::MediaSessionActionDetails*, blink::mojom::blink::MediaSessionActionDetailsPtr>:: - ConvertWithActionName(details, name); + ConvertWithV8Action(details, v8_action); iter->value->InvokeAndReportException(this, blink_details); }
diff --git a/third_party/blink/renderer/modules/mediasession/media_session.h b/third_party/blink/renderer/modules/mediasession/media_session.h index 3434af0b..d247bbc 100644 --- a/third_party/blink/renderer/modules/mediasession/media_session.h +++ b/third_party/blink/renderer/modules/mediasession/media_session.h
@@ -8,6 +8,7 @@ #include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/remote.h" #include "third_party/blink/public/mojom/mediasession/media_session.mojom-blink.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_media_session_action.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h" @@ -30,6 +31,7 @@ class MediaPositionState; class Navigator; class V8MediaSessionActionHandler; +class V8MediaSessionPlaybackState; class MODULES_EXPORT MediaSession final : public ScriptWrappable, @@ -42,13 +44,13 @@ static MediaSession* mediaSession(Navigator&); explicit MediaSession(Navigator&); - void setPlaybackState(const String&); - String playbackState(); + void setPlaybackState(const V8MediaSessionPlaybackState&); + V8MediaSessionPlaybackState playbackState(); void setMetadata(MediaMetadata*); MediaMetadata* metadata() const; - void setActionHandler(const String& action, + void setActionHandler(const V8MediaSessionAction& action, V8MediaSessionActionHandler*, ExceptionState&); @@ -73,7 +75,7 @@ kActionDisabled, }; - void NotifyActionChange(const String& action, ActionChangeType); + void NotifyActionChange(V8MediaSessionAction::Enum action, ActionChangeType); base::TimeDelta GetPositionNow() const; @@ -92,7 +94,8 @@ media_session::mojom::blink::MediaPositionPtr position_state_; double declared_playback_rate_ = 0.0; Member<MediaMetadata> metadata_; - HeapHashMap<String, Member<V8MediaSessionActionHandler>> action_handlers_; + HeapHashMap<V8MediaSessionAction::Enum, Member<V8MediaSessionActionHandler>> + action_handlers_; HeapMojoRemote<mojom::blink::MediaSessionService> service_; HeapMojoReceiver<blink::mojom::blink::MediaSessionClient, MediaSession> client_receiver_;
diff --git a/third_party/blink/renderer/modules/mediasession/media_session_test.cc b/third_party/blink/renderer/modules/mediasession/media_session_test.cc index 55a5275..9f5879d 100644 --- a/third_party/blink/renderer/modules/mediasession/media_session_test.cc +++ b/third_party/blink/renderer/modules/mediasession/media_session_test.cc
@@ -9,6 +9,7 @@ #include "mojo/public/cpp/bindings/remote.h" #include "testing/gmock/include/gmock/gmock.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_media_position_state.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_media_session_playback_state.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/testing/page_test_base.h" @@ -106,8 +107,8 @@ exception_state); } - void SetPlaybackState(const String& state) { - media_session_->setPlaybackState(state); + void SetPlaybackState(V8MediaSessionPlaybackState::Enum state) { + media_session_->setPlaybackState(V8MediaSessionPlaybackState(state)); } MockMediaSessionService& service() { return *mock_service_.get(); } @@ -134,7 +135,7 @@ loop.Quit(); })); - SetPlaybackState("none"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kNone); SetPositionState(10, 5, 1.0); loop.Run(); } @@ -151,7 +152,7 @@ loop.Quit(); })); - SetPlaybackState("paused"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kPaused); SetPositionState(10, 5, 1.0); loop.Run(); } @@ -168,7 +169,7 @@ loop.Quit(); })); - SetPlaybackState("playing"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kPlaying); SetPositionState(10, 5, 1.0); loop.Run(); } @@ -185,13 +186,13 @@ loop.Quit(); })); - SetPlaybackState("none"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kNone); SetPositionState(std::numeric_limits<double>::infinity(), 5, 1.0); loop.Run(); } TEST_F(MediaSessionTest, PlaybackPositionState_NaNDuration) { - SetPlaybackState("none"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kNone); SetPositionStateThrowsException(std::nan("10"), 5, 1.0); } @@ -208,7 +209,7 @@ loop.Quit(); })); - SetPlaybackState("paused"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kPaused); SetPositionState(10, 5, 1.0); loop.Run(); } @@ -239,7 +240,7 @@ })); SetPositionState(10, 5, 1.0); - SetPlaybackState("none"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kNone); loop.Run(); } @@ -274,7 +275,7 @@ loop.Quit(); })); - SetPlaybackState("paused"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kPaused); loop.Run(); } @@ -292,7 +293,7 @@ loop.Quit(); })); - SetPlaybackState("none"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kNone); loop.Run(); } } @@ -328,7 +329,7 @@ loop.Quit(); })); - SetPlaybackState("paused"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kPaused); loop.Run(); } @@ -346,7 +347,7 @@ loop.Quit(); })); - SetPlaybackState("playing"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kPlaying); loop.Run(); } } @@ -364,7 +365,7 @@ })); SetPositionState(10, 5, 1.0); - SetPlaybackState("playing"); + SetPlaybackState(V8MediaSessionPlaybackState::Enum::kPlaying); loop.Run(); }
diff --git a/third_party/blink/renderer/modules/mediasession/media_session_type_converters.cc b/third_party/blink/renderer/modules/mediasession/media_session_type_converters.cc index 52aeea55..2b1069a 100644 --- a/third_party/blink/renderer/modules/mediasession/media_session_type_converters.cc +++ b/third_party/blink/renderer/modules/mediasession/media_session_type_converters.cc
@@ -9,10 +9,9 @@ const blink::MediaSessionActionDetails* TypeConverter<const blink::MediaSessionActionDetails*, blink::mojom::blink::MediaSessionActionDetailsPtr>:: - ConvertWithActionName( + ConvertWithV8Action( const blink::mojom::blink::MediaSessionActionDetailsPtr& details, - const WTF::AtomicString& action_name) { - DCHECK(!action_name.empty()); + blink::V8MediaSessionAction::Enum action) { blink::MediaSessionActionDetails* blink_details; if (details && details->is_seek_to()) { @@ -24,7 +23,7 @@ blink_details = blink::MediaSessionActionDetails::Create(); } - blink_details->setAction(action_name); + blink_details->setAction(action); return blink_details; }
diff --git a/third_party/blink/renderer/modules/mediasession/media_session_type_converters.h b/third_party/blink/renderer/modules/mediasession/media_session_type_converters.h index 62baee8..ca2d6f1f 100644 --- a/third_party/blink/renderer/modules/mediasession/media_session_type_converters.h +++ b/third_party/blink/renderer/modules/mediasession/media_session_type_converters.h
@@ -15,9 +15,9 @@ template <> struct TypeConverter<const blink::MediaSessionActionDetails*, blink::mojom::blink::MediaSessionActionDetailsPtr> { - static const blink::MediaSessionActionDetails* ConvertWithActionName( + static const blink::MediaSessionActionDetails* ConvertWithV8Action( const blink::mojom::blink::MediaSessionActionDetailsPtr& details, - const WTF::AtomicString& action_name); + blink::V8MediaSessionAction::Enum action); }; template <>
diff --git a/third_party/blink/renderer/modules/notifications/notification_data.cc b/third_party/blink/renderer/modules/notifications/notification_data.cc index 52d4391..96158a5 100644 --- a/third_party/blink/renderer/modules/notifications/notification_data.cc +++ b/third_party/blink/renderer/modules/notifications/notification_data.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/notifications/notification_data.h" +#include "base/notreached.h" #include "base/numerics/safe_conversions.h" #include "third_party/blink/public/common/notifications/notification_constants.h" #include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h" @@ -25,24 +26,27 @@ namespace { mojom::blink::NotificationDirection ToDirectionEnumValue( - const String& direction) { - if (direction == "ltr") - return mojom::blink::NotificationDirection::LEFT_TO_RIGHT; - if (direction == "rtl") - return mojom::blink::NotificationDirection::RIGHT_TO_LEFT; - if (direction == "auto") - return mojom::blink::NotificationDirection::AUTO; - NOTREACHED_IN_MIGRATION() << "Unknown direction: " << direction; - return mojom::blink::NotificationDirection::AUTO; + const V8NotificationDirection& direction) { + switch (direction.AsEnum()) { + case V8NotificationDirection::Enum::kLtr: + return mojom::blink::NotificationDirection::LEFT_TO_RIGHT; + case V8NotificationDirection::Enum::kRtl: + return mojom::blink::NotificationDirection::RIGHT_TO_LEFT; + case V8NotificationDirection::Enum::kAuto: + return mojom::blink::NotificationDirection::AUTO; + } + NOTREACHED(); } -mojom::blink::NotificationScenario ToScenarioEnumValue(const String& scenario) { - if (scenario == "default") - return mojom::blink::NotificationScenario::DEFAULT; - if (scenario == "incoming-call") - return mojom::blink::NotificationScenario::INCOMING_CALL; - NOTREACHED_IN_MIGRATION() << "Unknown scenario: " << scenario; - return mojom::blink::NotificationScenario::DEFAULT; +mojom::blink::NotificationScenario ToScenarioEnumValue( + const V8NotificationScenario& scenario) { + switch (scenario.AsEnum()) { + case V8NotificationScenario::Enum::kDefault: + return mojom::blink::NotificationScenario::DEFAULT; + case V8NotificationScenario::Enum::kIncomingCall: + return mojom::blink::NotificationScenario::INCOMING_CALL; + } + NOTREACHED(); } KURL CompleteURL(ExecutionContext* context, const String& string_url) {
diff --git a/third_party/blink/renderer/modules/payments/payment_request_event.idl b/third_party/blink/renderer/modules/payments/payment_request_event.idl index 3e26c35..b1a2393 100644 --- a/third_party/blink/renderer/modules/payments/payment_request_event.idl +++ b/third_party/blink/renderer/modules/payments/payment_request_event.idl
@@ -21,7 +21,7 @@ [CallWith=ScriptState] Promise<WindowClient?> openWindow(USVString url); [CallWith=ScriptState, RaisesException] Promise<PaymentRequestDetailsUpdate?> changePaymentMethod(DOMString methodName, optional object? methodDetails = null); - [CallWith=ScriptState, RaisesException] void respondWith(Promise<PaymentResponse> response); + [CallWith=ScriptState, RaisesException] void respondWith(Promise<PaymentHandlerResponse> response); [CallWith=ScriptState, RaisesException] Promise<PaymentRequestDetailsUpdate?> changeShippingAddress(AddressInit shippingAddress); [CallWith=ScriptState, RaisesException] Promise<PaymentRequestDetailsUpdate?> changeShippingOption(DOMString shippingOption); };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.cc b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.cc index 83b1643..3eeec56 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.cc
@@ -436,28 +436,12 @@ buffered_amount_low_threshold_ = threshold; } -String RTCDataChannel::binaryType() const { - switch (binary_type_) { - case kBinaryTypeBlob: - return "blob"; - case kBinaryTypeArrayBuffer: - return "arraybuffer"; - } - NOTREACHED_IN_MIGRATION(); - return String(); +V8BinaryType RTCDataChannel::binaryType() const { + return V8BinaryType(binary_type_); } -void RTCDataChannel::setBinaryType(const String& binary_type, - ExceptionState& exception_state) { - if (binary_type == "arraybuffer") { - binary_type_ = kBinaryTypeArrayBuffer; - return; - } - if (binary_type == "blob") { - binary_type_ = kBinaryTypeBlob; - return; - } - NOTREACHED(); +void RTCDataChannel::setBinaryType(const V8BinaryType& binary_type) { + binary_type_ = binary_type.AsEnum(); } bool RTCDataChannel::ValidateSendLength(uint64_t length, @@ -735,21 +719,23 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (buffer.binary) { - if (binary_type_ == kBinaryTypeBlob) { - auto blob_data = std::make_unique<BlobData>(); - blob_data->AppendBytes(base::make_span(buffer.data)); - uint64_t blob_size = blob_data->length(); - auto* blob = MakeGarbageCollected<Blob>( - BlobDataHandle::Create(std::move(blob_data), blob_size)); - DispatchEvent(*MessageEvent::Create(blob)); - return; + switch (binary_type_) { + case V8BinaryType::Enum::kBlob: { + auto blob_data = std::make_unique<BlobData>(); + blob_data->AppendBytes(base::make_span(buffer.data)); + uint64_t blob_size = blob_data->length(); + auto* blob = MakeGarbageCollected<Blob>( + BlobDataHandle::Create(std::move(blob_data), blob_size)); + DispatchEvent(*MessageEvent::Create(blob)); + return; + } + case V8BinaryType::Enum::kArraybuffer: { + DOMArrayBuffer* dom_buffer = DOMArrayBuffer::Create(buffer.data); + DispatchEvent(*MessageEvent::Create(dom_buffer)); + return; + } } - if (binary_type_ == kBinaryTypeArrayBuffer) { - DOMArrayBuffer* dom_buffer = DOMArrayBuffer::Create(buffer.data); - DispatchEvent(*MessageEvent::Create(dom_buffer)); - return; - } - NOTREACHED_IN_MIGRATION(); + NOTREACHED(); } else { String text = buffer.data.size() > 0
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.h b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.h index 48d70fd..9a0879b 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.h +++ b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.h
@@ -30,6 +30,7 @@ #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_checker.h" #include "third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_binary_type.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" #include "third_party/blink/renderer/core/fileapi/file_error.h" @@ -87,8 +88,8 @@ unsigned bufferedAmountLowThreshold() const; void setBufferedAmountLowThreshold(unsigned); - String binaryType() const; - void setBinaryType(const String&, ExceptionState&); + V8BinaryType binaryType() const; + void setBinaryType(const V8BinaryType&); String priority() const; @@ -197,8 +198,7 @@ webrtc::DataChannelInterface::DataState state_ = webrtc::DataChannelInterface::kConnecting; - enum BinaryType { kBinaryTypeBlob, kBinaryTypeArrayBuffer }; - BinaryType binary_type_ = kBinaryTypeArrayBuffer; + V8BinaryType::Enum binary_type_ = V8BinaryType::Enum::kArraybuffer; FRIEND_TEST_ALL_PREFIXES(RTCDataChannelTest, Open); FRIEND_TEST_ALL_PREFIXES(RTCDataChannelTest, Close);
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.idl b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.idl index 547d2ba..39622b6f 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.idl +++ b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.idl
@@ -55,7 +55,7 @@ attribute EventHandler onclose; void close(); attribute EventHandler onmessage; - [RaisesException=Setter] attribute BinaryType binaryType; + attribute BinaryType binaryType; [RaisesException] void send(USVString data); [RaisesException] void send(Blob data); [RaisesException] void send(ArrayBuffer data);
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc index 2e030b3..74a49a5c 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
@@ -234,13 +234,14 @@ transport_ = transport; } -String RTCRtpReceiver::TransceiverDirection() { +V8RTCRtpTransceiverDirection RTCRtpReceiver::TransceiverDirection() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); // `transceiver_` is always initialized to a valid value. return transceiver_->direction(); } -String RTCRtpReceiver::TransceiverCurrentDirection() { +std::optional<V8RTCRtpTransceiverDirection> +RTCRtpReceiver::TransceiverCurrentDirection() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); // `transceiver_` is always initialized to a valid value. return transceiver_->currentDirection();
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.h b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.h index 8abba4d..e15009a 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.h +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.h
@@ -13,6 +13,7 @@ #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_contributing_source.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_receive_parameters.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_synchronization_source.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_transceiver_direction.h" #include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" #include "third_party/blink/renderer/modules/mediastream/media_stream.h" #include "third_party/blink/renderer/modules/mediastream/media_stream_track.h" @@ -95,8 +96,8 @@ void set_transceiver(RTCRtpTransceiver*); void set_transport(RTCDtlsTransport*); - String TransceiverDirection(); - String TransceiverCurrentDirection(); + V8RTCRtpTransceiverDirection TransceiverDirection(); + std::optional<V8RTCRtpTransceiverDirection> TransceiverCurrentDirection(); // ExecutionContextLifecycleObserver void ContextDestroyed() override;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transform.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transform.cc index b5250348..59438b6 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transform.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transform.cc
@@ -55,8 +55,15 @@ return event; } -bool IsValidReceiverDirection(const String& direction) { - return (direction == "sendrecv" || direction == "recvonly"); +bool IsValidReceiverDirection( + std::optional<V8RTCRtpTransceiverDirection> direction) { + if (!direction.has_value()) { + return false; + } + return direction.value().AsEnum() == + V8RTCRtpTransceiverDirection::Enum::kSendrecv || + direction.value().AsEnum() == + V8RTCRtpTransceiverDirection::Enum::kRecvonly; } } // namespace
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.cc index cd1cc49..986eccae 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.cc
@@ -19,70 +19,62 @@ namespace { -String TransceiverDirectionToString( +V8RTCRtpTransceiverDirection::Enum TransceiverDirectionToEnum( const webrtc::RtpTransceiverDirection& direction) { switch (direction) { case webrtc::RtpTransceiverDirection::kSendRecv: - return "sendrecv"; + return V8RTCRtpTransceiverDirection::Enum::kSendrecv; case webrtc::RtpTransceiverDirection::kSendOnly: - return "sendonly"; + return V8RTCRtpTransceiverDirection::Enum::kSendonly; case webrtc::RtpTransceiverDirection::kRecvOnly: - return "recvonly"; + return V8RTCRtpTransceiverDirection::Enum::kRecvonly; case webrtc::RtpTransceiverDirection::kInactive: - return "inactive"; + return V8RTCRtpTransceiverDirection::Enum::kInactive; case webrtc::RtpTransceiverDirection::kStopped: - return "stopped"; - default: - NOTREACHED_IN_MIGRATION(); - return String(); + return V8RTCRtpTransceiverDirection::Enum::kStopped; } + NOTREACHED(); } -String OptionalTransceiverDirectionToString( +std::optional<V8RTCRtpTransceiverDirection::Enum> +OptionalTransceiverDirectionToEnum( const std::optional<webrtc::RtpTransceiverDirection>& direction) { - return direction ? TransceiverDirectionToString(*direction) - : String(); // null + if (!direction) { + return std::nullopt; + } + return TransceiverDirectionToEnum(*direction); } -bool TransceiverDirectionFromString( - const String& direction_string, +bool TransceiverDirectionFromEnum( + V8RTCRtpTransceiverDirection::Enum direction, std::optional<webrtc::RtpTransceiverDirection>* direction_out) { - if (!direction_string) { - *direction_out = std::nullopt; - return true; + switch (direction) { + case V8RTCRtpTransceiverDirection::Enum::kSendrecv: + *direction_out = webrtc::RtpTransceiverDirection::kSendRecv; + return true; + case V8RTCRtpTransceiverDirection::Enum::kSendonly: + *direction_out = webrtc::RtpTransceiverDirection::kSendOnly; + return true; + case V8RTCRtpTransceiverDirection::Enum::kRecvonly: + *direction_out = webrtc::RtpTransceiverDirection::kRecvOnly; + return true; + case V8RTCRtpTransceiverDirection::Enum::kInactive: + *direction_out = webrtc::RtpTransceiverDirection::kInactive; + return true; + case V8RTCRtpTransceiverDirection::Enum::kStopped: + return false; } - if (direction_string == "sendrecv") { - *direction_out = webrtc::RtpTransceiverDirection::kSendRecv; - return true; - } - if (direction_string == "sendonly") { - *direction_out = webrtc::RtpTransceiverDirection::kSendOnly; - return true; - } - if (direction_string == "recvonly") { - *direction_out = webrtc::RtpTransceiverDirection::kRecvOnly; - return true; - } - if (direction_string == "inactive") { - *direction_out = webrtc::RtpTransceiverDirection::kInactive; - return true; - } - return false; + NOTREACHED(); } -bool OptionalTransceiverDirectionFromStringWithStopped( - const String& direction_string, +bool OptionalTransceiverDirectionFromEnumWithStopped( + V8RTCRtpTransceiverDirection::Enum direction, std::optional<webrtc::RtpTransceiverDirection>* direction_out) { - if (direction_string == "stopped") { + if (direction == V8RTCRtpTransceiverDirection::Enum::kStopped) { *direction_out = webrtc::RtpTransceiverDirection::kStopped; return true; } - std::optional<webrtc::RtpTransceiverDirection> base_direction; - bool result = - TransceiverDirectionFromString(direction_string, &base_direction); - if (base_direction) - *direction_out = *base_direction; - return result; + return TransceiverDirectionFromEnum(direction, direction_out); } } // namespace @@ -94,7 +86,7 @@ webrtc::RtpTransceiverInit webrtc_init; std::optional<webrtc::RtpTransceiverDirection> direction; if (init->hasDirection() && - TransceiverDirectionFromString(init->direction(), &direction) && + TransceiverDirectionFromEnum(init->direction().AsEnum(), &direction) && direction) { webrtc_init.direction = *direction; } @@ -144,17 +136,18 @@ bool RTCRtpTransceiver::stopped() const { // Non-standard attribute reflecting being "stopping", whether or not we are // "stopped" per current_direction_. - return direction_ == "stopped"; + return direction_ == V8RTCRtpTransceiverDirection::Enum::kStopped; } -String RTCRtpTransceiver::direction() const { - return direction_; +V8RTCRtpTransceiverDirection RTCRtpTransceiver::direction() const { + return V8RTCRtpTransceiverDirection(direction_); } -void RTCRtpTransceiver::setDirection(String direction, - ExceptionState& exception_state) { +void RTCRtpTransceiver::setDirection( + const V8RTCRtpTransceiverDirection& direction, + ExceptionState& exception_state) { std::optional<webrtc::RtpTransceiverDirection> webrtc_direction; - if (!TransceiverDirectionFromString(direction, &webrtc_direction) || + if (!TransceiverDirectionFromEnum(direction.AsEnum(), &webrtc_direction) || !webrtc_direction) { exception_state.ThrowTypeError("Invalid RTCRtpTransceiverDirection."); return; @@ -164,12 +157,12 @@ "The peer connection is closed."); return; } - if (current_direction_ == "stopped") { + if (current_direction_ == V8RTCRtpTransceiverDirection::Enum::kStopped) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, "The transceiver is stopped."); return; } - if (direction_ == "stopped") { + if (direction_ == V8RTCRtpTransceiverDirection::Enum::kStopped) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, "The transceiver is stopping."); return; @@ -183,20 +176,24 @@ UpdateMembers(); } -String RTCRtpTransceiver::currentDirection() const { - return current_direction_; +std::optional<V8RTCRtpTransceiverDirection> +RTCRtpTransceiver::currentDirection() const { + if (!current_direction_) { + return std::nullopt; + } + return V8RTCRtpTransceiverDirection(current_direction_.value()); } void RTCRtpTransceiver::UpdateMembers() { - if (current_direction_ == "stopped") { + if (current_direction_ == V8RTCRtpTransceiverDirection::Enum::kStopped) { // No need to update, stopped is a permanent state. Also: on removal, the // state of `platform_transceiver_` becomes obsolete and may not reflect // being stopped, so let's not update the members anymore. return; } mid_ = platform_transceiver_->Mid(); - direction_ = TransceiverDirectionToString(platform_transceiver_->Direction()); - current_direction_ = OptionalTransceiverDirectionToString( + direction_ = TransceiverDirectionToEnum(platform_transceiver_->Direction()); + current_direction_ = OptionalTransceiverDirectionToEnum( platform_transceiver_->CurrentDirection()); fired_direction_ = platform_transceiver_->FiredDirection(); } @@ -205,9 +202,9 @@ receiver_->set_streams(MediaStreamVector()); mid_ = String(); direction_ = - TransceiverDirectionToString(webrtc::RtpTransceiverDirection::kStopped); + TransceiverDirectionToEnum(webrtc::RtpTransceiverDirection::kStopped); current_direction_ = - TransceiverDirectionToString(webrtc::RtpTransceiverDirection::kStopped); + TransceiverDirectionToEnum(webrtc::RtpTransceiverDirection::kStopped); fired_direction_ = webrtc::RtpTransceiverDirection::kStopped; } @@ -329,8 +326,8 @@ } std::optional<webrtc::RtpTransceiverDirection> direction; - if (!OptionalTransceiverDirectionFromStringWithStopped(hdr_ext->direction(), - &direction) || + if (!OptionalTransceiverDirectionFromEnumWithStopped( + hdr_ext->direction().AsEnum(), &direction) || !direction) { exception_state.ThrowTypeError("Invalid RTCRtpTransceiverDirection."); return; @@ -360,7 +357,7 @@ HeapVector<Member<RTCRtpHeaderExtensionCapability>> exts; for (const auto& webrtc_ext : webrtc_exts) { auto* ext = MakeGarbageCollected<RTCRtpHeaderExtensionCapability>(); - ext->setDirection(TransceiverDirectionToString(webrtc_ext.direction)); + ext->setDirection(TransceiverDirectionToEnum(webrtc_ext.direction)); ext->setUri(webrtc_ext.uri.c_str()); exts.push_back(ext); } @@ -373,7 +370,7 @@ HeapVector<Member<RTCRtpHeaderExtensionCapability>> exts; for (const auto& webrtc_ext : webrtc_exts) { auto* ext = MakeGarbageCollected<RTCRtpHeaderExtensionCapability>(); - ext->setDirection(TransceiverDirectionToString(webrtc_ext.direction)); + ext->setDirection(TransceiverDirectionToEnum(webrtc_ext.direction)); ext->setUri(webrtc_ext.uri.c_str()); exts.push_back(ext); }
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.h b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.h index 0206e30..d08d2dc 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.h +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver.h
@@ -8,6 +8,7 @@ #include <optional> #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_codec_capability.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_transceiver_direction.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_transceiver_init.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" @@ -45,9 +46,10 @@ RTCRtpReceiver* receiver() const; bool stopped() const; // Enum type RTCRtpTransceiverDirection - String direction() const; - void setDirection(String direction, ExceptionState&); - String currentDirection() const; + V8RTCRtpTransceiverDirection direction() const; + void setDirection(const V8RTCRtpTransceiverDirection& direction, + ExceptionState&); + std::optional<V8RTCRtpTransceiverDirection> currentDirection() const; void stop(ExceptionState&); void setCodecPreferences( const HeapVector<Member<RTCRtpCodecCapability>>& codecs, @@ -89,8 +91,8 @@ Member<RTCRtpSender> sender_; Member<RTCRtpReceiver> receiver_; String mid_; - String direction_; - String current_direction_; + V8RTCRtpTransceiverDirection::Enum direction_; + std::optional<V8RTCRtpTransceiverDirection::Enum> current_direction_; std::optional<webrtc::RtpTransceiverDirection> fired_direction_; };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_session_description.cc b/third_party/blink/renderer/modules/peerconnection/rtc_session_description.cc index 4d52dcd..cbecaf1 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_session_description.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_session_description.cc
@@ -44,7 +44,7 @@ const RTCSessionDescriptionInit* description_init_dict) { String type; if (description_init_dict->hasType()) - type = description_init_dict->type(); + type = String(description_init_dict->type()); else UseCounter::Count(context, WebFeature::kRTCSessionDescriptionInitNoType);
diff --git a/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.cc b/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.cc index 5818579..05ce62e 100644 --- a/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.cc +++ b/third_party/blink/renderer/modules/shared_storage/shared_storage_worklet_global_scope.cc
@@ -428,7 +428,7 @@ return; } - v8::Maybe<ScriptPromiseUntyped> result = registered_run_function->Invoke( + v8::Maybe<ScriptPromise<IDLAny>> result = registered_run_function->Invoke( instance.Get(isolate), urls_param, *data_param); if (try_catch.HasCaught()) { @@ -449,7 +449,7 @@ auto* unresolved_request = MakeGarbageCollected<UnresolvedSelectURLRequest>( urls.size(), std::move(combined_operation_completion_cb)); - ScriptPromiseUntyped promise = result.FromJust(); + ScriptPromise<IDLAny> promise = result.FromJust(); auto* success_callback = MakeGarbageCollected<ScriptFunction>( script_state, MakeGarbageCollected<SelectURLResolutionSuccessCallback>( @@ -504,7 +504,7 @@ return; } - v8::Maybe<ScriptPromiseUntyped> result = + v8::Maybe<ScriptPromise<IDLAny>> result = registered_run_function->Invoke(instance.Get(isolate), *data_param); if (try_catch.HasCaught()) { @@ -523,7 +523,7 @@ auto* unresolved_request = MakeGarbageCollected<UnresolvedRunRequest>( std::move(combined_operation_completion_cb)); - ScriptPromiseUntyped promise = result.FromJust(); + ScriptPromise<IDLAny> promise = result.FromJust(); auto* success_callback = MakeGarbageCollected<ScriptFunction>( script_state,
diff --git a/third_party/blink/renderer/modules/smart_card/smart_card_connection.cc b/third_party/blink/renderer/modules/smart_card/smart_card_connection.cc index 0b3db7cc..9619943 100644 --- a/third_party/blink/renderer/modules/smart_card/smart_card_connection.cc +++ b/third_party/blink/renderer/modules/smart_card/smart_card_connection.cc
@@ -99,7 +99,7 @@ v8::ExceptionContext::kOperation, "SmartCardConnection", "startTransaction"); - if (value.IsUndefined()) { + if (value.IsUndefined() || value.IsNull()) { connection_->OnTransactionCallbackDone(SmartCardDisposition::kReset); return ScriptValue(); } @@ -685,8 +685,7 @@ ScriptState::Scope scope(script_state); v8::TryCatch try_catch(script_state->GetIsolate()); - v8::Maybe<ScriptPromiseUntyped> transaction_result = - transaction_callback->Invoke(nullptr); + auto transaction_result = transaction_callback->Invoke(nullptr); if (transaction_result.IsNothing()) { if (try_catch.HasCaught()) { @@ -702,7 +701,7 @@ return; } - ScriptPromiseUntyped promise = transaction_result.FromJust(); + auto promise = transaction_result.FromJust(); promise.Then(MakeGarbageCollected<ScriptFunction>( script_state, MakeGarbageCollected<TransactionFulfilledFunction>(this)),
diff --git a/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc b/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc index 6ffc6ec..c2675e5 100644 --- a/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc +++ b/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc
@@ -245,13 +245,13 @@ std::move(callback).Run(); }; - const auto& mailbox = dst_frame->mailbox_holder(0).mailbox; + const auto mailbox = dst_frame->mailbox_holder(0).mailbox; sii->CopyToGpuMemoryBufferAsync( blit_done_sync_token, mailbox, base::BindOnce(std::move(copy_to_gmb_done_lambda), std::move(callback))); } else { - const auto& mailbox = dst_frame->mailbox_holder(/*plane=*/0).mailbox; + const auto mailbox = dst_frame->mailbox_holder(/*texture_index=*/0).mailbox; sii->CopyToGpuMemoryBuffer(blit_done_sync_token, mailbox); }
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests index 3327a21..5d5d864c 100644 --- a/third_party/blink/web_tests/SlowTests +++ b/third_party/blink/web_tests/SlowTests
@@ -1487,3 +1487,8 @@ # Slow because it contains a large number of subtests crbug.com/369600187 external/wpt/css/css-anchor-position/anchor-size-parse-valid.html [ Slow ] + +# Slow because it needs to run wait for up to 100 updates, one of which will +# introduce a 5-10s delay until the following one. +crbug.com/370726578 external/wpt/compute-pressure/compute_pressure_rate_obfuscation_mitigation_triggered.https.window.html?globalScope=dedicated_worker [ Slow ] +crbug.com/370726578 external/wpt/compute-pressure/compute_pressure_rate_obfuscation_mitigation_triggered.https.window.html?globalScope=window [ Slow ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index a2a5e71..45c477d 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -2619,6 +2619,7 @@ crbug.com/370032367 virtual/media-foundation-for-clear-dcomp/external/wpt/media-source/last-frame-dimensions.html [ Timeout ] crbug.com/369652659 [ Mac15-arm64 ] external/wpt/webrtc/RTCPeerConnection-getStats-timestamp.https.html [ Skip Timeout ] crbug.com/369652659 [ Mac15 ] external/wpt/webrtc/RTCPeerConnection-getStats-timestamp.https.html [ Skip Timeout ] +crbug.com/369956891 [ Mac12 ] virtual/threaded/external/wpt/css/css-backgrounds/background-size/vector/tall--auto--percent-width-nonpercent-height.html [ Failure ] crbug.com/369956891 [ Mac14 ] virtual/threaded/external/wpt/css/css-backgrounds/background-size/vector/tall--auto--percent-width-nonpercent-height.html [ Failure ] crbug.com/369956891 [ Mac14 ] virtual/threaded/external/wpt/css/css-backgrounds/background-size/vector/tall--cover--height.html [ Failure ] crbug.com/369956891 [ Mac14 ] virtual/threaded/external/wpt/css/css-backgrounds/background-size/vector/wide--12px-auto--percent-width-percent-height.html [ Failure ] @@ -2633,10 +2634,13 @@ crbug.com/369685643 [ Mac12 ] virtual/view-transition-mpa-serialization/external/wpt/css/css-view-transitions/animating-new-content-subset.html [ Failure ] crbug.com/369685643 [ Mac14 ] virtual/view-transition-mpa-serialization/external/wpt/css/css-view-transitions/animating-new-content-subset.html [ Failure ] crbug.com/369668292 [ Mac12 ] virtual/threaded/external/wpt/css/css-view-transitions/animating-new-content-subset.html [ Failure ] +crbug.com/369668292 [ Mac13 ] virtual/threaded/external/wpt/css/css-view-transitions/animating-new-content-subset.html [ Failure ] +crbug.com/369668292 [ Mac14 ] virtual/threaded/external/wpt/css/css-view-transitions/animating-new-content-subset.html [ Failure ] crbug.com/369236541 external/wpt/css/css-text-decor/text-underline-position-auto-001.html [ Failure ] crbug.com/369236542 [ Mac13-arm64 ] virtual/fsa-incognito/external/wpt/fs/FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker.html [ Timeout ] crbug.com/369270133 [ Mac12 ] virtual/view-transition-wide-gamut/external/wpt/css/css-view-transitions/animating-new-content-subset.html [ Failure ] crbug.com/369270133 [ Mac14 ] virtual/view-transition-wide-gamut/external/wpt/css/css-view-transitions/animating-new-content-subset.html [ Failure ] +crbug.com/369270133 [ Mac15 ] virtual/view-transition-wide-gamut/external/wpt/css/css-view-transitions/animating-new-content-subset.html [ Failure ] crbug.com/368657256 external/wpt/css/css-text-decor/text-emphasis-position-auto-001.html [ Failure ] crbug.com/368512272 [ Mac12 ] external/wpt/fs/FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker.html [ Timeout ] crbug.com/368512272 [ Mac12 ] external/wpt/fs/FileSystemDirectoryHandle-getDirectoryHandle.https.any.html [ Failure Pass ] @@ -7070,7 +7074,6 @@ crbug.com/40943541 [ Win11-arm64 ] external/wpt/webtransport/echo-large-bidirectional-streams.https.any.html [ Failure Pass Timeout ] # Flaky crbug.com/326123178 accessibility/selection-change-notification-on-selection-removed.html [ Failure Pass Timeout ] # Flaky crbug.com/326123298 virtual/third-party-cookie-phaseout-enabled/external/wpt/cookies/third-party-cookies/third-party-cookie-heuristics.tentative.https.html [ Failure Pass Timeout ] -crbug.com/40899204 accessibility/scroll-div-horiz-sends-notification.html [ Failure Pass Timeout ] # Flaky # Flaky tests: 2024-02-21 crbug.com/40271908 virtual/fenced-frame-mparch/external/wpt/fenced-frame/navigate-ancestor-top-level-fenced-frame.https.html [ Failure Pass Timeout ] # Flaky
diff --git a/third_party/blink/web_tests/accessibility/scroll-div-horiz-sends-notification.html b/third_party/blink/web_tests/accessibility/scroll-div-horiz-sends-notification.html deleted file mode 100644 index 05afb57..0000000 --- a/third_party/blink/web_tests/accessibility/scroll-div-horiz-sends-notification.html +++ /dev/null
@@ -1,59 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <script src="../resources/testharness.js"></script> - <script src="../resources/testharnessreport.js"></script> -<style> -.container { - padding: 100px; - margin: 100px; - border: 1px solid #000; - height: 900px; - overflow: scroll; -} -.inner { - width: 2000px; -} -.bigbutton { - display:inline-block; - width: 600px; - height: 600px; -} -</style> -</head> -<body> - -<div id="container" class="container"> - <div class="inner"> - <button class="bigbutton">One</button> - <button class="bigbutton">Two</button> - <button class="bigbutton">Three</button> - </div> -</div> - -<script> - -async_test((t) => { - var container = document.getElementById('container'); - - accessibilityController.addNotificationListener(t.step_func((target, notification) => { - if (target.role == 'AXRole: AXGenericContainer') { - console.log('Got notification on container div'); - assert_equals(container.scrollLeft, 500); - t.done(); - } - })); - - window.setTimeout(function() { - container.scrollLeft = 500; - }, 0); - - window.setTimeout(t.step_func_done(() => { - assert_unreached(); - }), 200); -}, "This test ensures that scrolling the window sends a notification."); - -</script> - -</body> -</html>
diff --git a/third_party/blink/web_tests/accessibility/scroll-div-sends-notification.html b/third_party/blink/web_tests/accessibility/scroll-div-sends-notification.html deleted file mode 100644 index 53f292c..0000000 --- a/third_party/blink/web_tests/accessibility/scroll-div-sends-notification.html +++ /dev/null
@@ -1,69 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<style> -.container { - padding: 100px; - margin: 100px; - border: 1px solid #000; - height: 900px; - overflow: scroll; -} -.bigbutton { - display:block; - width: 600px; - height: 600px; -} -</style> -</head> -<body> - -<div id="container" class="container" role="group"> - <button class="bigbutton">One</button> - <button class="bigbutton">Two</button> - <button class="bigbutton">Three</button> -</div> - -<script> - -function scrollPromise(scroller, scrollPosition) { - return new Promise(resolve => { - scroller.addEventListener('scrollend', resolve, { once: true }); - // Ensure page is rendered before adjusting the scroll position. - requestAnimationFrame(() => { - requestAnimationFrame(() => { - scroller.scrollTop = scrollPosition; - }); - }); - }); -} - -function scrollNotificationPromise(expectedScroll) { - return new Promise(resolve => { - accessibilityController.addNotificationListener(target => { - if (target.role == 'AXRole: AXGroup' && - target.scrollY() == expectedScroll) { - accessibilityController.removeNotificationListener(); - resolve(); - } - }); - }); -} - -promise_test(async (t) => { - const container = document.getElementById('container'); - const scrollPosition = 500; - return Promise.all([ - scrollNotificationPromise(scrollPosition), - scrollPromise(container, scrollPosition) - ]).then(results => { - assert_equals(container.scrollTop, scrollPosition); - }); -}, "This test ensures that scrolling the window sends a notification."); - -</script> - -</body> -</html>
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index d91598d..aadfc0d 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -304952,7 +304952,7 @@ [] ], "README.md": [ - "2b92e470ac19b59777ee39b82ebd7b3bd85763f1", + "2f23e76b6fa01fcd4edd8a287a8cc10b3b501054", [] ], "WEB_FEATURES.yml": [ @@ -304986,10 +304986,6 @@ "90ed0a78576edc041caaa2ae70c319837152b726", [] ], - "pressure-helpers.js": [ - "5234cf2d78c90d559d3cfd8ee1b86d9b3fa97861", - [] - ], "support-iframe.html": [ "6b2b3097926b192df23c3e21dd19742bb19e69d4", [] @@ -368675,7 +368671,7 @@ "fledge": { "tentative": { "TODO": [ - "09cda1beb54c1430941b5e3b9042d66ff5329784", + "e05fe65911d4154f3e8bee9214b21e0ec64ba3af", [] ], "auction-config-passed-to-worklets.https.window_1-5-expected.txt": [ @@ -368807,6 +368803,14 @@ "dea8427266f1245e297795a69538b3a4f0007af2", [] ], + "service-worker-helper.js": [ + "cc00181359740b51f83c3289cfc215252123b67e", + [] + ], + "service-worker-helper.js.headers": [ + "98dfc8c8674edc62c4f6498a0b2a97c25447de96", + [] + ], "set-cookie.asis": [ "96d9f07c578c34085dd789d2a11b37cd4a51c42c", [] @@ -390148,7 +390152,7 @@ [] ], "audio-session.idl": [ - "f542347c710143e6003e96907c989614a40c701a", + "7fd75024ee8fa5c505955a4dfc581eb8d774b97b", [] ], "autoplay-detection.idl": [ @@ -390656,7 +390660,7 @@ [] ], "mediacapture-viewport.idl": [ - "a9dcf74e17cdf38d3d3cea8c7323c510d07653a1", + "c4d1892b0b9932a034b15caa8f80d3f16f096f5f", [] ], "mediaqueries-5.idl": [ @@ -390664,7 +390668,7 @@ [] ], "mediasession.idl": [ - "00bfe6ad21649d719511537db4f4ee046f8086b1", + "5c6942be5a0786234d5f9fddaa302c98c8d92f97", [] ], "mediastream-recording.idl": [ @@ -390692,7 +390696,7 @@ [] ], "observable.idl": [ - "b0f0949a23a09700c08911f3ee4719d0752cdc2b", + "55bdbb21e417d6abd10963e82587c9416b689adb", [] ], "observable.tentative.idl": [ @@ -390884,7 +390888,7 @@ [] ], "selection-api.idl": [ - "a84536ab0f58bbb45a210870a6b9873c37df20e1", + "49d718d0777ae4aba36c39b0945d6fb0065e6bf7", [] ], "serial.idl": [ @@ -390896,7 +390900,7 @@ [] ], "service-workers.idl": [ - "87d48398f72b540b14544165ca7216a0090d79f6", + "d9ff2f651f8235968dd29bd6d7f86e9e8fdcb4cf", [] ], "shape-detection-api.idl": [ @@ -390904,7 +390908,7 @@ [] ], "shared-storage.idl": [ - "6f8e92708881f0bc496b093939c006a5ec712e12", + "85906bedbcff138cc1bf940a77a6485b695a6715", [] ], "speech-api.idl": [ @@ -390952,7 +390956,7 @@ [] ], "turtledove.idl": [ - "77360d0dd10d8a8bf584b6d6939479bce2c1b5c2", + "ff48d311914e49e9de8a96f7ac3a26da144da818", [] ], "ua-client-hints.idl": [ @@ -391096,7 +391100,7 @@ [] ], "webgpu.idl": [ - "74021895a8f740c71cbb048a8089186a2ca77d86", + "421685c7a8fe4516e5e0b803f617181650d1d62a", [] ], "webhid.idl": [ @@ -391112,7 +391116,7 @@ [] ], "webnn.idl": [ - "9a71f73954cd1dc99e157c7d60571632959dbf2f", + "8329e7d2b33eec5ffe030e9f1b826b5276d6088a", [] ], "webrtc-encoded-transform.idl": [ @@ -391140,7 +391144,7 @@ [] ], "webrtc.idl": [ - "32500f9a5600b03372ea438ad42e4a8f9fcb9cb6", + "174ead6261c6c28eac7bd9dd5a1feb374d521b4d", [] ], "websockets.idl": [ @@ -391631,7 +391635,7 @@ ] }, "lint.ignore": [ - "62ad931cb83b0fb0681f02f92b24ffd895973663", + "3e1d05be28de3836888b62d527ebc4a0781397b1", [] ], "loading": { @@ -396990,6 +396994,10 @@ "360e6686bfb65ed33d811d15e1ba7183a736d552", [] ], + "green.png": [ + "28a1faab37797ef39454aa1deac1b470712f7be4", + [] + ], "link-header-referrer-policy.html": [ "dd2144d5075c68c3ad6d6c7ea393b8f58c24e057", [] @@ -399584,14 +399592,6 @@ "c9980e1285b7e14a85cba19f2c870f480e303946", [] ], - "mock-pressure-service.js": [ - "610d02a9164ce5aba99e0cd20e37321c054af252", - [] - ], - "mock-pressure-service.js.headers": [ - "6805c323df5a975231648b830e33ce183c3cbbd3", - [] - ], "mock-subapps.js": [ "b81936713b17db941ef380d4019cecfbe563caf6", [] @@ -401402,7 +401402,7 @@ ] }, "idlharness.https.any.serviceworker-expected.txt": [ - "3857e59ccc797418d1d158563d3c25d1242ce2b4", + "d6b8ea51c60c4ae9ceaa43a320193775e51656e1", [] ], "idlharness.https.any.sharedworker-expected.txt": [ @@ -444653,7 +444653,7 @@ }, "compute-pressure": { "compute_pressure_basic.https.window.js": [ - "ff50ef4e5613a7154d601699da7b3387a26256fe", + "a120f97a403621c9baa6c2769f5989f7bfadd43d", [ "compute-pressure/compute_pressure_basic.https.window.html?globalScope=dedicated_worker", { @@ -444735,248 +444735,327 @@ } ] ], - "compute_pressure_detached_iframe.https.html": [ - "6123521248cb7f6d6368bf916c1004f6a84dd5db", + "compute_pressure_detached_iframe.https.window.js": [ + "a43d6b0fc2dc7ed0263dbf3bde7c242dc421cea4", [ - null, - {} - ] - ], - "compute_pressure_disconnect.https.any.js": [ - "f8bc3fb357811a35201b30f86361846452b15faf", - [ - "compute-pressure/compute_pressure_disconnect.https.any.html", + "compute-pressure/compute_pressure_detached_iframe.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" ], [ "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/compute_pressure_disconnect.https.any.sharedworker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" + "/resources/testdriver.js" ], [ "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/compute_pressure_disconnect.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" + "/resources/testdriver-vendor.js" ], [ "script", - "resources/pressure-helpers.js" + "/common/utils.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ] ], - "compute_pressure_disconnect_idempotent.https.any.js": [ - "3c9a6688a42fb8e3e4decbee393e51a52554b6f5", + "compute_pressure_disconnect.https.window.js": [ + "0a27b16a926b35b3d9d7f1878542f379bb7cb7f3", [ - "compute-pressure/compute_pressure_disconnect_idempotent.https.any.html", + "compute-pressure/compute_pressure_disconnect.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ], [ - "compute-pressure/compute_pressure_disconnect_idempotent.https.any.sharedworker.html", + "compute-pressure/compute_pressure_disconnect.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/compute_pressure_disconnect_idempotent.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" + "/resources/testdriver.js" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver-vendor.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ] ], - "compute_pressure_disconnect_immediately.https.any.js": [ - "86963e242aba383ff5c687549f23bbdf58d3a237", + "compute_pressure_disconnect_idempotent.https.window.js": [ + "b7c440502d4f9e92df6c3a719f638f2b94682b8f", [ - "compute-pressure/compute_pressure_disconnect_immediately.https.any.html", + "compute-pressure/compute_pressure_disconnect_idempotent.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ], [ - "compute-pressure/compute_pressure_disconnect_immediately.https.any.sharedworker.html", + "compute-pressure/compute_pressure_disconnect_idempotent.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/compute_pressure_disconnect_immediately.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" + "/resources/testdriver.js" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver-vendor.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ] ], - "compute_pressure_duplicate_updates.https.any.js": [ - "609fb5ad7083f3cce6e10d8c0b461ffb01e853be", + "compute_pressure_disconnect_immediately.https.window.js": [ + "f411a1ea85c2d326f6bc2f7ee6984fc2576e48d6", [ - "compute-pressure/compute_pressure_duplicate_updates.https.any.html", + "compute-pressure/compute_pressure_disconnect_immediately.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ], [ - "compute-pressure/compute_pressure_duplicate_updates.https.any.sharedworker.html", + "compute-pressure/compute_pressure_disconnect_immediately.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" + ] + ] + } + ] + ], + "compute_pressure_duplicate_updates.https.window.js": [ + "f11a59b4cbbad30b4b9b0700e243bd12f5ea68d5", + [ + "compute-pressure/compute_pressure_duplicate_updates.https.window.html?globalScope=dedicated_worker", + { + "script_metadata": [ + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ], [ - "compute-pressure/compute_pressure_duplicate_updates.https.any.worker.html", + "compute-pressure/compute_pressure_duplicate_updates.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } @@ -445018,121 +445097,147 @@ } ] ], - "compute_pressure_multiple.https.any.js": [ - "8c50cc4b3df27e99e7fcb445d59609aa41d54fc9", + "compute_pressure_multiple.https.window.js": [ + "a5d2f530a0944f470f7581c076edd1eef01d83f8", [ - "compute-pressure/compute_pressure_multiple.https.any.html", + "compute-pressure/compute_pressure_multiple.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ], [ - "compute-pressure/compute_pressure_multiple.https.any.sharedworker.html", + "compute-pressure/compute_pressure_multiple.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/compute_pressure_multiple.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" + "/resources/testdriver.js" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver-vendor.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ] ], - "compute_pressure_observe_idempotent.https.any.js": [ - "9fcbb49814b6c0aac163c31d35d76b473d87a274", + "compute_pressure_observe_idempotent.https.window.js": [ + "af719097db23dd95b780ae5ae89c47363fdf07e5", [ - "compute-pressure/compute_pressure_observe_idempotent.https.any.html", + "compute-pressure/compute_pressure_observe_idempotent.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ], [ - "compute-pressure/compute_pressure_observe_idempotent.https.any.sharedworker.html", + "compute-pressure/compute_pressure_observe_idempotent.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/compute_pressure_observe_idempotent.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" + "/resources/testdriver.js" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver-vendor.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } @@ -445174,70 +445279,83 @@ } ] ], - "compute_pressure_options.https.any.js": [ - "ecf3c29dbf031d4014c8b7896bdf8f305596db27", + "compute_pressure_options.https.window.js": [ + "0cf0b8e11fd0b7f798b2873d8df3a6ade87abcd0", [ - "compute-pressure/compute_pressure_options.https.any.html", + "compute-pressure/compute_pressure_options.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ], [ - "compute-pressure/compute_pressure_options.https.any.sharedworker.html", + "compute-pressure/compute_pressure_options.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/compute_pressure_options.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" + "/resources/testdriver.js" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver-vendor.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ] ], "compute_pressure_rate_obfuscation_mitigation_not_triggered.https.window.js": [ - "f3e966de24183f729918ca5a96add3941df1a40e", + "96cb29025406fce294d511367cd82603b31199a9", [ - "compute-pressure/compute_pressure_rate_obfuscation_mitigation_not_triggered.https.window.html", + "compute-pressure/compute_pressure_rate_obfuscation_mitigation_not_triggered.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ @@ -445245,16 +445363,72 @@ "long" ], [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ], + [ + "compute-pressure/compute_pressure_rate_obfuscation_mitigation_not_triggered.https.window.html?globalScope=window", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ], "timeout": "long" @@ -445262,9 +445436,9 @@ ] ], "compute_pressure_rate_obfuscation_mitigation_triggered.https.window.js": [ - "b481cf6c87d87d0853468ebd7b3e257cd66ae5e3", + "b87452a9ddffa74a69b0577a2572667eadbdb2ba", [ - "compute-pressure/compute_pressure_rate_obfuscation_mitigation_triggered.https.window.html", + "compute-pressure/compute_pressure_rate_obfuscation_mitigation_triggered.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ @@ -445272,197 +445446,468 @@ "long" ], [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ], + [ + "compute-pressure/compute_pressure_rate_obfuscation_mitigation_triggered.https.window.html?globalScope=window", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ], "timeout": "long" } ] ], - "compute_pressure_take_records.https.any.js": [ - "55660b228be22453c3d48a907d8501e3d9a55c00", + "compute_pressure_take_records.https.window.js": [ + "0025dd61701b52f38e1f8428124ffba133dfc62a", [ - "compute-pressure/compute_pressure_take_records.https.any.html", + "compute-pressure/compute_pressure_take_records.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ], [ - "compute-pressure/compute_pressure_take_records.https.any.sharedworker.html", + "compute-pressure/compute_pressure_take_records.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/compute_pressure_take_records.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" + "/resources/testdriver.js" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver-vendor.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ] ], - "compute_pressure_timestamp.https.any.js": [ - "18db1dac461dd175bf7ee67ff96e6084a61964ad", + "compute_pressure_timestamp.https.window.js": [ + "0f35eef522a454bfde3db8fcf0d2fce49f3f2bb6", [ - "compute-pressure/compute_pressure_timestamp.https.any.html", + "compute-pressure/compute_pressure_timestamp.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "timeout", + "long" + ], + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] - ] + ], + "timeout": "long" } ], [ - "compute-pressure/compute_pressure_timestamp.https.any.sharedworker.html", + "compute-pressure/compute_pressure_timestamp.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "timeout", + "long" + ], + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] - ] - } - ], - [ - "compute-pressure/compute_pressure_timestamp.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" - ], - [ - "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] + ], + "timeout": "long" } ] ], - "compute_pressure_update_toJSON.https.any.js": [ - "7f726698d61dd30afe588f4b477de5dc6bdbe407", + "compute_pressure_timestamp_continuously_increasing.https.window.js": [ + "bdf5dbae6f513ccd0603f97b4c29f6f6c65f1c12", [ - "compute-pressure/compute_pressure_update_toJSON.https.any.html", + "compute-pressure/compute_pressure_timestamp_continuously_increasing.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "timeout", + "long" + ], + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ], + [ + "compute-pressure/compute_pressure_timestamp_continuously_increasing.https.window.html?globalScope=window", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ] + ], + "compute_pressure_timestamp_faster_collector.https.window.js": [ + "40ffe3b5b006e3ed8e1d1aae7ad3db40be2a17a3", + [ + "compute-pressure/compute_pressure_timestamp_faster_collector.https.window.html?globalScope=dedicated_worker", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ], + [ + "compute-pressure/compute_pressure_timestamp_faster_collector.https.window.html?globalScope=window", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ] + ], + "compute_pressure_update_toJSON.https.window.js": [ + "4ba8142c72edf96919f3ddf6fb9cd3eb7708f970", + [ + "compute-pressure/compute_pressure_update_toJSON.https.window.html?globalScope=dedicated_worker", + { + "script_metadata": [ + [ + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } ], [ - "compute-pressure/compute_pressure_update_toJSON.https.any.sharedworker.html", + "compute-pressure/compute_pressure_update_toJSON.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" + ], + [ + "variant", + "?globalScope=dedicated_worker" ], [ "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/compute_pressure_update_toJSON.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" + "/resources/testdriver.js" ], [ "script", - "resources/pressure-helpers.js" + "/resources/testdriver-vendor.js" ], [ - "global", - "window,dedicatedworker,sharedworker" + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "./resources/common.js" ] ] } @@ -445528,61 +445973,34 @@ } ] ], - "observe_return_type.https.any.js": [ - "b24878ab394d236db4babb395e5703682b28c95d", + "observe_return_type.https.window.js": [ + "6653f9a89eed083974ce9d1a4c31f34c4aec4407", [ - "compute-pressure/observe_return_type.https.any.html", + "compute-pressure/observe_return_type.https.window.html?globalScope=dedicated_worker", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" ], [ - "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" + "variant", + "?globalScope=dedicated_worker" ] ] } ], [ - "compute-pressure/observe_return_type.https.any.sharedworker.html", + "compute-pressure/observe_return_type.https.window.html?globalScope=window", { "script_metadata": [ [ - "script", - "/resources/test-only-api.js" + "variant", + "?globalScope=window" ], [ - "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" - ] - ] - } - ], - [ - "compute-pressure/observe_return_type.https.any.worker.html", - { - "script_metadata": [ - [ - "script", - "/resources/test-only-api.js" - ], - [ - "script", - "resources/pressure-helpers.js" - ], - [ - "global", - "window,dedicatedworker,sharedworker" + "variant", + "?globalScope=dedicated_worker" ] ] } @@ -502358,6 +502776,13 @@ } ] ], + "listed-form-element-reset.html": [ + "29f524dd9e7de2f9036dd3f69f8268523dfd6d2e", + [ + null, + {} + ] + ], "modal-dialog.html": [ "fa9eeae85eb13daf948c20406b1b907575c1c1f6", [ @@ -548636,6 +549061,41 @@ } ] ], + "service-worker-request-visibility.https.window.js": [ + "91214f01ef1e521f8d9f7d514129693288e5cf19", + [ + "fledge/tentative/service-worker-request-visibility.https.window.html?1-last", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-last" + ] + ], + "timeout": "long" + } + ] + ], "tie.https.window.js": [ "c87d10f2016fa94d6a1e722fa9dfe1d3bb5c4def", [ @@ -635422,7 +635882,7 @@ ] ], "prefetch-headers.https.html": [ - "0a475c7d7735cb535f24b62339fdd42d4d5443cb", + "74f654a3636008f591a959454673e7885adee948", [ null, {} @@ -635445,7 +635905,7 @@ ] ], "prefetch-types.https.html": [ - "276439e5440b2157eb2bfaf6a2fbe8b4ec05b3ff", + "da034252562c3bc7483f81d556adf5592efc8436", [ null, {} @@ -657373,7 +657833,7 @@ "tentative": { "static-router": { "static-router-resource-timing.https.html": [ - "796beb916a68ec58c1a8a0315a03133d6ae3bc63", + "74d84eb3c9f8b90492992167475b2cbdd11c9e52", [ null, {}
diff --git a/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https-expected.txt b/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https-expected.txt index 6e41632..f19e513 100644 --- a/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https-expected.txt +++ b/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
@@ -1,7 +1,7 @@ This is a testharness.js-based test. [FAIL] getType(DOMString valid type) converts DOMString to Blob - assert_equals: expected (string) "text/plain" but got (undefined) undefined + promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'ClipboardItem': Failed to convert value to 'Blob'." [FAIL] getType(DOMString invalid type) converts DOMString to Blob - assert_equals: expected (string) "not a/real type" but got (undefined) undefined + promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'ClipboardItem': Failed to convert value to 'Blob'." Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/fedcm/support/fedcm-helper.sub.js b/third_party/blink/web_tests/external/wpt/fedcm/support/fedcm-helper.sub.js index 767c044..4337adf 100644 --- a/third_party/blink/web_tests/external/wpt/fedcm/support/fedcm-helper.sub.js +++ b/third_party/blink/web_tests/external/wpt/fedcm/support/fedcm-helper.sub.js
@@ -124,8 +124,6 @@ // Test wrapper which does FedCM-specific setup. export function fedcm_test(test_func, test_name) { promise_test(async t => { - // Ensure we start from a clean slate. - await test_driver.delete_all_cookies(); // Turn off delays that are not useful in tests. try { await test_driver.set_fedcm_delay_enabled(false);
diff --git a/third_party/blink/web_tests/external/wpt/fledge/tentative/auction-config.https.window.js b/third_party/blink/web_tests/external/wpt/fledge/tentative/auction-config.https.window.js index 4efef29..d85271ee 100644 --- a/third_party/blink/web_tests/external/wpt/fledge/tentative/auction-config.https.window.js +++ b/third_party/blink/web_tests/external/wpt/fledge/tentative/auction-config.https.window.js
@@ -472,7 +472,10 @@ makeTest({ name: 'perBuyerCurrencies not convertible to dictionary', expect: EXPECT_PROMISE_ERROR, - expectPromiseError: EXPECT_EXCEPTION(TypeError), + // Because this is not convertible by IDL to the proper dictionary type, this + // will immediately be converted to a rejected promise inside of the + // runBasicFledgeAuction() invocation, and that await will handle the + // rejection. Therefore, no expectPromiseError. auctionConfigOverrides: {perBuyerCurrencies: 123} });
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/audio-session.idl b/third_party/blink/web_tests/external/wpt/interfaces/audio-session.idl index f542347..7fd7502 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/audio-session.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/audio-session.idl
@@ -3,10 +3,12 @@ // (https://github.com/w3c/webref) // Source: Audio Session (https://w3c.github.io/audio-session/) -enum AudioSessionState { - "inactive", - "active", - "interrupted" +[Exposed=Window] +interface AudioSession : EventTarget { + attribute AudioSessionType type; + + readonly attribute AudioSessionState state; + attribute EventHandler onstatechange; }; enum AudioSessionType { @@ -18,16 +20,14 @@ "play-and-record" }; +enum AudioSessionState { + "inactive", + "active", + "interrupted" +}; + [Exposed=Window] partial interface Navigator { // The default audio session that the user agent will use when media elements start/stop playing. readonly attribute AudioSession audioSession; }; - -[Exposed=Window] -interface AudioSession : EventTarget { - attribute AudioSessionType type; - - readonly attribute AudioSessionState state; - attribute EventHandler onstatechange; -};
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/mediacapture-viewport.idl b/third_party/blink/web_tests/external/wpt/interfaces/mediacapture-viewport.idl index a9dcf74..c4d1892b 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/mediacapture-viewport.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/mediacapture-viewport.idl
@@ -5,10 +5,5 @@ partial interface MediaDevices { Promise<MediaStream> getViewportMedia( - optional ViewportMediaStreamConstraints constraints = {}); -}; - -dictionary ViewportMediaStreamConstraints { - (boolean or MediaTrackConstraints) video = true; - (boolean or MediaTrackConstraints) audio = false; + optional DisplayMediaStreamOptions options = {}); };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/mediasession.idl b/third_party/blink/web_tests/external/wpt/interfaces/mediasession.idl index 00bfe6a..5c6942b 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/mediasession.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/mediasession.idl
@@ -98,17 +98,8 @@ dictionary MediaSessionActionDetails { required MediaSessionAction action; -}; - -dictionary MediaSessionSeekActionDetails : MediaSessionActionDetails { double seekOffset; -}; - -dictionary MediaSessionSeekToActionDetails : MediaSessionActionDetails { - required double seekTime; + double seekTime; boolean fastSeek; -}; - -dictionary MediaSessionCaptureActionDetails : MediaSessionActionDetails { boolean isActivating; };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/observable.idl b/third_party/blink/web_tests/external/wpt/interfaces/observable.idl index b0f0949..55bdbb2 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/observable.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/observable.idl
@@ -81,7 +81,7 @@ Observable drop(unsigned long long amount); Observable flatMap(Mapper mapper); Observable switchMap(Mapper mapper); - Observable inspect(optional ObservableInspectorUnion inspect_observer = {}); + Observable inspect(optional ObservableInspectorUnion inspectorUnion = {}); Observable catch(CatchCallback callback); Observable finally(VoidFunction callback);
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/selection-api.idl b/third_party/blink/web_tests/external/wpt/interfaces/selection-api.idl index a84536ab..49d718d 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/selection-api.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/selection-api.idl
@@ -18,7 +18,7 @@ undefined removeRange(Range range); undefined removeAllRanges(); undefined empty(); - sequence<StaticRange> getComposedRanges(ShadowRoot... shadowRoots); + sequence<StaticRange> getComposedRanges(optional GetComposedRangesOptions options = {}); undefined collapse(Node? node, optional unsigned long offset = 0); undefined setPosition(Node? node, optional unsigned long offset = 0); undefined collapseToStart(); @@ -32,6 +32,10 @@ stringifier; }; +dictionary GetComposedRangesOptions { + sequence<ShadowRoot> shadowRoots = []; +}; + partial interface Document { Selection? getSelection(); };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/service-workers.idl b/third_party/blink/web_tests/external/wpt/interfaces/service-workers.idl index 87d48398..d9ff2f6 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/service-workers.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/service-workers.idl
@@ -167,6 +167,7 @@ [Exposed=ServiceWorker] interface InstallEvent : ExtendableEvent { + constructor(DOMString type, optional ExtendableEventInit eventInitDict = {}); Promise<undefined> addRoutes((RouterRule or sequence<RouterRule>) rules); };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/shared-storage.idl b/third_party/blink/web_tests/external/wpt/interfaces/shared-storage.idl index 6f8e927..85906bed 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/shared-storage.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/shared-storage.idl
@@ -89,6 +89,7 @@ boolean resolveToConfig = false; boolean keepAlive = false; SharedStoragePrivateAggregationConfig privateAggregationConfig; + DOMString savedQuery; }; dictionary SharedStorageWorkletOptions : WorkletOptions {
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/turtledove.idl b/third_party/blink/web_tests/external/wpt/interfaces/turtledove.idl index 77360d0..ff48d311 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/turtledove.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/turtledove.idl
@@ -128,16 +128,22 @@ Promise<AdAuctionData> getInterestGroupAdAuctionData(AdAuctionDataConfig config); }; -dictionary AdAuctionDataConfig { - required USVString seller; - required USVString coordinatorOrigin; -}; - dictionary AdAuctionData { required Uint8Array request; required USVString requestId; }; +dictionary AdAuctionDataConfig { + required USVString seller; + required USVString coordinatorOrigin; + unsigned long requestSize; + record<USVString, AdAuctionDataBuyerConfig> perBuyerConfig; +}; + +dictionary AdAuctionDataBuyerConfig { + unsigned long targetSize; +}; + [SecureContext] partial interface Navigator { Promise<DOMString> createAuctionNonce();
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webgpu.idl b/third_party/blink/web_tests/external/wpt/interfaces/webgpu.idl index 7402189..421685c7 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/webgpu.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/webgpu.idl
@@ -78,7 +78,7 @@ }; dictionary GPURequestAdapterOptions { - any featureLevel; + DOMString featureLevel; GPUPowerPreference powerPreference; boolean forceFallbackAdapter = false; }; @@ -1183,6 +1183,7 @@ undefined configure(GPUCanvasConfiguration configuration); undefined unconfigure(); + GPUCanvasConfiguration? getConfiguration(); GPUTexture getCurrentTexture(); };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webnn.idl b/third_party/blink/web_tests/external/wpt/interfaces/webnn.idl index 9a71f739..8329e7d2 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/webnn.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/webnn.idl
@@ -90,7 +90,7 @@ dictionary MLOperandDescriptor { required MLOperandDataType dataType; - sequence<[EnforceRange] unsigned long> shape = []; + required sequence<[EnforceRange] unsigned long> shape; }; [SecureContext, Exposed=(Window, DedicatedWorker)]
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webrtc.idl b/third_party/blink/web_tests/external/wpt/interfaces/webrtc.idl index 32500f9a..174ead62 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/webrtc.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/webrtc.idl
@@ -503,7 +503,7 @@ "closed" }; -[Exposed=Window] +[Exposed=(Window,DedicatedWorker), Transferable] interface RTCDataChannel : EventTarget { readonly attribute USVString label; readonly attribute boolean ordered;
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/idlharness.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/service-workers/idlharness.https.any.serviceworker-expected.txt index 3857e59c..d6b8ea5 100644 --- a/third_party/blink/web_tests/external/wpt/service-workers/idlharness.https.any.serviceworker-expected.txt +++ b/third_party/blink/web_tests/external/wpt/service-workers/idlharness.https.any.serviceworker-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 33 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 32 FAIL, 0 TIMEOUT, 0 NOTRUN. [FAIL] ServiceWorkerContainer interface: existence and properties of interface object assert_own_property: self does not have own property "ServiceWorkerContainer" expected property "ServiceWorkerContainer" missing [FAIL] ServiceWorkerContainer interface object length @@ -58,8 +58,6 @@ assert_equals: wrong typeof object expected "object" but got "undefined" [FAIL] WindowClient interface: attribute ancestorOrigins assert_true: The prototype object must have a property "ancestorOrigins" expected true got false -[FAIL] InstallEvent interface object length - assert_equals: wrong value for InstallEvent.length expected 0 but got 1 [FAIL] FetchEvent interface: attribute replacesClientId assert_true: The prototype object must have a property "replacesClientId" expected true got false [FAIL] FetchEvent interface: new FetchEvent("type", { request: new Request("") }) must inherit property "replacesClientId" with the proper type
diff --git a/third_party/blink/web_tests/http/tests/serviceworker/resources/fetch-event-synthetic-respond-with-worker.js b/third_party/blink/web_tests/http/tests/serviceworker/resources/fetch-event-synthetic-respond-with-worker.js index 1ac62bb..d08c95c90 100644 --- a/third_party/blink/web_tests/http/tests/serviceworker/resources/fetch-event-synthetic-respond-with-worker.js +++ b/third_party/blink/web_tests/http/tests/serviceworker/resources/fetch-event-synthetic-respond-with-worker.js
@@ -2,6 +2,6 @@ test(() => { var req = new Request('https://www.example.com/', {method: 'POST'}); - new FetchEvent('fetch', {request: req}).respondWith('foo'); + new FetchEvent('fetch', {request: req}).respondWith(new Response('foo')); }, 'Calling respondWith should not crash');
diff --git a/third_party/blink/web_tests/virtual/speech-with-unified-autoplay/DIR_METADATA b/third_party/blink/web_tests/virtual/speech-with-unified-autoplay/DIR_METADATA new file mode 100644 index 0000000..fb0a9bc --- /dev/null +++ b/third_party/blink/web_tests/virtual/speech-with-unified-autoplay/DIR_METADATA
@@ -0,0 +1,6 @@ +monorail: { + component: "Chromium > Blink > Media > Autoplay" +} +buganizer_public: { + component_id: 1456724 +} \ No newline at end of file
diff --git a/third_party/chromite b/third_party/chromite index f834f05..c621276 160000 --- a/third_party/chromite +++ b/third_party/chromite
@@ -1 +1 @@ -Subproject commit f834f05d9e79b960930b90da2d6e8f824c85a9b1 +Subproject commit c621276d4f2ec43ef4346a40f5dd328aa8bcbaaf
diff --git a/third_party/crubit/.gitignore b/third_party/crubit/.gitignore deleted file mode 100644 index e69de29..0000000 --- a/third_party/crubit/.gitignore +++ /dev/null
diff --git a/third_party/crubit/LICENSE b/third_party/crubit/LICENSE deleted file mode 100644 index 90d89d0..0000000 --- a/third_party/crubit/LICENSE +++ /dev/null
@@ -1,234 +0,0 @@ -============================================================================== -The Crubit project is under the Apache License v2.0 with LLVM Exceptions: -============================================================================== - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - ----- LLVM Exceptions to the Apache 2.0 License ---- - -As an exception, if, as a result of your compiling your source code, portions -of this Software are embedded into an Object form of such source code, you -may redistribute such embedded portions in such Object form without complying -with the conditions of Sections 4(a), 4(b) and 4(d) of the License. - -In addition, if you combine or link compiled forms of this Software with -software that is licensed under the GPLv2 ("Combined Software") and if a -court of competent jurisdiction determines that the patent provision (Section -3), the indemnity provision (Section 9) or other Section of the License -conflicts with the conditions of the GPLv2, you may retroactively and -prospectively choose to deem waived or otherwise exclude such Section(s) of -the License, but only in their entirety and only with respect to the Combined -Software. - -============================================================================== -Software from third parties included in the Crubit project: -============================================================================== -The Crubit project contains third party software which is under different -license terms. All such code will be identified clearly using at least one of -two mechanisms: -1) It will be in a separate directory tree with its own `LICENSE.txt` or - `LICENSE` file at the top containing the specific license and restrictions - which apply to that software, or -2) It will contain specific license and restriction terms at the top of every - file. \ No newline at end of file
diff --git a/third_party/crubit/OWNERS b/third_party/crubit/OWNERS deleted file mode 100644 index ec1b1412..0000000 --- a/third_party/crubit/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://build/rust/OWNERS
diff --git a/third_party/crubit/README.chromium b/third_party/crubit/README.chromium deleted file mode 100644 index d87173e..0000000 --- a/third_party/crubit/README.chromium +++ /dev/null
@@ -1,31 +0,0 @@ -Name: Crubit: C++/Rust Bidirectional Interop Tool -Short Name: crubit -URL: https://github.com/google/crubit -Version: 0 -Date: See the comments next to the `crubit_revision` in the //DEPS file -Revision: See `crubit_revision` in the //DEPS file -License: Apache 2.0 -License File: LICENSE -Security Critical: no -Shipped: no - -Description: - -Extremely experimental interop tooling for C++ and Rust. - -See also: - -- Google-internal "High-level Design of C++/Rust Interop" doc at - https://docs.google.com/document/d/1FDBHv0qQQpvV8URRW1crgKWlVm3UEh87pJrmFAxuFrI/edit?usp=sharing - -- //build/rust/rs_bindings_from_cc.gni (support for using Crubit for generating - C++/Rust bindings during Chromium build using `bin/rs_bindings_from_cc` tool - + for building such generated files against - `./src/rs_bindings_from_cc/support` libraries). - -- //tools/rust/build_crubit.py (for building `bin/rs_bindings_from_cc` tool for - packaging and distribution via `gclient sync`) - -Local Modifications: -- Added BUILD.gn that covers `src/rs_bindings_from_cc/support' - (see https://crrev.com/c/3756719)
diff --git a/third_party/crubit/src b/third_party/crubit/src deleted file mode 160000 index f5cbdf4..0000000 --- a/third_party/crubit/src +++ /dev/null
@@ -1 +0,0 @@ -Subproject commit f5cbdf4b54b0e6b9f63a4464a2c901c82e0f0209
diff --git a/third_party/dawn b/third_party/dawn index 690b037..9d1b7b4 160000 --- a/third_party/dawn +++ b/third_party/dawn
@@ -1 +1 @@ -Subproject commit 690b037a7532f18b68e4907ddb0ddff6b1a8f1e7 +Subproject commit 9d1b7b42eb282d2ce24e329a8bf41c89fdd67973
diff --git a/third_party/depot_tools b/third_party/depot_tools index 6dec852..cc39a56 160000 --- a/third_party/depot_tools +++ b/third_party/depot_tools
@@ -1 +1 @@ -Subproject commit 6dec85272d23ae587984cdd78eae428ce3b2ad9b +Subproject commit cc39a5681f48f42e8f0d16b9979bd3085c93de0a
diff --git a/third_party/devtools-frontend-internal b/third_party/devtools-frontend-internal index 51db6cf..84c1220 160000 --- a/third_party/devtools-frontend-internal +++ b/third_party/devtools-frontend-internal
@@ -1 +1 @@ -Subproject commit 51db6cf38207673d6bfa25c8e136277c3cfb6e9c +Subproject commit 84c1220a80b203163a2c3d124ca103f63580d8ce
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src index 5fea877..b40634d 160000 --- a/third_party/devtools-frontend/src +++ b/third_party/devtools-frontend/src
@@ -1 +1 @@ -Subproject commit 5fea877e0b17578765cd4520857b5b3b172b5199 +Subproject commit b40634d52b0f5dcde839e73c8bdac4909458217a
diff --git a/third_party/libunwind/src b/third_party/libunwind/src index b7cdaca..37c7d98 160000 --- a/third_party/libunwind/src +++ b/third_party/libunwind/src
@@ -1 +1 @@ -Subproject commit b7cdacaadbc4d121081ad6b146c7e94acec4c7ff +Subproject commit 37c7d984b0b8520a0f99c6e6bbb0514e9996edc8
diff --git a/third_party/openscreen/src b/third_party/openscreen/src index 6508900..1335531 160000 --- a/third_party/openscreen/src +++ b/third_party/openscreen/src
@@ -1 +1 @@ -Subproject commit 6508900f6f6cbe87a61abdc337fcdfc289c43cea +Subproject commit 1335531d0d7847625b52e9365902d7fcba82f3c6
diff --git a/third_party/pdfium b/third_party/pdfium index fba5ab2..cd4887c 160000 --- a/third_party/pdfium +++ b/third_party/pdfium
@@ -1 +1 @@ -Subproject commit fba5ab2f1c9c9b66b61e94d00662f9c12fcb692b +Subproject commit cd4887caa580fe6b54be2fd5abe87dc3fb4de27e
diff --git a/third_party/perfetto b/third_party/perfetto index 077bb36..226197a 160000 --- a/third_party/perfetto +++ b/third_party/perfetto
@@ -1 +1 @@ -Subproject commit 077bb360edecb33551e88c8097035e4b8cef245b +Subproject commit 226197a61ac2b08b3860b5c73f8411ba0ba43947
diff --git a/third_party/rust/bytes/v1/BUILD.gn b/third_party/rust/bytes/v1/BUILD.gn index 807fae6..57f46d0e 100644 --- a/third_party/rust/bytes/v1/BUILD.gn +++ b/third_party/rust/bytes/v1/BUILD.gn
@@ -13,33 +13,33 @@ epoch = "1" crate_type = "rlib" crate_root = - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/lib.rs" + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/lib.rs" sources = [ - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/buf_impl.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/buf_mut.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/chain.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/iter.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/limit.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/reader.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/take.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/uninit_slice.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/vec_deque.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/writer.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/bytes.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/bytes_mut.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/fmt/debug.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/fmt/hex.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/fmt/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/lib.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/loom.rs", - "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/serde.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/buf_impl.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/buf_mut.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/chain.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/iter.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/limit.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/reader.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/take.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/uninit_slice.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/vec_deque.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/writer.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/bytes.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/bytes_mut.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/fmt/debug.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/fmt/hex.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/fmt/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/lib.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/loom.rs", + "//third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/serde.rs", ] inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "1.7.1" + cargo_pkg_version = "1.7.2" cargo_pkg_authors = "Carl Lerche <me@carllerche.com>, Sean McArthur <sean@seanmonstar.com>" cargo_pkg_name = "bytes"
diff --git a/third_party/rust/bytes/v1/README.chromium b/third_party/rust/bytes/v1/README.chromium index 463abb3..dca7273 100644 --- a/third_party/rust/bytes/v1/README.chromium +++ b/third_party/rust/bytes/v1/README.chromium
@@ -1,9 +1,9 @@ Name: bytes URL: https://crates.io/crates/bytes Description: Types and traits for working with bytes -Version: 1.7.1 +Version: 1.7.2 Security Critical: no Shipped: no License: MIT -License File: //third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/LICENSE -Revision: dc4fb3e8f45650500187f8cdbad5ac8ffdb7df0a +License File: //third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/LICENSE +Revision: d7c1d658d90c922eeee1dbc29bc6f6fd9a1a1a66
diff --git a/third_party/rust/chromium_crates_io/Cargo.lock b/third_party/rust/chromium_crates_io/Cargo.lock index 592f639c..ea8da12b 100644 --- a/third_party/rust/chromium_crates_io/Cargo.lock +++ b/third_party/rust/chromium_crates_io/Cargo.lock
@@ -70,12 +70,12 @@ [[package]] name = "bytes" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cc" -version = "1.1.20" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "shlex", @@ -220,7 +220,7 @@ [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "simd-adler32", @@ -233,7 +233,7 @@ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crc32fast", @@ -298,7 +298,7 @@ [[package]] name = "libc" -version = "0.2.158" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -449,7 +449,7 @@ [[package]] name = "read-fonts" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytemuck",
diff --git a/third_party/rust/chromium_crates_io/supply-chain/audits.toml b/third_party/rust/chromium_crates_io/supply-chain/audits.toml index c9cca4b..0e47a492 100644 --- a/third_party/rust/chromium_crates_io/supply-chain/audits.toml +++ b/third_party/rust/chromium_crates_io/supply-chain/audits.toml
@@ -417,6 +417,11 @@ delta = "1.6.1 -> 1.7.1" notes = "Many changes but they seem to meet the low bar of safe-to-run." +[[audits.bytes]] +who = "Lukasz Anforowicz <lukasza@chromium.org>" +criteria = ["safe-to-run", "does-not-implement-crypto"] +delta = "1.7.1 -> 1.7.2" + [[audits.cfg-if]] who = "Lukasz Anforowicz <lukasza@chromium.org>" criteria = ["safe-to-deploy", "does-not-implement-crypto", "ub-risk-0"] @@ -880,6 +885,11 @@ can be found at go/image-crate-chromium-security-review. ''' +[[audits.fdeflate]] +who = "Lukasz Anforowicz <lukasza@chromium.org>" +criteria = ["safe-to-deploy", "does-not-implement-crypto", "ub-risk-0"] +delta = "0.3.4 -> 0.3.5" + [[audits.fend-core]] who = "jiwan@chromium.org" criteria = ["safe-to-deploy", "does-not-implement-crypto", "ub-risk-0"] @@ -979,6 +989,22 @@ and therefore hasn't been covered by this partial audit. """ +[[audits.flate2]] +who = "Lukasz Anforowicz <lukasza@chromium.org>" +criteria = ["safe-to-deploy", "does-not-implement-crypto", "ub-risk-2"] +delta = "1.0.33 -> 1.0.34" +notes = """ +WARNING: This certification is a result of a **partial** audit. The +`any_zlib` code has **not** been audited. See the audit of 1.0.30 for +more details. + +The delta can be seen at https://diff.rs/flate2/1.0.33/1.0.34 +The delta bumps up `libz-rs-sys` dependency from `0.2.1` to `0.3.0` +The delta in `lib.rs` only tweaks comments and has no code changes. +The delta also contains some changes to `src/ffi/c.rs` which is *NOT* used by Chromium +and therefore hasn't been covered by this partial audit. +""" + [[audits.font-types]] who = "Lukasz Anforowicz <lukasza@chromium.org>" criteria = ["ub-risk-0", "safe-to-deploy", "does-not-implement-crypto"] @@ -1505,6 +1531,11 @@ delta = "0.20.0 -> 0.22.0" notes = "Changes for incremental font transfer, Ankr, Feat tables, and support for getting access to the SVG document from the SVG table, as well as Avar2." +[[audits.read-fonts]] +who = "Lukasz Anforowicz <lukasza@chromium.org>" +criteria = ["safe-to-deploy", "does-not-implement-crypto", "ub-risk-0"] +delta = "0.22.0 -> 0.22.1" + [[audits.regex]] who = "danakj@chromium.org" criteria = ["safe-to-run", "does-not-implement-crypto"]
diff --git a/third_party/rust/chromium_crates_io/supply-chain/config.toml b/third_party/rust/chromium_crates_io/supply-chain/config.toml index 36535a8..fdb4857 100644 --- a/third_party/rust/chromium_crates_io/supply-chain/config.toml +++ b/third_party/rust/chromium_crates_io/supply-chain/config.toml
@@ -74,10 +74,10 @@ [policy."byteorder:1.5.0"] criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"] -[policy."bytes:1.7.1"] +[policy."bytes:1.7.2"] criteria = ["crypto-safe", "safe-to-run"] -[policy."cc:1.1.20"] +[policy."cc:1.1.23"] criteria = [] [policy."cfg-if:1.0.0"] @@ -113,13 +113,13 @@ [policy."either:1.13.0"] criteria = ["crypto-safe", "safe-to-run"] -[policy."fdeflate:0.3.4"] +[policy."fdeflate:0.3.5"] criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"] [policy."fend-core:1.5.2"] criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"] -[policy."flate2:1.0.33"] +[policy."flate2:1.0.34"] criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"] [policy."font-types:0.7.1"] @@ -149,7 +149,7 @@ [policy."lazy_static:1.5.0"] criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"] -[policy."libc:0.2.158"] +[policy."libc:0.2.159"] criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"] [policy."link-cplusplus:1.0.9"] @@ -206,7 +206,7 @@ [policy."rand_pcg:0.3.1"] criteria = ["crypto-safe", "safe-to-run"] -[policy."read-fonts:0.22.0"] +[policy."read-fonts:0.22.1"] criteria = ["crypto-safe", "safe-to-deploy", "ub-risk-2"] [policy."regex-automata:0.4.7"]
diff --git a/third_party/rust/chromium_crates_io/supply-chain/imports.lock b/third_party/rust/chromium_crates_io/supply-chain/imports.lock index 05a86ab..eccc4f8 100644 --- a/third_party/rust/chromium_crates_io/supply-chain/imports.lock +++ b/third_party/rust/chromium_crates_io/supply-chain/imports.lock
@@ -2,8 +2,8 @@ # cargo-vet imports lock [[publisher.libc]] -version = "0.2.158" -when = "2024-08-19" +version = "0.2.159" +when = "2024-09-24" user-id = 55123 user-login = "rust-lang-owner" @@ -145,16 +145,6 @@ criteria = ["safe-to-run", "does-not-implement-crypto"] version = "0.4.3" -[[audits.chromeos.audits.log]] -who = "ChromeOS" -criteria = ["safe-to-run", "does-not-implement-crypto"] -version = "0.4.17" - -[[audits.chromeos.audits.log]] -who = "George Burgess IV <gbiv@google.com>" -criteria = ["safe-to-run", "does-not-implement-crypto"] -delta = "0.4.17 -> 0.4.20" - [[audits.chromeos.audits.memchr]] who = "Ying Hsu <yinghsu@chromium.org>" criteria = ["safe-to-run", "does-not-implement-crypto"] @@ -175,6 +165,16 @@ criteria = ["safe-to-run", "does-not-implement-crypto"] version = "0.1.0" +[[audits.chromeos.audits.syn]] +who = "Ying Hsu <yinghsu@chromium.org>" +criteria = ["safe-to-run", "does-not-implement-crypto"] +version = "2.0.58" + +[[audits.chromeos.audits.syn]] +who = "Hung-Hsien Chen <hunghsienchen@chromium.org>" +criteria = ["safe-to-run", "does-not-implement-crypto"] +delta = "2.0.58 -> 2.0.77" + [audits.fuchsia.criteria.ub-risk-0] description = """ No unsafe code. @@ -287,9 +287,3 @@ criteria = ["does-not-implement-crypto", "ub-risk-2"] version = "1.13.1" notes = "Reviewed in CL 561111794" - -[[audits.google.audits.log]] -who = "Ben Saunders <bsaunders@google.com>" -criteria = ["does-not-implement-crypto", "ub-risk-1"] -version = "0.4.20" -notes = "Reviewed in CL 563853923"
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.cargo_vcs_info.json deleted file mode 100644 index e159ec8..0000000 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.cargo_vcs_info.json +++ /dev/null
@@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "dc4fb3e8f45650500187f8cdbad5ac8ffdb7df0a" - }, - "path_in_vcs": "" -} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/Cargo.toml deleted file mode 100644 index 56cbcd7..0000000 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/Cargo.toml +++ /dev/null
@@ -1,55 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies. -# -# If you are reading this file be aware that the original Cargo.toml -# will likely look very different (and much more reasonable). -# See Cargo.toml.orig for the original contents. - -[package] -edition = "2018" -rust-version = "1.39" -name = "bytes" -version = "1.7.1" -authors = [ - "Carl Lerche <me@carllerche.com>", - "Sean McArthur <sean@seanmonstar.com>", -] -description = "Types and traits for working with bytes" -readme = "README.md" -keywords = [ - "buffers", - "zero-copy", - "io", -] -categories = [ - "network-programming", - "data-structures", -] -license = "MIT" -repository = "https://github.com/tokio-rs/bytes" - -[package.metadata.docs.rs] -rustdoc-args = [ - "--cfg", - "docsrs", -] - -[dependencies.serde] -version = "1.0.60" -features = ["alloc"] -optional = true -default-features = false - -[dev-dependencies.serde_test] -version = "1.0" - -[features] -default = ["std"] -std = [] - -[target."cfg(loom)".dev-dependencies.loom] -version = "0.7"
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.cargo-checksum.json
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.cargo_vcs_info.json new file mode 100644 index 0000000..3ace00d --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.cargo_vcs_info.json
@@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "d7c1d658d90c922eeee1dbc29bc6f6fd9a1a1a66" + }, + "path_in_vcs": "" +} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.github/workflows/ci.yml b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.github/workflows/ci.yml similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.github/workflows/ci.yml rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.github/workflows/ci.yml index c0658a14..d0136c4 100644 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.github/workflows/ci.yml +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.github/workflows/ci.yml
@@ -13,7 +13,7 @@ env: RUSTFLAGS: -Dwarnings RUST_BACKTRACE: 1 - nightly: nightly-2022-11-12 + nightly: nightly-2024-09-15 defaults: run: @@ -136,6 +136,8 @@ runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Install Rust + run: rustup update $nightly && rustup default $nightly - name: Miri run: ci/miri.sh @@ -160,6 +162,7 @@ - minrust - cross - tsan + - miri - loom runs-on: ubuntu-latest steps:
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.gitignore b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.gitignore similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/.gitignore rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/.gitignore
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/CHANGELOG.md similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/CHANGELOG.md rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/CHANGELOG.md index 93c1419c..91c0fa4 100644 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/CHANGELOG.md +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/CHANGELOG.md
@@ -1,3 +1,17 @@ +# 1.7.2 (September 17, 2024) + +### Fixed + +- Fix default impl of `Buf::{get_int, get_int_le}` (#732) + +### Documented + +- Fix double spaces in comments and doc comments (#731) + +### Internal changes + +- Ensure BytesMut::advance reduces capacity (#728) + # 1.7.1 (August 1, 2024) This release reverts the following change due to a regression:
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/Cargo.toml new file mode 100644 index 0000000..286c891 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/Cargo.toml
@@ -0,0 +1,120 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g., crates.io) dependencies. +# +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. + +[package] +edition = "2018" +rust-version = "1.39" +name = "bytes" +version = "1.7.2" +authors = [ + "Carl Lerche <me@carllerche.com>", + "Sean McArthur <sean@seanmonstar.com>", +] +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false +description = "Types and traits for working with bytes" +readme = "README.md" +keywords = [ + "buffers", + "zero-copy", + "io", +] +categories = [ + "network-programming", + "data-structures", +] +license = "MIT" +repository = "https://github.com/tokio-rs/bytes" + +[package.metadata.docs.rs] +rustdoc-args = [ + "--cfg", + "docsrs", +] + +[lib] +name = "bytes" +path = "src/lib.rs" + +[[test]] +name = "test_buf" +path = "tests/test_buf.rs" + +[[test]] +name = "test_buf_mut" +path = "tests/test_buf_mut.rs" + +[[test]] +name = "test_bytes" +path = "tests/test_bytes.rs" + +[[test]] +name = "test_bytes_odd_alloc" +path = "tests/test_bytes_odd_alloc.rs" + +[[test]] +name = "test_bytes_vec_alloc" +path = "tests/test_bytes_vec_alloc.rs" + +[[test]] +name = "test_chain" +path = "tests/test_chain.rs" + +[[test]] +name = "test_debug" +path = "tests/test_debug.rs" + +[[test]] +name = "test_iter" +path = "tests/test_iter.rs" + +[[test]] +name = "test_reader" +path = "tests/test_reader.rs" + +[[test]] +name = "test_serde" +path = "tests/test_serde.rs" + +[[test]] +name = "test_take" +path = "tests/test_take.rs" + +[[bench]] +name = "buf" +path = "benches/buf.rs" + +[[bench]] +name = "bytes" +path = "benches/bytes.rs" + +[[bench]] +name = "bytes_mut" +path = "benches/bytes_mut.rs" + +[dependencies.serde] +version = "1.0.60" +features = ["alloc"] +optional = true +default-features = false + +[dev-dependencies.serde_test] +version = "1.0" + +[features] +default = ["std"] +std = [] + +[target."cfg(loom)".dev-dependencies.loom] +version = "0.7"
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/Cargo.toml.orig similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/Cargo.toml.orig index e072539..8083901a 100644 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/Cargo.toml.orig
@@ -4,7 +4,7 @@ # When releasing to crates.io: # - Update CHANGELOG.md. # - Create "v1.x.y" git tag. -version = "1.7.1" +version = "1.7.2" edition = "2018" rust-version = "1.39" license = "MIT"
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/LICENSE b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/LICENSE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/LICENSE rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/LICENSE
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/README.md b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/README.md rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/README.md
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/SECURITY.md b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/SECURITY.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/SECURITY.md rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/SECURITY.md
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/benches/buf.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/benches/buf.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/benches/buf.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/benches/buf.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/benches/bytes.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/benches/bytes.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/benches/bytes.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/benches/bytes.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/benches/bytes_mut.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/benches/bytes_mut.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/benches/bytes_mut.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/benches/bytes_mut.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/ci/miri.sh b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/ci/miri.sh similarity index 66% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/ci/miri.sh rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/ci/miri.sh index 0158756..7df29f3 100755 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/ci/miri.sh +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/ci/miri.sh
@@ -1,8 +1,7 @@ #!/bin/bash set -e -rustup toolchain install nightly --component miri -rustup override set nightly +rustup component add miri cargo miri setup export MIRIFLAGS="-Zmiri-strict-provenance"
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/ci/test-stable.sh b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/ci/test-stable.sh similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/ci/test-stable.sh rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/ci/test-stable.sh
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/ci/tsan.sh b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/ci/tsan.sh similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/ci/tsan.sh rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/ci/tsan.sh
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/clippy.toml b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/clippy.toml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/clippy.toml rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/clippy.toml
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/buf_impl.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/buf_impl.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/buf_impl.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/buf_impl.rs index c44d4fb..9ef4640 100644 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/buf_impl.rs +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/buf_impl.rs
@@ -66,6 +66,12 @@ }}; } +// https://en.wikipedia.org/wiki/Sign_extension +fn sign_extend(val: u64, nbytes: usize) -> i64 { + let shift = (8 - nbytes) * 8; + (val << shift) as i64 >> shift +} + /// Read bytes from a buffer. /// /// A buffer stores bytes in memory such that read operations are infallible. @@ -923,7 +929,7 @@ /// This function panics if there is not enough remaining data in `self`, or /// if `nbytes` is greater than 8. fn get_int(&mut self, nbytes: usize) -> i64 { - buf_get_impl!(be => self, i64, nbytes); + sign_extend(self.get_uint(nbytes), nbytes) } /// Gets a signed n-byte integer from `self` in little-endian byte order. @@ -944,7 +950,7 @@ /// This function panics if there is not enough remaining data in `self`, or /// if `nbytes` is greater than 8. fn get_int_le(&mut self, nbytes: usize) -> i64 { - buf_get_impl!(le => self, i64, nbytes); + sign_extend(self.get_uint_le(nbytes), nbytes) } /// Gets a signed n-byte integer from `self` in native-endian byte order.
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/buf_mut.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/buf_mut.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/buf_mut.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/buf_mut.rs index e13278d2..2a3b5e9e 100644 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/buf_mut.rs +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/buf_mut.rs
@@ -1107,7 +1107,7 @@ } } - /// Writes an IEEE754 single-precision (4 bytes) floating point number to + /// Writes an IEEE754 single-precision (4 bytes) floating point number to /// `self` in big-endian byte order. /// /// The current position is advanced by 4. @@ -1131,7 +1131,7 @@ self.put_u32(n.to_bits()); } - /// Writes an IEEE754 single-precision (4 bytes) floating point number to + /// Writes an IEEE754 single-precision (4 bytes) floating point number to /// `self` in little-endian byte order. /// /// The current position is advanced by 4. @@ -1183,7 +1183,7 @@ self.put_u32_ne(n.to_bits()); } - /// Writes an IEEE754 double-precision (8 bytes) floating point number to + /// Writes an IEEE754 double-precision (8 bytes) floating point number to /// `self` in big-endian byte order. /// /// The current position is advanced by 8. @@ -1207,7 +1207,7 @@ self.put_u64(n.to_bits()); } - /// Writes an IEEE754 double-precision (8 bytes) floating point number to + /// Writes an IEEE754 double-precision (8 bytes) floating point number to /// `self` in little-endian byte order. /// /// The current position is advanced by 8. @@ -1231,7 +1231,7 @@ self.put_u64_le(n.to_bits()); } - /// Writes an IEEE754 double-precision (8 bytes) floating point number to + /// Writes an IEEE754 double-precision (8 bytes) floating point number to /// `self` in native-endian byte order. /// /// The current position is advanced by 8.
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/chain.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/chain.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/chain.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/chain.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/iter.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/iter.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/iter.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/iter.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/limit.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/limit.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/limit.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/limit.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/mod.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/mod.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/reader.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/reader.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/reader.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/reader.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/take.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/take.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/take.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/take.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/uninit_slice.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/uninit_slice.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/uninit_slice.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/uninit_slice.rs index 82ebdbb..aea096ae 100644 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/uninit_slice.rs +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/uninit_slice.rs
@@ -110,7 +110,7 @@ unsafe { self[index..].as_mut_ptr().write(byte) } } - /// Copies bytes from `src` into `self`. + /// Copies bytes from `src` into `self`. /// /// The length of `src` must be the same as `self`. ///
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/vec_deque.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/vec_deque.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/vec_deque.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/vec_deque.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/writer.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/writer.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/buf/writer.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/buf/writer.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/bytes.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/bytes.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/bytes.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/bytes.rs index e0c33b3..ec95e802 100644 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/bytes.rs +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/bytes.rs
@@ -142,6 +142,7 @@ Bytes::from_static(EMPTY) } + /// Creates a new empty `Bytes`. #[cfg(all(loom, test))] pub fn new() -> Self { const EMPTY: &[u8] = &[]; @@ -172,6 +173,7 @@ } } + /// Creates a new `Bytes` from a static slice. #[cfg(all(loom, test))] pub fn from_static(bytes: &'static [u8]) -> Self { Bytes { @@ -1301,7 +1303,7 @@ offset: *const u8, len: usize, ) -> Bytes { - // If the buffer is still tracked in a `Vec<u8>`. It is time to + // If the buffer is still tracked in a `Vec<u8>`. It is time to // promote the vec to an `Arc`. This could potentially be called // concurrently, so some care must be taken.
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/bytes_mut.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/bytes_mut.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/bytes_mut.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/bytes_mut.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/fmt/debug.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/fmt/debug.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/fmt/debug.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/fmt/debug.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/fmt/hex.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/fmt/hex.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/fmt/hex.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/fmt/hex.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/fmt/mod.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/fmt/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/fmt/mod.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/fmt/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/lib.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/lib.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/loom.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/loom.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/loom.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/loom.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/serde.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/serde.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/src/serde.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/src/serde.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_buf.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_buf.rs similarity index 86% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_buf.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_buf.rs index 3940f92..5aadea43 100644 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_buf.rs +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_buf.rs
@@ -37,6 +37,19 @@ } #[test] +fn test_get_int() { + let mut buf = &b"\xd6zomg"[..]; + assert_eq!(-42, buf.get_int(1)); + let mut buf = &b"\xd6zomg"[..]; + assert_eq!(-42, buf.get_int_le(1)); + + let mut buf = &b"\xfe\x1d\xc0zomg"[..]; + assert_eq!(0xffffffffffc01dfeu64 as i64, buf.get_int_le(3)); + let mut buf = &b"\xfe\x1d\xc0zomg"[..]; + assert_eq!(0xfffffffffffe1dc0u64 as i64, buf.get_int(3)); +} + +#[test] #[should_panic] fn test_get_u16_buffer_underflow() { let mut buf = &b"\x21"[..];
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_buf_mut.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_buf_mut.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_buf_mut.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_buf_mut.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_bytes.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_bytes.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_bytes.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_bytes.rs index 8e5d0ae1..59c967b 100644 --- a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_bytes.rs +++ b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_bytes.rs
@@ -676,6 +676,43 @@ assert_eq!(a, b"d zomg wat wat"[..]); } +// Ensures BytesMut::advance reduces always capacity +// +// See https://github.com/tokio-rs/bytes/issues/725 +#[test] +fn advance_bytes_mut_remaining_capacity() { + // reduce the search space under miri + let max_capacity = if cfg!(miri) { 16 } else { 256 }; + for capacity in 0..=max_capacity { + for len in 0..=capacity { + for advance in 0..=len { + eprintln!("testing capacity={capacity}, len={len}, advance={advance}"); + let mut buf = BytesMut::with_capacity(capacity); + + buf.resize(len, 42); + assert_eq!(buf.len(), len, "resize should write `len` bytes"); + assert_eq!( + buf.remaining(), + len, + "Buf::remaining() should equal BytesMut::len" + ); + + buf.advance(advance); + assert_eq!( + buf.remaining(), + len - advance, + "Buf::advance should reduce the remaining len" + ); + assert_eq!( + buf.capacity(), + capacity - advance, + "Buf::advance should reduce the remaining capacity" + ); + } + } + } +} + #[test] #[should_panic] fn advance_past_len() {
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_bytes_odd_alloc.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_bytes_odd_alloc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_bytes_odd_alloc.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_bytes_odd_alloc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_bytes_vec_alloc.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_bytes_vec_alloc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_bytes_vec_alloc.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_bytes_vec_alloc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_chain.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_chain.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_chain.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_chain.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_debug.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_debug.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_debug.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_debug.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_iter.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_iter.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_iter.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_iter.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_reader.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_reader.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_reader.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_reader.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_serde.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_serde.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_serde.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_serde.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_take.rs b/third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_take.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/bytes-1.7.1/tests/test_take.rs rename to third_party/rust/chromium_crates_io/vendor/bytes-1.7.2/tests/test_take.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/cc-1.1.20/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/cc-1.1.23/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cc-1.1.20/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/cc-1.1.23/.cargo-checksum.json
diff --git a/third_party/rust/chromium_crates_io/vendor/cc-1.1.20/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/cc-1.1.23/Cargo.toml similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/cc-1.1.20/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/cc-1.1.23/Cargo.toml index d2b1be7..35580dc 100644 --- a/third_party/rust/chromium_crates_io/vendor/cc-1.1.20/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/cc-1.1.23/Cargo.toml
@@ -10,7 +10,7 @@ [package] name = "cc" -version = "1.1.20" +version = "1.1.23" [features] "jobserver" = []
diff --git a/third_party/rust/chromium_crates_io/vendor/cc-1.1.20/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/cc-1.1.23/src/lib.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/cc-1.1.20/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/cc-1.1.23/src/lib.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/.cargo_vcs_info.json deleted file mode 100644 index bdb89f31..0000000 --- a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/.cargo_vcs_info.json +++ /dev/null
@@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "11d05bdaec5f2ff9e5d1a8aed555958789f4cef8" - }, - "path_in_vcs": "" -} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/.cargo-checksum.json
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/.cargo_vcs_info.json new file mode 100644 index 0000000..63b4a3e5 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/.cargo_vcs_info.json
@@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "e16928adc9496537794ce9ae93a55558b45db77a" + }, + "path_in_vcs": "" +} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/Cargo.toml similarity index 87% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/Cargo.toml index 9d31e895..18ca4565 100644 --- a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/Cargo.toml
@@ -13,14 +13,19 @@ edition = "2021" rust-version = "1.57.0" name = "fdeflate" -version = "0.3.4" +version = "0.3.5" authors = ["The image-rs Developers"] +build = false include = [ "/src", "README.md", "LICENSE-APACHE", "LICENSE-MIT", ] +autobins = false +autoexamples = false +autotests = false +autobenches = false description = "Fast specialized deflate implementation" homepage = "https://github.com/image-rs/fdeflate" documentation = "https://docs.rs/fdeflate" @@ -29,6 +34,10 @@ license = "MIT OR Apache-2.0" repository = "https://github.com/image-rs/fdeflate" +[lib] +name = "fdeflate" +path = "src/lib.rs" + [dependencies.simd-adler32] version = "0.3.4"
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/Cargo.toml.orig similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/Cargo.toml.orig index 59910ff..8578eee 100644 --- a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/Cargo.toml.orig
@@ -1,6 +1,6 @@ [package] name = "fdeflate" -version = "0.3.4" +version = "0.3.5" edition = "2021" # note: when changed, also update test runner in `.github/workflows/rust.yml`
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/LICENSE-APACHE
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/LICENSE-MIT
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/README.md b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/README.md rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/README.md
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/compress.rs b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/compress.rs similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/compress.rs rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/compress.rs index 027d0ef..b55116e 100644 --- a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/compress.rs +++ b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/compress.rs
@@ -1,8 +1,5 @@ use simd_adler32::Adler32; -use std::{ - convert::TryInto, - io::{self, Seek, SeekFrom, Write}, -}; +use std::io::{self, Seek, SeekFrom, Write}; use crate::tables::{ BITMASKS, HUFFMAN_CODES, HUFFMAN_LENGTHS, LENGTH_TO_LEN_EXTRA, LENGTH_TO_SYMBOL, @@ -82,32 +79,13 @@ } fn write_headers(&mut self) -> io::Result<()> { - self.write_bits(0x0178, 16)?; // zlib header - - self.write_bits(0b1, 1)?; // BFINAL - self.write_bits(0b10, 2)?; // Dynamic Huffman block - - self.write_bits((HUFFMAN_LENGTHS.len() - 257) as u64, 5)?; // # of length / literal codes - self.write_bits(0, 5)?; // 1 distance code - self.write_bits(15, 4)?; // 16 code length codes - - // Write code lengths for code length alphabet - for _ in 0..3 { - self.write_bits(0, 3)?; - } - for _ in 0..16 { - self.write_bits(4, 3)?; - } - - // Write code lengths for length/literal alphabet - for &len in &HUFFMAN_LENGTHS { - self.write_bits((len.reverse_bits() >> 4) as u64, 4)?; - } - - // Write code lengths for distance alphabet - for _ in 0..1 { - self.write_bits(0b1000, 4)?; - } + const HEADER: [u8; 54] = [ + 120, 1, 237, 192, 3, 160, 36, 89, 150, 198, 241, 255, 119, 238, 141, 200, 204, 167, + 114, 75, 99, 174, 109, 219, 182, 109, 219, 182, 109, 219, 182, 109, 105, 140, 158, 150, + 74, 175, 158, 50, 51, 34, 238, 249, 118, 183, 106, 122, 166, 135, 59, 107, 213, 15, + ]; + self.writer.write_all(&HEADER[..53]).unwrap(); + self.write_bits(HEADER[53] as u64, 5)?; Ok(()) }
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/decompress.rs b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/decompress.rs similarity index 93% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/decompress.rs rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/decompress.rs index cc2628eb..f89747e3 100644 --- a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/decompress.rs +++ b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/decompress.rs
@@ -1,5 +1,3 @@ -use std::convert::TryInto; - use simd_adler32::Adler32; use crate::tables::{ @@ -193,7 +191,7 @@ fn fill_buffer(&mut self, input: &mut &[u8]) { if input.len() >= 8 { self.buffer |= u64::from_le_bytes(input[..8].try_into().unwrap()) << self.nbits; - *input = &mut &input[(63 - self.nbits as usize) / 8..]; + *input = &input[(63 - self.nbits as usize) / 8..]; self.nbits |= 56; } else { let nbytes = input.len().min((63 - self.nbits as usize) / 8); @@ -203,7 +201,7 @@ .checked_shl(self.nbits as u32) .unwrap_or(0); self.nbits += nbytes as u8 * 8; - *input = &mut &input[nbytes..]; + *input = &input[nbytes..]; } } @@ -410,6 +408,12 @@ compression: &mut CompressedBlock, max_search_bits: u8, ) -> Result<(), DecompressionError> { + // If there is no code assigned for the EOF symbol then the bitstream is invalid. + if code_lengths[256] == 0 { + // TODO: Return a dedicated error in this case. + return Err(DecompressionError::BadLiteralLengthHuffmanTree); + } + // Build the literal/length code table. let lengths = &code_lengths[..288]; let codes: [u16; 288] = crate::compute_codes(&lengths.try_into().unwrap()) @@ -745,7 +749,7 @@ (dist_entry >> 8) as u8, dist_entry as u8, ) - } else { + } else if self.nbits > litlen_code_bits + length_extra_bits + 9 { let mut dist_extra_bits = 0; let mut dist_base = 0; let mut dist_advance_bits = 0; @@ -763,6 +767,8 @@ return Err(DecompressionError::InvalidDistanceCode); } (dist_base, dist_extra_bits, dist_advance_bits) + } else { + break; }; bits >>= dist_code_bits; @@ -1068,7 +1074,7 @@ #[cfg(test)] mod tests { - use crate::tables::{self, LENGTH_TO_LEN_EXTRA, LENGTH_TO_SYMBOL}; + use crate::tables::{LENGTH_TO_LEN_EXTRA, LENGTH_TO_SYMBOL}; use super::*; use rand::Rng; @@ -1084,7 +1090,7 @@ let decompressed = decompress_to_vec(&compressed).unwrap(); assert_eq!(decompressed.len(), data.len()); for (i, (a, b)) in decompressed.chunks(1).zip(data.chunks(1)).enumerate() { - assert_eq!(a, b, "chunk {}..{}", i * 1, i * 1 + 1); + assert_eq!(a, b, "chunk {}..{}", i, i + 1); } assert_eq!(&decompressed, data); } @@ -1095,8 +1101,8 @@ // .bytes() // .collect::<Result<Vec<_>, _>>() // .unwrap(); - let decompressed = decompress_to_vec(&data).unwrap(); - let decompressed2 = miniz_oxide::inflate::decompress_to_vec_zlib(&data).unwrap(); + let decompressed = decompress_to_vec(data).unwrap(); + let decompressed2 = miniz_oxide::inflate::decompress_to_vec_zlib(data).unwrap(); for i in 0..decompressed.len().min(decompressed2.len()) { if decompressed[i] != decompressed2[i] { panic!( @@ -1171,7 +1177,7 @@ #[test] fn constant() { - roundtrip_miniz_oxide(&vec![0; 50]); + roundtrip_miniz_oxide(&[0; 50]); roundtrip_miniz_oxide(&vec![5; 2048]); roundtrip_miniz_oxide(&vec![128; 2048]); roundtrip_miniz_oxide(&vec![254; 2048]); @@ -1267,4 +1273,62 @@ assert_eq!(output_written, 0); } } + + mod test_utils; + use test_utils::{decompress_by_chunks, TestDecompressionError}; + + fn verify_no_sensitivity_to_input_chunking( + input: &[u8], + ) -> Result<Vec<u8>, TestDecompressionError> { + let r_whole = decompress_by_chunks(input, vec![input.len()], false); + let r_bytewise = decompress_by_chunks(input, std::iter::repeat(1), false); + assert_eq!(r_whole, r_bytewise); + r_whole // Returning an arbitrary result, since this is equal to `r_bytewise`. + } + + /// This is a regression test found by the `buf_independent` fuzzer from the `png` crate. When + /// this test case was found, the results were unexpectedly different when 1) decompressing the + /// whole input (successful result) vs 2) decompressing byte-by-byte + /// (`Err(InvalidDistanceCode)`). + #[test] + fn test_input_chunking_sensitivity_when_handling_distance_codes() { + let result = verify_no_sensitivity_to_input_chunking(include_bytes!( + "../tests/input-chunking-sensitivity-example1.zz" + )) + .unwrap(); + assert_eq!(result.len(), 281); + assert_eq!(simd_adler32::adler32(&result.as_slice()), 751299); + } + + /// This is a regression test found by the `inflate_bytewise3` fuzzer from the `fdeflate` + /// crate. When this test case was found, the results were unexpectedly different when 1) + /// decompressing the whole input (`Err(DistanceTooFarBack)`) vs 2) decompressing byte-by-byte + /// (successful result)`). + #[test] + fn test_input_chunking_sensitivity_when_no_end_of_block_symbol_example1() { + let err = verify_no_sensitivity_to_input_chunking(include_bytes!( + "../tests/input-chunking-sensitivity-example2.zz" + )) + .unwrap_err(); + assert_eq!( + err, + TestDecompressionError::ProdError(DecompressionError::BadLiteralLengthHuffmanTree) + ); + } + + /// This is a regression test found by the `inflate_bytewise3` fuzzer from the `fdeflate` + /// crate. When this test case was found, the results were unexpectedly different when 1) + /// decompressing the whole input (`Err(InvalidDistanceCode)`) vs 2) decompressing byte-by-byte + /// (successful result)`). + #[test] + fn test_input_chunking_sensitivity_when_no_end_of_block_symbol_example2() { + let err = verify_no_sensitivity_to_input_chunking(include_bytes!( + "../tests/input-chunking-sensitivity-example3.zz" + )) + .unwrap_err(); + assert_eq!( + err, + TestDecompressionError::ProdError(DecompressionError::BadLiteralLengthHuffmanTree) + ); + } }
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/decompress/tests/test_utils.rs b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/decompress/tests/test_utils.rs new file mode 100644 index 0000000..bcec96ba --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/decompress/tests/test_utils.rs
@@ -0,0 +1,101 @@ +//! Testing utilities for testing `fdeflate::Decompressor`. +//! +//! These utilities are used by: +//! +//! * Unit tests (e.g. `#[test]` tests in `src/decompress.rs`) +//! * Fuzzers (e.g. `fuzz/fuzz_targets/inflate_bytewise3.rs`) + +#[cfg(test)] +use crate as fdeflate; + +use fdeflate::{DecompressionError, Decompressor}; + +#[derive(Debug, PartialEq)] +pub enum TestDecompressionError { + ProdError(DecompressionError), + TestError(TestErrorKind), +} + +#[derive(Debug, Eq, PartialEq)] +pub enum TestErrorKind { + OutputTooLarge, + TooManyIterations, +} + +impl From<DecompressionError> for TestDecompressionError { + fn from(e: DecompressionError) -> Self { + Self::ProdError(e) + } +} + +impl From<TestErrorKind> for TestDecompressionError { + fn from(kind: TestErrorKind) -> Self { + Self::TestError(kind) + } +} + +/// Decompresses `input` when feeding it into a `Decompressor::read` in `chunks`. +/// +/// `chunks` typically can be used to decode the whole input at once (setting `chunks` to +/// `vec![input.len]`) or byte-by-byte (setting `chunks` to `std::iter::repeat(1)`). +/// But `chunks` can also be used to replicate arbitrary chunking patterns (such as may be +/// used by some fuzzing-based repros from the `png` crate). +/// +/// `early_eof` is used to the last `end_of_input` argument of `Decompressor::read` calls. +/// When `early_eof` is `false`, then `end_of_input` is `false` until the whole input is +/// consumed (and then is `Decompressor::is_done` is still false, then `Decompressor::read` +/// is called one or more times with empty input slice and `end_of_input` set to true). +/// When `early_eof` is `true` then `end_of_input` is set to `true` as soon as the slice +/// fed to `Decompressor::read` "reaches" the end of the whole input. +/// +/// Unlike the `png` crate, this testing helper uses a big, fixed-size output buffer. +/// (i.e. there is no simulation of `ZlibStream.compact_out_buffer_if_needed` from the `png` +/// crate). +pub fn decompress_by_chunks( + input: &[u8], + chunks: impl IntoIterator<Item = usize>, + early_eof: bool, +) -> Result<Vec<u8>, TestDecompressionError> { + let mut chunks = chunks.into_iter(); + + // `iteration_counter` helps to prevent infinite loops (which may happen with `chunks` such + // as `std::iter::repeat(0)`). + let mut iteration_counter = 0; + + // Ignoring checksums so that we can work with inputs generated by fuzzing. (Fuzzing + // typically ignores checksums to make it easier to explore the space of possible inputs.) + let mut d = Decompressor::new(); + d.ignore_adler32(); + + let mut out_buf = vec![0; 1_000_000]; + let mut in_pos = 0; + let mut out_pos = 0; + while !d.is_done() { + iteration_counter += 1; + if iteration_counter > 5000 { + return Err(TestErrorKind::TooManyIterations.into()); + } + + let chunk_size = chunks.next().unwrap_or(0); + let start = in_pos; + let end = std::cmp::min(start + chunk_size, input.len()); + + let eof = if early_eof { + end == input.len() + } else { + start == input.len() + }; + + let (in_consumed, out_written) = + d.read(&input[start..end], out_buf.as_mut_slice(), out_pos, eof)?; + + in_pos += in_consumed; + out_pos += out_written; + if out_pos == out_buf.len() && in_consumed == 0 && !d.is_done() { + return Err(TestErrorKind::OutputTooLarge.into()); + } + } + + out_buf.resize(out_pos, 0xFF); + Ok(out_buf) +}
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/lib.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/lib.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/tables.rs b/third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/tables.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/tables.rs rename to third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/tables.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/.cargo_vcs_info.json deleted file mode 100644 index 400c5269..0000000 --- a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/.cargo_vcs_info.json +++ /dev/null
@@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "50852c6138789b255d5b2dfea2abb1a1dda99e99" - }, - "path_in_vcs": "" -} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/.cargo-checksum.json
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/.cargo_vcs_info.json new file mode 100644 index 0000000..de98063 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/.cargo_vcs_info.json
@@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1a28821dc116dac14178858be056e4a58ef8f501" + }, + "path_in_vcs": "" +} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/CHANGELOG.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/CHANGELOG.md rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/CHANGELOG.md
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/Cargo.lock b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/Cargo.lock similarity index 95% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/Cargo.lock rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/Cargo.lock index ed1ee99d..589dce6 100644 --- a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/Cargo.lock +++ b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/Cargo.lock
@@ -52,7 +52,7 @@ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" dependencies = [ "cloudflare-zlib-sys", "crc32fast", @@ -93,9 +93,9 @@ [[package]] name = "libz-rs-sys" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ec231cd2039ed0e15e72467a2eabcdf6ff103e8a95e01eb8e2fb6f4c0661be7" +checksum = "b6fe3b2b1132d0a04912e2ea4f1196212562ba7775abe9f3b32d49489b17b75d" dependencies = [ "zlib-rs", ] @@ -193,6 +193,6 @@ [[package]] name = "zlib-rs" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e942bb8453553ee59b701f977d5331a512f8dd07906153bbe050cb9bb58a4811" +checksum = "4bf919c619da9eaede02291295e9c5ae230fc7b5f2a5f4257ff859b075111faf"
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/Cargo.toml similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/Cargo.toml index 1970fe9..ae38f5c 100644 --- a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/Cargo.toml
@@ -13,7 +13,7 @@ edition = "2018" rust-version = "1.56.1" name = "flate2" -version = "1.0.33" +version = "1.0.34" authors = [ "Alex Crichton <alex@alexcrichton.com>", "Josh Triplett <josh@joshtriplett.org>", @@ -177,7 +177,7 @@ optional = true [dependencies.libz-rs-sys] -version = "0.2.1" +version = "0.3.0" features = [ "std", "rust-allocator",
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/Cargo.toml.orig similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/Cargo.toml.orig index 47c7421d..1d79413d 100644 --- a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/Cargo.toml.orig
@@ -1,7 +1,7 @@ [package] name = "flate2" authors = ["Alex Crichton <alex@alexcrichton.com>", "Josh Triplett <josh@joshtriplett.org>"] -version = "1.0.33" +version = "1.0.34" edition = "2018" license = "MIT OR Apache-2.0" readme = "README.md" @@ -21,7 +21,8 @@ [dependencies] libz-sys = { version = "1.1.20", optional = true, default-features = false } libz-ng-sys = { version = "1.1.16", optional = true } -libz-rs-sys = { version = "0.2.1", optional = true, default-features = false, features = ["std", "rust-allocator"] } +# this matches the default features, but we don't want to depend on the default features staying the same +libz-rs-sys = { version = "0.3.0", optional = true, default-features = false, features = ["std", "rust-allocator"] } cloudflare-zlib-sys = { version = "0.3.0", optional = true } miniz_oxide = { version = "0.8.0", optional = true, default-features = false, features = ["with-alloc"] } crc32fast = "1.2.0"
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/LICENSE-APACHE
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/LICENSE-MIT
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/MAINTENANCE.md b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/MAINTENANCE.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/MAINTENANCE.md rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/MAINTENANCE.md
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/README.md b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/README.md rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/README.md
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/compress_file.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/compress_file.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/compress_file.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/compress_file.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/decompress_file.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/decompress_file.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/decompress_file.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/decompress_file.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflatedecoder-bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflatedecoder-bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflatedecoder-bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflatedecoder-bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflatedecoder-read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflatedecoder-read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflatedecoder-read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflatedecoder-read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflatedecoder-write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflatedecoder-write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflatedecoder-write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflatedecoder-write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflateencoder-bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflateencoder-bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflateencoder-bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflateencoder-bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflateencoder-read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflateencoder-read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflateencoder-read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflateencoder-read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflateencoder-write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflateencoder-write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/deflateencoder-write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/deflateencoder-write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzbuilder.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzbuilder.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzbuilder.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzbuilder.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzdecoder-bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzdecoder-bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzdecoder-bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzdecoder-bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzdecoder-read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzdecoder-read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzdecoder-read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzdecoder-read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzdecoder-write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzdecoder-write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzdecoder-write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzdecoder-write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzencoder-bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzencoder-bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzencoder-bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzencoder-bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzencoder-read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzencoder-read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzencoder-read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzencoder-read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzencoder-write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzencoder-write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzencoder-write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzencoder-write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzmultidecoder-bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzmultidecoder-bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzmultidecoder-bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzmultidecoder-bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzmultidecoder-read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzmultidecoder-read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/gzmultidecoder-read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/gzmultidecoder-read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/hello_world.txt b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/hello_world.txt similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/hello_world.txt rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/hello_world.txt
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/hello_world.txt.gz b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/hello_world.txt.gz similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/hello_world.txt.gz rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/hello_world.txt.gz Binary files differ
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibdecoder-bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibdecoder-bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibdecoder-bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibdecoder-bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibdecoder-read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibdecoder-read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibdecoder-read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibdecoder-read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibdecoder-write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibdecoder-write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibdecoder-write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibdecoder-write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibencoder-bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibencoder-bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibencoder-bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibencoder-bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibencoder-read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibencoder-read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibencoder-read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibencoder-read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibencoder-write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibencoder-write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/examples/zlibencoder-write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/examples/zlibencoder-write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/bufreader.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/bufreader.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/bufreader.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/bufreader.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/crc.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/crc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/crc.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/crc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/mod.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/mod.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/c.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/c.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/c.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/c.rs index 867f2f9..05e5017 100644 --- a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/c.rs +++ b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/c.rs
@@ -447,7 +447,7 @@ #[cfg(feature = "zlib-ng")] const ZLIB_VERSION: &'static str = "2.1.0.devel\0"; #[cfg(all(not(feature = "zlib-ng"), feature = "zlib-rs"))] - const ZLIB_VERSION: &'static str = "0.1.0\0"; + const ZLIB_VERSION: &'static str = "1.3.0-zlib-rs-0.3.0\0"; #[cfg(not(any(feature = "zlib-ng", feature = "zlib-rs")))] const ZLIB_VERSION: &'static str = "1.2.8\0";
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/mod.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/mod.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/rust.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/rust.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/rust.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/rust.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/mod.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/mod.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/lib.rs similarity index 92% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/lib.rs index d286ba2..c827413 100644 --- a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/lib.rs
@@ -192,6 +192,18 @@ /// /// The integer here is typically on a scale of 0-9 where 0 means "no /// compression" and 9 means "take as long as you'd like". + /// + /// ### Backend differences + /// + /// The [`miniz_oxide`](https://crates.io/crates/miniz_oxide) backend for flate2 + /// does not support level 0 or `Compression::none()`. Instead it interprets them + /// as the default compression level, which is quite slow. + /// `Compression::fast()` should be used instead. + /// + /// `miniz_oxide` also supports a non-compliant compression level 10. + /// It is even slower and may result in higher compression, but + /// **only miniz_oxide will be able to read the data** compressed with level 10. + /// Do **not** use level 10 if you need other software to be able to read it! pub const fn new(level: u32) -> Compression { Compression(level) } @@ -213,7 +225,7 @@ } /// Returns an integer representing the compression level, typically on a - /// scale of 0-9 + /// scale of 0-9. See [`new`](Self::new) for details about compression levels. pub fn level(&self) -> u32 { self.0 }
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/mem.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/mem.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/mem.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/mem.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zio.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zio.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zio.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zio.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/bufread.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/bufread.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/bufread.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/bufread.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/mod.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/mod.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/corrupt-gz-file.bin b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/corrupt-gz-file.bin similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/corrupt-gz-file.bin rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/corrupt-gz-file.bin Binary files differ
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/early-flush.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/early-flush.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/early-flush.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/early-flush.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/empty-read.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/empty-read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/empty-read.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/empty-read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/good-file.gz b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/good-file.gz similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/good-file.gz rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/good-file.gz Binary files differ
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/good-file.txt b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/good-file.txt similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/good-file.txt rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/good-file.txt
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/gunzip.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/gunzip.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/gunzip.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/gunzip.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/multi.gz b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/multi.gz similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/multi.gz rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/multi.gz Binary files differ
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/multi.txt b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/multi.txt similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/multi.txt rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/multi.txt
diff --git a/third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/zero-write.rs b/third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/zero-write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/tests/zero-write.rs rename to third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/tests/zero-write.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/.cargo_vcs_info.json deleted file mode 100644 index 5f6f5ea0..0000000 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/.cargo_vcs_info.json +++ /dev/null
@@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "c809c58c6873c05c9aa8cb3b9142f6c4d2818e57" - }, - "path_in_vcs": "" -} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/align.rs deleted file mode 100644 index 4fdba9a6..0000000 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/align.rs +++ /dev/null
@@ -1,6 +0,0 @@ -s! { - #[repr(align(4))] - pub struct in6_addr { - pub s6_addr: [u8; 16], - } -}
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/no_align.rs deleted file mode 100644 index f6b9f4c..0000000 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/no_align.rs +++ /dev/null
@@ -1,6 +0,0 @@ -s! { - pub struct in6_addr { - pub s6_addr: [u8; 16], - __align: [u32; 0], - } -}
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/.cargo-checksum.json
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/.cargo_vcs_info.json new file mode 100644 index 0000000..9d2cedf --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/.cargo_vcs_info.json
@@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "7373a1abe57da20efae9fd2ca891d7b905c19e03" + }, + "path_in_vcs": "" +} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/.gitignore b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/.gitignore similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/.gitignore rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/.gitignore
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/.release-plz.toml b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/.release-plz.toml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/.release-plz.toml rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/.release-plz.toml
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/CHANGELOG.md b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/CHANGELOG.md similarity index 61% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/CHANGELOG.md rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/CHANGELOG.md index a5ac002..01c340a 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/CHANGELOG.md +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/CHANGELOG.md
@@ -2,6 +2,37 @@ ## [Unreleased] +## [0.2.159](https://github.com/rust-lang/libc/compare/0.2.158...0.2.159) - 2024-09-24 + +### Added + +- Android: add more `AT_*` constants in <https://github.com/rust-lang/libc/pull/3779> +- Apple: add missing `NOTE_*` constants in <https://github.com/rust-lang/libc/pull/3883> +- Hermit: add missing error numbers in <https://github.com/rust-lang/libc/pull/3858> +- Hurd: add `__timeval` for 64-bit support in <https://github.com/rust-lang/libc/pull/3786> +- Linux: add `epoll_pwait2` in <https://github.com/rust-lang/libc/pull/3868> +- Linux: add `mq_notify` in <https://github.com/rust-lang/libc/pull/3849> +- Linux: add missing `NFT_CT_*` constants in <https://github.com/rust-lang/libc/pull/3844> +- Linux: add the `fchmodat2` syscall in <https://github.com/rust-lang/libc/pull/3588> +- Linux: add the `mseal` syscall in <https://github.com/rust-lang/libc/pull/3798> +- OpenBSD: add `sendmmsg` and `recvmmsg` in <https://github.com/rust-lang/libc/pull/3831> +- Unix: add `IN6ADDR_ANY_INIT` and `IN6ADDR_LOOPBACK_INIT` in <https://github.com/rust-lang/libc/pull/3693> +- VxWorks: add `S_ISVTX` in <https://github.com/rust-lang/libc/pull/3768> +- VxWorks: add `vxCpuLib` and `taskLib` functions <https://github.com/rust-lang/libc/pull/3861> +- WASIp2: add definitions for `std::net` support in <https://github.com/rust-lang/libc/pull/3892> + +### Fixed + +- Correctly handle version checks when `clippy-driver` is used <https://github.com/rust-lang/libc/pull/3893> + +### Changed + +- EspIdf: change signal constants to c_int in <https://github.com/rust-lang/libc/pull/3895> +- HorizonOS: update network definitions in <https://github.com/rust-lang/libc/pull/3863> +- Linux: combine `ioctl` APIs in <https://github.com/rust-lang/libc/pull/3722> +- WASI: enable CI testing in <https://github.com/rust-lang/libc/pull/3869> +- WASIp2: enable CI testing in <https://github.com/rust-lang/libc/pull/3870> + ## [0.2.158](https://github.com/rust-lang/libc/compare/0.2.157...0.2.158) - 2024-08-19 ### Other
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/CONTRIBUTING.md b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/CONTRIBUTING.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/CONTRIBUTING.md rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/CONTRIBUTING.md
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/Cargo.toml similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/Cargo.toml index cef9122..7f56824 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/Cargo.toml
@@ -11,7 +11,7 @@ [package] name = "libc" -version = "0.2.158" +version = "0.2.159" authors = ["The Rust Project Developers"] build = "build.rs" exclude = [
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/Cargo.toml.orig similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/Cargo.toml.orig index 8fe2ad6..3ca0827 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/Cargo.toml.orig
@@ -1,6 +1,6 @@ [package] name = "libc" -version = "0.2.158" +version = "0.2.159" authors = ["The Rust Project Developers"] license = "MIT OR Apache-2.0" readme = "README.md"
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/LICENSE-APACHE
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/LICENSE-MIT
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/README.md b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/README.md rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/README.md
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/build.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/build.rs similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/build.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/build.rs index 076bbc0..ce4541e6 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/build.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/build.rs
@@ -1,5 +1,5 @@ use std::env; -use std::process::Command; +use std::process::{Command, Output}; use std::str; // List of cfgs this build script is allowed to set. The list is needed to support check-cfg, as we @@ -30,6 +30,7 @@ "libc_thread_local", "libc_underscore_const_names", "libc_union", + "libc_ctest", ]; // Extra values to allow for check-cfg. @@ -193,6 +194,41 @@ } } +/// Run `rustc --version` and capture the output, adjusting arguments as needed if `clippy-driver` +/// is used instead. +fn rustc_version_cmd(is_clippy_driver: bool) -> Output { + let rustc = env::var_os("RUSTC").expect("Failed to get rustc version: missing RUSTC env"); + + let mut cmd = match env::var_os("RUSTC_WRAPPER") { + Some(ref wrapper) if wrapper.is_empty() => Command::new(rustc), + Some(wrapper) => { + let mut cmd = Command::new(wrapper); + cmd.arg(rustc); + if is_clippy_driver { + cmd.arg("--rustc"); + } + + cmd + } + None => Command::new(rustc), + }; + + cmd.arg("--version"); + + let output = cmd.output().ok().expect("Failed to get rustc version"); + + if !output.status.success() { + panic!( + "failed to run rustc: {}", + String::from_utf8_lossy(output.stderr.as_slice()) + ); + } + + output +} + +/// Return the minor version of `rustc`, as well as a bool indicating whether or not the version +/// is a nightly. fn rustc_minor_nightly() -> (u32, bool) { macro_rules! otry { ($e:expr) => { @@ -203,29 +239,14 @@ }; } - let rustc = env::var_os("RUSTC").expect("Failed to get rustc version: missing RUSTC env"); - let mut cmd = match env::var_os("RUSTC_WRAPPER").as_ref() { - Some(wrapper) if !wrapper.is_empty() => { - let mut cmd = Command::new(wrapper); - cmd.arg(rustc); - cmd - } - _ => Command::new(rustc), - }; + let mut output = rustc_version_cmd(false); - let output = cmd - .arg("--version") - .output() - .ok() - .expect("Failed to get rustc version"); - if !output.status.success() { - panic!( - "failed to run rustc: {}", - String::from_utf8_lossy(output.stderr.as_slice()) - ); + if otry!(str::from_utf8(&output.stdout).ok()).starts_with("clippy") { + output = rustc_version_cmd(true); } let version = otry!(str::from_utf8(&output.stdout).ok()); + let mut pieces = version.split('.'); if pieces.next() != Some("rustc 1") {
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/rustfmt.toml b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/rustfmt.toml similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/rustfmt.toml rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/rustfmt.toml
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fixed_width_ints.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fixed_width_ints.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fixed_width_ints.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fixed_width_ints.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/aarch64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/aarch64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/aarch64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/aarch64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/riscv64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/riscv64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/riscv64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/riscv64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/hermit.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/hermit.rs similarity index 74% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/hermit.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/hermit.rs index 145d1241..77df54ae 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/hermit.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/hermit.rs
@@ -267,6 +267,140 @@ pub const TCP_NODELAY: i32 = 1; +pub const EPERM: i32 = 1; +pub const ENOENT: i32 = 2; +pub const ESRCH: i32 = 3; +pub const EINTR: i32 = 4; +pub const EIO: i32 = 5; +pub const ENXIO: i32 = 6; +pub const E2BIG: i32 = 7; +pub const ENOEXEC: i32 = 8; +pub const EBADF: i32 = 9; +pub const ECHILD: i32 = 10; +pub const EAGAIN: i32 = 11; +pub const ENOMEM: i32 = 12; +pub const EACCES: i32 = 13; +pub const EFAULT: i32 = 14; +pub const ENOTBLK: i32 = 15; +pub const EBUSY: i32 = 16; +pub const EEXIST: i32 = 17; +pub const EXDEV: i32 = 18; +pub const ENODEV: i32 = 19; +pub const ENOTDIR: i32 = 20; +pub const EISDIR: i32 = 21; +pub const EINVAL: i32 = 22; +pub const ENFILE: i32 = 23; +pub const EMFILE: i32 = 24; +pub const ENOTTY: i32 = 25; +pub const ETXTBSY: i32 = 26; +pub const EFBIG: i32 = 27; +pub const ENOSPC: i32 = 28; +pub const ESPIPE: i32 = 29; +pub const EROFS: i32 = 30; +pub const EMLINK: i32 = 31; +pub const EPIPE: i32 = 32; +pub const EDOM: i32 = 33; +pub const ERANGE: i32 = 34; +pub const EDEADLK: i32 = 35; +pub const ENAMETOOLONG: i32 = 36; +pub const ENOLCK: i32 = 37; +pub const ENOSYS: i32 = 38; +pub const ENOTEMPTY: i32 = 39; +pub const ELOOP: i32 = 40; +pub const EWOULDBLOCK: i32 = EAGAIN; +pub const ENOMSG: i32 = 42; +pub const EIDRM: i32 = 43; +pub const ECHRNG: i32 = 44; +pub const EL2NSYNC: i32 = 45; +pub const EL3HLT: i32 = 46; +pub const EL3RST: i32 = 47; +pub const ELNRNG: i32 = 48; +pub const EUNATCH: i32 = 49; +pub const ENOCSI: i32 = 50; +pub const EL2HLT: i32 = 51; +pub const EBADE: i32 = 52; +pub const EBADR: i32 = 53; +pub const EXFULL: i32 = 54; +pub const ENOANO: i32 = 55; +pub const EBADRQC: i32 = 56; +pub const EBADSLT: i32 = 57; +pub const EDEADLOCK: i32 = EDEADLK; +pub const EBFONT: i32 = 59; +pub const ENOSTR: i32 = 60; +pub const ENODATA: i32 = 61; +pub const ETIME: i32 = 62; +pub const ENOSR: i32 = 63; +pub const ENONET: i32 = 64; +pub const ENOPKG: i32 = 65; +pub const EREMOTE: i32 = 66; +pub const ENOLINK: i32 = 67; +pub const EADV: i32 = 68; +pub const ESRMNT: i32 = 69; +pub const ECOMM: i32 = 70; +pub const EPROTO: i32 = 71; +pub const EMULTIHOP: i32 = 72; +pub const EDOTDOT: i32 = 73; +pub const EBADMSG: i32 = 74; +pub const EOVERFLOW: i32 = 75; +pub const ENOTUNIQ: i32 = 76; +pub const EBADFD: i32 = 77; +pub const EREMCHG: i32 = 78; +pub const ELIBACC: i32 = 79; +pub const ELIBBAD: i32 = 80; +pub const ELIBSCN: i32 = 81; +pub const ELIBMAX: i32 = 82; +pub const ELIBEXEC: i32 = 83; +pub const EILSEQ: i32 = 84; +pub const ERESTART: i32 = 85; +pub const ESTRPIPE: i32 = 86; +pub const EUSERS: i32 = 87; +pub const ENOTSOCK: i32 = 88; +pub const EDESTADDRREQ: i32 = 89; +pub const EMSGSIZE: i32 = 90; +pub const EPROTOTYPE: i32 = 91; +pub const ENOPROTOOPT: i32 = 92; +pub const EPROTONOSUPPORT: i32 = 93; +pub const ESOCKTNOSUPPORT: i32 = 94; +pub const EOPNOTSUPP: i32 = 95; +pub const EPFNOSUPPORT: i32 = 96; +pub const EAFNOSUPPORT: i32 = 97; +pub const EADDRINUSE: i32 = 98; +pub const EADDRNOTAVAIL: i32 = 99; +pub const ENETDOWN: i32 = 100; +pub const ENETUNREACH: i32 = 101; +pub const ENETRESET: i32 = 102; +pub const ECONNABORTED: i32 = 103; +pub const ECONNRESET: i32 = 104; +pub const ENOBUFS: i32 = 105; +pub const EISCONN: i32 = 106; +pub const ENOTCONN: i32 = 107; +pub const ESHUTDOWN: i32 = 108; +pub const ETOOMANYREFS: i32 = 109; +pub const ETIMEDOUT: i32 = 110; +pub const ECONNREFUSED: i32 = 111; +pub const EHOSTDOWN: i32 = 112; +pub const EHOSTUNREACH: i32 = 113; +pub const EALREADY: i32 = 114; +pub const EINPROGRESS: i32 = 115; +pub const ESTALE: i32 = 116; +pub const EUCLEAN: i32 = 117; +pub const ENOTNAM: i32 = 118; +pub const ENAVAIL: i32 = 119; +pub const EISNAM: i32 = 120; +pub const EREMOTEIO: i32 = 121; +pub const EDQUOT: i32 = 122; +pub const ENOMEDIUM: i32 = 123; +pub const EMEDIUMTYPE: i32 = 124; +pub const ECANCELED: i32 = 125; +pub const ENOKEY: i32 = 126; +pub const EKEYEXPIRED: i32 = 127; +pub const EKEYREVOKED: i32 = 128; +pub const EKEYREJECTED: i32 = 129; +pub const EOWNERDEAD: i32 = 130; +pub const ENOTRECOVERABLE: i32 = 131; +pub const ERFKILL: i32 = 132; +pub const EHWPOISON: i32 = 133; + extern "C" { #[link_name = "sys_alloc"] pub fn alloc(size: usize, align: usize) -> *mut u8;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/lib.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/lib.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/macros.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/macros.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/macros.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/macros.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/psp.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/psp.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/psp.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/psp.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/sgx.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/sgx.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/sgx.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/sgx.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/solid/aarch64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/solid/aarch64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/solid/aarch64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/solid/aarch64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/solid/arm.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/solid/arm.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/solid/arm.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/solid/arm.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/solid/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/solid/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/solid/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/solid/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/switch.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/switch.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/switch.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/switch.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/teeos/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/teeos/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/teeos/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/teeos/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/aix/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/aix/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/aix/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/aix/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/aix/powerpc64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/aix/powerpc64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/aix/powerpc64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/aix/powerpc64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/align.rs new file mode 100644 index 0000000..2e7c954c --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/align.rs
@@ -0,0 +1,14 @@ +s! { + #[repr(align(4))] + pub struct in6_addr { + pub s6_addr: [u8; 16], + } +} + +pub const IN6ADDR_LOOPBACK_INIT: in6_addr = in6_addr { + s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], +}; + +pub const IN6ADDR_ANY_INIT: in6_addr = in6_addr { + s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], +};
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b32/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b32/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b32/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b32/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b32/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b32/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b32/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b32/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/aarch64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/aarch64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/aarch64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/aarch64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/aarch64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/aarch64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/aarch64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/aarch64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/x86_64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/x86_64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/x86_64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/x86_64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/x86_64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/x86_64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/x86_64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/x86_64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/long_array.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/long_array.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/long_array.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/long_array.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/mod.rs index 06b6c62..92d7240 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/mod.rs
@@ -4522,6 +4522,8 @@ pub const NOTE_LEEWAY: u32 = 0x00000010; pub const NOTE_CRITICAL: u32 = 0x00000020; pub const NOTE_BACKGROUND: u32 = 0x00000040; +pub const NOTE_MACH_CONTINUOUS_TIME: u32 = 0x00000080; +pub const NOTE_MACHTIME: u32 = 0x00000100; pub const NOTE_TRACK: u32 = 0x00000001; pub const NOTE_TRACKERR: u32 = 0x00000002; pub const NOTE_CHILD: u32 = 0x00000004;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/dragonfly/errno.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/dragonfly/errno.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/dragonfly/errno.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/dragonfly/errno.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/dragonfly/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/dragonfly/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/dragonfly/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/aarch64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/aarch64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/aarch64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/aarch64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/arm.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/arm.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/arm.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/arm.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd15/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd15/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/powerpc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/riscv64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/riscv64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/riscv64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/riscv64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/x86.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/x86.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/mod.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/mod.rs index e92cf659..dcd3582 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/mod.rs
@@ -92,6 +92,11 @@ pub piod_addr: *mut ::c_void, pub piod_len: ::size_t, } + + pub struct mmsghdr { + pub msg_hdr: ::msghdr, + pub msg_len: ::c_uint, + } } pub const D_T_FMT: ::nl_item = 0; @@ -848,6 +853,20 @@ pub fn dirname(path: *mut ::c_char) -> *mut ::c_char; pub fn basename(path: *mut ::c_char) -> *mut ::c_char; pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int; + + pub fn sendmmsg( + sockfd: ::c_int, + mmsg: *mut ::mmsghdr, + vlen: ::c_uint, + flags: ::c_int, + ) -> ::c_int; + pub fn recvmmsg( + sockfd: ::c_int, + mmsg: *mut ::mmsghdr, + vlen: ::c_uint, + flags: ::c_int, + timeout: *mut ::timespec, + ) -> ::c_int; } cfg_if! {
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/aarch64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/aarch64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/aarch64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/aarch64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/arm.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/arm.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/arm.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/arm.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/mips.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/mips.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/mips.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/mips.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/mod.rs index 0ad2473..0517a47 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/mod.rs
@@ -401,11 +401,6 @@ pub sdl_data: [::c_char; 12], } - pub struct mmsghdr { - pub msg_hdr: ::msghdr, - pub msg_len: ::c_uint, - } - pub struct __exit_status { pub e_termination: u16, pub e_exit: u16, @@ -2781,20 +2776,6 @@ pub fn kqueue1(flags: ::c_int) -> ::c_int; - pub fn sendmmsg( - sockfd: ::c_int, - msgvec: *mut ::mmsghdr, - vlen: ::c_uint, - flags: ::c_int, - ) -> ::c_int; - pub fn recvmmsg( - sockfd: ::c_int, - msgvec: *mut ::mmsghdr, - vlen: ::c_uint, - flags: ::c_int, - timeout: *mut ::timespec, - ) -> ::c_int; - pub fn _lwp_self() -> lwpid_t; pub fn memmem( haystack: *const ::c_void,
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/powerpc.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/powerpc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/powerpc.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/powerpc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/riscv64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/riscv64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/riscv64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/riscv64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/sparc64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/sparc64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/sparc64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/sparc64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/x86.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/x86.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/x86.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/x86.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/aarch64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/aarch64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/aarch64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/aarch64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/arm.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/arm.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/arm.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/arm.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/mips64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/mips64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/mips64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/mips64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/powerpc.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/powerpc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/powerpc.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/powerpc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/riscv64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/riscv64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/riscv64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/riscv64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/sparc64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/sparc64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/sparc64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/sparc64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/x86.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/x86.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/x86.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/x86.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/b32.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/b32.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/b32.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/b32.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/b64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/b64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/b64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/b64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/native.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/native.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/native.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/native.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/b32.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/b32.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/b32.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/b32.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/b64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/b64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/b64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/b64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/mod.rs index 71f1ac8d9..ad422fe 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/mod.rs
@@ -450,6 +450,11 @@ pub tv_nsec: __syscall_slong_t, } + pub struct __timeval { + pub tv_sec: i32, + pub tv_usec: i32, + } + pub struct __locale_data { pub _address: u8, }
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/arm.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/arm.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/arm.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/arm.rs index a062175..c4c78939 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/arm.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/arm.rs
@@ -533,6 +533,9 @@ pub const NGREG: ::c_int = 18; +// From NDK's asm/auxvec.h +pub const AT_SYSINFO_EHDR: ::c_ulong = 33; + f! { // Sadly, Android before 5.0 (API level 21), the accept4 syscall is not // exposed by the libc. As work-around, we implement it through `syscall`
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/x86/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/x86/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/x86/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/x86/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/x86/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/x86/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/x86/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/x86/mod.rs index e549f3b5..64ce93dd 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/x86/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/x86/mod.rs
@@ -585,6 +585,11 @@ pub const REG_UESP: ::c_int = 17; pub const REG_SS: ::c_int = 18; +// From NDK's asm/auxvec.h +pub const AT_SYSINFO: ::c_ulong = 32; +pub const AT_SYSINFO_EHDR: ::c_ulong = 33; +pub const AT_VECTOR_SIZE_ARCH: ::c_ulong = 3; + // socketcall values from linux/net.h (only the needed ones, and not public) const SYS_ACCEPT4: ::c_int = 18;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/int128.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/int128.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/int128.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/int128.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/mod.rs index 7b87a1d4..bd3146de 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/mod.rs
@@ -417,6 +417,10 @@ pub const PROT_BTI: ::c_int = 0x10; pub const PROT_MTE: ::c_int = 0x20; +// From NDK's asm/auxvec.h +pub const AT_SYSINFO_EHDR: ::c_ulong = 33; +pub const AT_VECTOR_SIZE_ARCH: ::c_ulong = 2; + cfg_if! { if #[cfg(libc_align)] { mod align;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/mod.rs similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/mod.rs index 9639e1b..97cf137 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/mod.rs
@@ -264,32 +264,6 @@ pub const RTLD_NOW: ::c_int = 2; pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void; -// From NDK's linux/auxvec.h -pub const AT_NULL: ::c_ulong = 0; -pub const AT_IGNORE: ::c_ulong = 1; -pub const AT_EXECFD: ::c_ulong = 2; -pub const AT_PHDR: ::c_ulong = 3; -pub const AT_PHENT: ::c_ulong = 4; -pub const AT_PHNUM: ::c_ulong = 5; -pub const AT_PAGESZ: ::c_ulong = 6; -pub const AT_BASE: ::c_ulong = 7; -pub const AT_FLAGS: ::c_ulong = 8; -pub const AT_ENTRY: ::c_ulong = 9; -pub const AT_NOTELF: ::c_ulong = 10; -pub const AT_UID: ::c_ulong = 11; -pub const AT_EUID: ::c_ulong = 12; -pub const AT_GID: ::c_ulong = 13; -pub const AT_EGID: ::c_ulong = 14; -pub const AT_PLATFORM: ::c_ulong = 15; -pub const AT_HWCAP: ::c_ulong = 16; -pub const AT_CLKTCK: ::c_ulong = 17; -pub const AT_SECURE: ::c_ulong = 23; -pub const AT_BASE_PLATFORM: ::c_ulong = 24; -pub const AT_RANDOM: ::c_ulong = 25; -pub const AT_HWCAP2: ::c_ulong = 26; -pub const AT_EXECFN: ::c_ulong = 31; -pub const AT_MINSIGSTKSZ: ::c_ulong = 51; - pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { value: 0, __reserved: [0; 36],
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/riscv64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/riscv64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/riscv64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/riscv64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/riscv64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/riscv64/mod.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/riscv64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/riscv64/mod.rs index 9d414dc..209f050f 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/riscv64/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/riscv64/mod.rs
@@ -345,6 +345,18 @@ pub const SYS_fspick: ::c_long = 433; pub const SYS_syscalls: ::c_long = 436; +// From NDK's asm/auxvec.h +pub const AT_SYSINFO_EHDR: ::c_ulong = 33; +pub const AT_L1I_CACHESIZE: ::c_ulong = 40; +pub const AT_L1I_CACHEGEOMETRY: ::c_ulong = 41; +pub const AT_L1D_CACHESIZE: ::c_ulong = 42; +pub const AT_L1D_CACHEGEOMETRY: ::c_ulong = 43; +pub const AT_L2_CACHESIZE: ::c_ulong = 44; +pub const AT_L2_CACHEGEOMETRY: ::c_ulong = 45; +pub const AT_L3_CACHESIZE: ::c_ulong = 46; +pub const AT_L3_CACHEGEOMETRY: ::c_ulong = 47; +pub const AT_VECTOR_SIZE_ARCH: ::c_ulong = 9; + cfg_if! { if #[cfg(libc_align)] { mod align;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/x86_64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/x86_64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/x86_64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/x86_64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/x86_64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/x86_64/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/x86_64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/x86_64/mod.rs index be6b501..a736330 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/x86_64/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/x86_64/mod.rs
@@ -794,6 +794,10 @@ pub const REG_OLDMASK: ::c_int = 21; pub const REG_CR2: ::c_int = 22; +// From NDK's asm/auxvec.h +pub const AT_SYSINFO_EHDR: ::c_ulong = 33; +pub const AT_VECTOR_SIZE_ARCH: ::c_ulong = 3; + cfg_if! { if #[cfg(libc_align)] { mod align;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/mod.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/mod.rs index a9cc594..a8e9359 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/mod.rs
@@ -2572,6 +2572,14 @@ pub const NFT_CT_LABELS: ::c_int = 13; pub const NFT_CT_PKTS: ::c_int = 14; pub const NFT_CT_BYTES: ::c_int = 15; +pub const NFT_CT_AVGPKT: ::c_int = 16; +pub const NFT_CT_ZONE: ::c_int = 17; +pub const NFT_CT_EVENTMASK: ::c_int = 18; +pub const NFT_CT_SRC_IP: ::c_int = 19; +pub const NFT_CT_DST_IP: ::c_int = 20; +pub const NFT_CT_SRC_IP6: ::c_int = 21; +pub const NFT_CT_DST_IP6: ::c_int = 22; +pub const NFT_CT_ID: ::c_int = 23; pub const NFT_LIMIT_PKTS: ::c_int = 0; pub const NFT_LIMIT_PKT_BYTES: ::c_int = 1; @@ -3535,6 +3543,34 @@ pub const KLOG_SIZE_UNREAD: ::c_int = 9; pub const KLOG_SIZE_BUFFER: ::c_int = 10; +// From NDK's linux/auxvec.h +pub const AT_NULL: ::c_ulong = 0; +pub const AT_IGNORE: ::c_ulong = 1; +pub const AT_EXECFD: ::c_ulong = 2; +pub const AT_PHDR: ::c_ulong = 3; +pub const AT_PHENT: ::c_ulong = 4; +pub const AT_PHNUM: ::c_ulong = 5; +pub const AT_PAGESZ: ::c_ulong = 6; +pub const AT_BASE: ::c_ulong = 7; +pub const AT_FLAGS: ::c_ulong = 8; +pub const AT_ENTRY: ::c_ulong = 9; +pub const AT_NOTELF: ::c_ulong = 10; +pub const AT_UID: ::c_ulong = 11; +pub const AT_EUID: ::c_ulong = 12; +pub const AT_GID: ::c_ulong = 13; +pub const AT_EGID: ::c_ulong = 14; +pub const AT_PLATFORM: ::c_ulong = 15; +pub const AT_HWCAP: ::c_ulong = 16; +pub const AT_CLKTCK: ::c_ulong = 17; +pub const AT_SECURE: ::c_ulong = 23; +pub const AT_BASE_PLATFORM: ::c_ulong = 24; +pub const AT_RANDOM: ::c_ulong = 25; +pub const AT_HWCAP2: ::c_ulong = 26; +pub const AT_RSEQ_FEATURE_SIZE: ::c_ulong = 27; +pub const AT_RSEQ_ALIGN: ::c_ulong = 28; +pub const AT_EXECFN: ::c_ulong = 31; +pub const AT_MINSIGSTKSZ: ::c_ulong = 51; + // Most `*_SUPER_MAGIC` constants are defined at the `linux_like` level; the // following are only available on newer Linux versions than the versions // currently used in CI in some configurations, so we define them here.
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/lfs64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/lfs64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/lfs64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/lfs64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/generic/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/generic/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/generic/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/generic/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/mips/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/mips/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/mips/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/mips/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/powerpc/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/powerpc/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/powerpc/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/powerpc/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/sparc/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/sparc/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/sparc/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/sparc/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/arm/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/arm/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/arm/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/arm/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/arm/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/arm/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/arm/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/arm/mod.rs index 89c93ab..4a14d692 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/arm/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/arm/mod.rs
@@ -855,6 +855,7 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_mseal: ::c_long = 462; cfg_if! { if #[cfg(libc_align)] {
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/csky/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/csky/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/csky/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/csky/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/csky/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/csky/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/csky/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/csky/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/m68k/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/m68k/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/m68k/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/m68k/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/mips/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/mips/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/mips/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/mips/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/mips/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/mips/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/mips/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/mips/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/powerpc.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/powerpc.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/powerpc.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/powerpc.rs index dd5732e..cb7fdf7 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/powerpc.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/powerpc.rs
@@ -823,3 +823,4 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_mseal: ::c_long = 462;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/riscv32/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/riscv32/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/riscv32/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/riscv32/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/sparc/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/sparc/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/sparc/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/sparc/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/x86/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/x86/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/x86/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/x86/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/x86/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/x86/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/x86/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/x86/mod.rs index 27f477b..4391eb3 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/x86/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/x86/mod.rs
@@ -1044,6 +1044,8 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_fchmodat2: ::c_long = 452; +pub const SYS_mseal: ::c_long = 462; // offsets in user_regs_structs, from sys/reg.h pub const EBX: ::c_int = 0;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs index 284a1788..c8a805cd 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs
@@ -892,6 +892,7 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_mseal: ::c_long = 462; pub const PROT_BTI: ::c_int = 0x10; pub const PROT_MTE: ::c_int = 0x20;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/mips64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/mips64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/mips64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/mips64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/riscv64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/riscv64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/riscv64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/riscv64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/s390x.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/s390x.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/s390x.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/s390x.rs index 61ee2dc..e85429e 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/s390x.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/s390x.rs
@@ -946,6 +946,7 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_mseal: ::c_long = 462; extern "C" {
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs index 3831dfad..9b37907 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs
@@ -438,6 +438,8 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_fchmodat2: ::c_long = 452; +pub const SYS_mseal: ::c_long = 462; extern "C" { pub fn sysctl(
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs index 06aa0da..90745b176 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs
@@ -366,6 +366,7 @@ pub const SYS_process_mrelease: ::c_long = __X32_SYSCALL_BIT + 448; pub const SYS_futex_waitv: ::c_long = __X32_SYSCALL_BIT + 449; pub const SYS_set_mempolicy_home_node: ::c_long = __X32_SYSCALL_BIT + 450; +pub const SYS_fchmodat2: ::c_long = __X32_SYSCALL_BIT + 452; pub const SYS_rt_sigaction: ::c_long = __X32_SYSCALL_BIT + 512; pub const SYS_rt_sigreturn: ::c_long = __X32_SYSCALL_BIT + 513; pub const SYS_ioctl: ::c_long = __X32_SYSCALL_BIT + 514;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/mod.rs index d6e5eb69..75d150c 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/mod.rs
@@ -1405,7 +1405,6 @@ pub fn reallocarray(ptr: *mut ::c_void, nmemb: ::size_t, size: ::size_t) -> *mut ::c_void; pub fn ctermid(s: *mut ::c_char) -> *mut ::c_char; - pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; pub fn backtrace(buf: *mut *mut ::c_void, sz: ::c_int) -> ::c_int; pub fn glob64( pattern: *const ::c_char, @@ -1541,6 +1540,16 @@ // Added in `glibc` 2.34 pub fn close_range(first: ::c_uint, last: ::c_uint, flags: ::c_int) -> ::c_int; + + pub fn mq_notify(mqdes: ::mqd_t, sevp: *const ::sigevent) -> ::c_int; + + pub fn epoll_pwait2( + epfd: ::c_int, + events: *mut ::epoll_event, + maxevents: ::c_int, + timeout: *const ::timespec, + sigmask: *const ::sigset_t, + ) -> ::c_int; } cfg_if! {
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/mod.rs index 779faa8..1973b3f 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/mod.rs
@@ -3980,6 +3980,13 @@ pub const NFT_CT_LABELS: ::c_int = 13; pub const NFT_CT_PKTS: ::c_int = 14; pub const NFT_CT_BYTES: ::c_int = 15; +pub const NFT_CT_AVGPKT: ::c_int = 16; +pub const NFT_CT_ZONE: ::c_int = 17; +pub const NFT_CT_EVENTMASK: ::c_int = 18; +pub const NFT_CT_SRC_IP: ::c_int = 19; +pub const NFT_CT_DST_IP: ::c_int = 20; +pub const NFT_CT_SRC_IP6: ::c_int = 21; +pub const NFT_CT_DST_IP6: ::c_int = 22; pub const NFT_LIMIT_PKTS: ::c_int = 0; pub const NFT_LIMIT_PKT_BYTES: ::c_int = 1; @@ -5628,6 +5635,8 @@ ) -> ::ssize_t; pub fn klogctl(syslog_type: ::c_int, bufp: *mut ::c_char, len: ::c_int) -> ::c_int; + + pub fn ioctl(fd: ::c_int, request: ::Ioctl, ...) -> ::c_int; } // LFS64 extensions
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/arm/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/arm/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/arm/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/arm/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/arm/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/arm/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/arm/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/arm/mod.rs index 8225f26a..4ac3e60 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/arm/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/arm/mod.rs
@@ -840,6 +840,7 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_mseal: ::c_long = 462; extern "C" { pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/hexagon.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/hexagon.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/hexagon.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/hexagon.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/mips/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/mips/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/mips/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/mips/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/mips/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/mips/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/mips/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/mips/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/powerpc.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/powerpc.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/powerpc.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/powerpc.rs index bdf2545..834a442 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/powerpc.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/powerpc.rs
@@ -796,6 +796,7 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_mseal: ::c_long = 462; extern "C" { pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/riscv32/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/riscv32/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/riscv32/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/riscv32/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/x86/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/x86/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/x86/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/x86/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/x86/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/x86/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/x86/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/x86/mod.rs index 1228085..7fad0467 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/x86/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/x86/mod.rs
@@ -936,6 +936,7 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_fchmodat2: ::c_long = 452; // offsets in user_regs_structs, from sys/reg.h pub const EBX: ::c_int = 0;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/int128.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/int128.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/int128.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/int128.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs index 54e072b..24e6b84 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
@@ -561,6 +561,7 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_mseal: ::c_long = 462; pub const MCL_CURRENT: ::c_int = 0x0001; pub const MCL_FUTURE: ::c_int = 0x0002;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/mips64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/mips64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/mips64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/mips64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/powerpc64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/powerpc64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/powerpc64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/powerpc64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/riscv64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/riscv64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/riscv64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/riscv64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/s390x.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/s390x.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/s390x.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/s390x.rs index aa4cbf8..567914f 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/s390x.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/s390x.rs
@@ -722,3 +722,4 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_mseal: ::c_long = 462;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/x86_64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/x86_64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/x86_64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/x86_64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs index 4d178680..dc617d4 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs
@@ -608,6 +608,8 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const SYS_fchmodat2: ::c_long = 452; +pub const SYS_mseal: ::c_long = 462; // offsets in user_regs_structs, from sys/reg.h pub const R15: ::c_int = 0;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/lfs64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/lfs64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/lfs64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/lfs64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/mod.rs index 699c8181..a4c8f79 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/mod.rs
@@ -853,7 +853,6 @@ new_limit: *const ::rlimit, old_limit: *mut ::rlimit, ) -> ::c_int; - pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int; pub fn ptrace(request: ::c_int, ...) -> ::c_long; pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/non_exhaustive.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/non_exhaustive.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/non_exhaustive.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/non_exhaustive.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/arm/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/arm/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/arm/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/arm/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/arm/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/arm/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/arm/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/arm/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/arm/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/arm/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/arm/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/arm/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips32/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips32/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips32/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips32/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips64/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips64/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips64/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips64/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mod.rs index b8d10cb9..32c65545 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mod.rs
@@ -353,7 +353,6 @@ pub const YESEXPR: ::c_int = ((5) << 8) | (0); extern "C" { - pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int; pub fn pthread_rwlockattr_getkind_np(
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/x86_64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/x86_64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/x86_64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/x86_64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/x86_64/other.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/x86_64/other.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/x86_64/other.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/x86_64/other.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/mod.rs index 8b3d988..6bab825 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/mod.rs
@@ -313,6 +313,11 @@ pub const ATF_PUBL: ::c_int = 0x08; pub const ATF_USETRAILERS: ::c_int = 0x10; +extern "C" { + pub static in6addr_loopback: in6_addr; + pub static in6addr_any: in6_addr; +} + cfg_if! { if #[cfg(any(target_os = "l4re", target_os = "espidf"))] { // required libraries for L4Re and the ESP-IDF framework are linked externally, ATM
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/aarch64/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/aarch64/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/aarch64/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/aarch64/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/arm/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/arm/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/arm/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/arm/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/espidf/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/espidf/mod.rs similarity index 92% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/espidf/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/espidf/mod.rs index e2e98ee..1a2a907d 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/espidf/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/espidf/mod.rs
@@ -89,14 +89,14 @@ pub const PTHREAD_STACK_MIN: ::size_t = 768; -pub const SIGABRT: ::size_t = 1; -pub const SIGFPE: ::size_t = 1; -pub const SIGILL: ::size_t = 1; -pub const SIGINT: ::size_t = 1; -pub const SIGSEGV: ::size_t = 1; -pub const SIGTERM: ::size_t = 1; -pub const SIGHUP: ::size_t = 1; -pub const SIGQUIT: ::size_t = 1; +pub const SIGABRT: ::c_int = 1; +pub const SIGFPE: ::c_int = 1; +pub const SIGILL: ::c_int = 1; +pub const SIGINT: ::c_int = 1; +pub const SIGSEGV: ::c_int = 1; +pub const SIGTERM: ::c_int = 1; +pub const SIGHUP: ::c_int = 1; +pub const SIGQUIT: ::c_int = 1; pub const NSIG: ::size_t = 2; extern "C" {
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/generic.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/generic.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/generic.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/generic.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/horizon/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/horizon/mod.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/horizon/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/horizon/mod.rs index 9c70f7b..97e0b18 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/horizon/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/horizon/mod.rs
@@ -21,6 +21,14 @@ pub type sigset_t = ::c_ulong; s! { + pub struct hostent { + pub h_name: *mut ::c_char, + pub h_aliases: *mut *mut ::c_char, + pub h_addrtype: u16, + pub h_length: u16, + pub h_addr_list: *mut *mut ::c_char, + } + pub struct sockaddr { pub sa_family: ::sa_family_t, pub sa_data: [::c_char; 26usize], @@ -35,6 +43,7 @@ pub sin_family: ::sa_family_t, pub sin_port: ::in_port_t, pub sin_addr: ::in_addr, + pub sin_zero: [::c_char; 8], } pub struct sockaddr_in6 {
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/mod.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/mod.rs index a572cc3..29693f6 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/mod.rs
@@ -53,6 +53,21 @@ } } +cfg_if! { + if #[cfg(not(target_os = "horizon"))] { + s!{ + pub struct hostent { + pub h_name: *mut ::c_char, + pub h_aliases: *mut *mut ::c_char, + pub h_addrtype: ::c_int, + pub h_length: ::c_int, + pub h_addr_list: *mut *mut ::c_char, + pub h_addr: *mut ::c_char, + } + } + } +} + s! { // The order of the `ai_addr` field in this struct is crucial // for converting between the Rust and C types. @@ -87,16 +102,7 @@ } pub struct in_addr { - pub s_addr: ::in_addr_t, - } - - pub struct hostent { - pub h_name: *mut ::c_char, - pub h_aliases: *mut *mut ::c_char, - pub h_addrtype: ::c_int, - pub h_length: ::c_int, - pub h_addr_list: *mut *mut ::c_char, - pub h_addr: *mut ::c_char, + pub s_addr: ::in_addr_t, } pub struct pollfd {
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/no_align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/no_align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/no_align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/powerpc/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/powerpc/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/powerpc/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/powerpc/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/vita/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/vita/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/vita/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/vita/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/no_align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/no_align.rs new file mode 100644 index 0000000..b435d72a --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/no_align.rs
@@ -0,0 +1,16 @@ +s! { + pub struct in6_addr { + pub s6_addr: [u8; 16], + __align: [u32; 0], + } +} + +pub const IN6ADDR_LOOPBACK_INIT: in6_addr = in6_addr { + s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], + __align: [0u32; 0], +}; + +pub const IN6ADDR_ANY_INIT: in6_addr = in6_addr { + s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + __align: [0u32; 0], +};
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/aarch64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/aarch64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/aarch64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/aarch64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/neutrino.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/neutrino.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/neutrino.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/neutrino.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/redox/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/redox/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/redox/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/redox/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/compat.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/compat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/compat.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/compat.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/illumos.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/illumos.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/illumos.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/illumos.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/solaris.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/solaris.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/solaris.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/solaris.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/x86.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/x86.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/x86.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/x86.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/x86_common.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/x86_common.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/x86_common.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/x86_common.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/aarch64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/aarch64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/aarch64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/aarch64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/arm.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/arm.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/arm.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/arm.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/mod.rs index 4f02742..31428341 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/mod.rs
@@ -782,6 +782,7 @@ pub const S_ISUID: ::c_int = 0x0800; pub const S_ISGID: ::c_int = 0x0400; pub const S_ISTXT: ::c_int = 0x0200; +pub const S_ISVTX: ::c_int = 0o1000; pub const S_IRUSR: ::c_int = 0x0100; pub const S_IWUSR: ::c_int = 0x0080; pub const S_IXUSR: ::c_int = 0x0040; @@ -1812,6 +1813,10 @@ pub fn taskIdSelf() -> ::TASK_ID; pub fn taskDelay(ticks: ::_Vx_ticks_t) -> ::c_int; + // taskLib.h + pub fn taskNameSet(task_id: ::TASK_ID, task_name: *mut ::c_char) -> ::c_int; + pub fn taskNameGet(task_id: ::TASK_ID, buf_name: *mut ::c_char, bufsize: ::size_t) -> ::c_int; + // rtpLibCommon.h pub fn rtpInfoGet(rtpId: ::RTP_ID, rtpStruct: *mut ::RTP_DESC) -> ::c_int; pub fn rtpSpawn( @@ -1871,6 +1876,10 @@ ) -> ::c_int; pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int; pub fn mq_setattr(mqd: ::mqd_t, newattr: *const ::mq_attr, oldattr: *mut ::mq_attr) -> ::c_int; + + // vxCpuLib.h + fn vxCpuEnabledGet() -> ::cpuset_t; // Get set of running CPU's in the system + fn vxCpuConfiguredGet() -> ::cpuset_t; // Get set of Configured CPU's in the system } //Dummy functions, these don't really exist in VxWorks.
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/powerpc.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/powerpc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/powerpc.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/powerpc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/powerpc64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/powerpc64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/powerpc64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/powerpc64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/x86.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/x86.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/x86.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/x86.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/x86_64.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/x86_64.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/x86_64.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/x86_64.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/wasi.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/wasi/mod.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/wasi.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/wasi/mod.rs index 36047cb..d47d407 100644 --- a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/wasi.rs +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/wasi/mod.rs
@@ -245,14 +245,14 @@ pub const AT_REMOVEDIR: c_int = 0x4; pub const UTIME_OMIT: c_long = 0xfffffffe; pub const UTIME_NOW: c_long = 0xffffffff; -pub const S_IFIFO: mode_t = 49152; +pub const S_IFIFO: mode_t = 0o1_0000; pub const S_IFCHR: mode_t = 8192; pub const S_IFBLK: mode_t = 24576; pub const S_IFDIR: mode_t = 16384; pub const S_IFREG: mode_t = 32768; pub const S_IFLNK: mode_t = 40960; pub const S_IFSOCK: mode_t = 49152; -pub const S_IFMT: mode_t = 57344; +pub const S_IFMT: mode_t = 0o17_0000; pub const S_IRWXO: mode_t = 0x7; pub const S_IXOTH: mode_t = 0x1; pub const S_IWOTH: mode_t = 0x2; @@ -372,16 +372,26 @@ pub const _SC_IOV_MAX: c_int = 60; pub const _SC_SYMLOOP_MAX: c_int = 173; -#[allow(unused_unsafe)] // `addr_of!(EXTERN_STATIC)` is now safe; remove `unsafe` when MSRV >= 1.82 -pub static CLOCK_MONOTONIC: clockid_t = unsafe { clockid_t(ptr_addr_of!(_CLOCK_MONOTONIC)) }; -#[allow(unused_unsafe)] -pub static CLOCK_PROCESS_CPUTIME_ID: clockid_t = - unsafe { clockid_t(ptr_addr_of!(_CLOCK_PROCESS_CPUTIME_ID)) }; -#[allow(unused_unsafe)] -pub static CLOCK_REALTIME: clockid_t = unsafe { clockid_t(ptr_addr_of!(_CLOCK_REALTIME)) }; -#[allow(unused_unsafe)] -pub static CLOCK_THREAD_CPUTIME_ID: clockid_t = - unsafe { clockid_t(ptr_addr_of!(_CLOCK_THREAD_CPUTIME_ID)) }; +cfg_if! { + if #[cfg(libc_ctest)] { + // skip these constants when this is active because `ctest` currently + // panics on parsing the constants below + } else { + // `addr_of!(EXTERN_STATIC)` is now safe; remove `unsafe` when MSRV >= 1.82 + #[allow(unused_unsafe)] + pub static CLOCK_MONOTONIC: clockid_t = + unsafe { clockid_t(ptr_addr_of!(_CLOCK_MONOTONIC)) }; + #[allow(unused_unsafe)] + pub static CLOCK_PROCESS_CPUTIME_ID: clockid_t = + unsafe { clockid_t(ptr_addr_of!(_CLOCK_PROCESS_CPUTIME_ID)) }; + #[allow(unused_unsafe)] + pub static CLOCK_REALTIME: clockid_t = + unsafe { clockid_t(ptr_addr_of!(_CLOCK_REALTIME)) }; + #[allow(unused_unsafe)] + pub static CLOCK_THREAD_CPUTIME_ID: clockid_t = + unsafe { clockid_t(ptr_addr_of!(_CLOCK_THREAD_CPUTIME_ID)) }; + } +} pub const ABDAY_1: ::nl_item = 0x20000; pub const ABDAY_2: ::nl_item = 0x20001; @@ -869,3 +879,10 @@ pub fn __errno_location() -> *mut ::c_int; } + +cfg_if! { + if #[cfg(target_env = "p2")] { + mod p2; + pub use self::p2::*; + } +}
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/wasi/p2.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/wasi/p2.rs new file mode 100644 index 0000000..3e8eb95 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/wasi/p2.rs
@@ -0,0 +1,161 @@ +pub type sa_family_t = ::c_ushort; +pub type in_port_t = ::c_ushort; +pub type in_addr_t = ::c_uint; + +pub type socklen_t = ::c_uint; + +s! { + #[repr(align(16))] + pub struct sockaddr { + pub sa_family: sa_family_t, + pub sa_data: [::c_char; 0], + } + + pub struct in_addr { + pub s_addr: in_addr_t, + } + + #[repr(align(16))] + pub struct sockaddr_in { + pub sin_family: sa_family_t, + pub sin_port: in_port_t, + pub sin_addr: in_addr, + } + + #[repr(align(4))] + pub struct in6_addr { + pub s6_addr: [::c_uchar; 16], + } + + #[repr(align(16))] + pub struct sockaddr_in6 { + pub sin6_family: sa_family_t, + pub sin6_port: in_port_t, + pub sin6_flowinfo: ::c_uint, + pub sin6_addr: in6_addr, + pub sin6_scope_id: ::c_uint, + } + + #[repr(align(16))] + pub struct sockaddr_storage { + pub ss_family: sa_family_t, + pub __ss_data: [::c_char; 32], + } + + pub struct addrinfo { + pub ai_flags: ::c_int, + pub ai_family: ::c_int, + pub ai_socktype: ::c_int, + pub ai_protocol: ::c_int, + pub ai_addrlen: socklen_t, + pub ai_addr: *mut sockaddr, + pub ai_canonname: *mut ::c_char, + pub ai_next: *mut addrinfo, + } + + pub struct ip_mreq { + pub imr_multiaddr: in_addr, + pub imr_interface: in_addr, + } + + pub struct ipv6_mreq { + pub ipv6mr_multiaddr: in6_addr, + pub ipv6mr_interface: ::c_uint, + } +} + +pub const SHUT_RD: ::c_int = 1 << 0; +pub const SHUT_WR: ::c_int = 1 << 1; +pub const SHUT_RDWR: ::c_int = SHUT_RD | SHUT_WR; + +pub const MSG_NOSIGNAL: ::c_int = 0x4000; +pub const MSG_PEEK: ::c_int = 0x0002; + +pub const SO_REUSEADDR: ::c_int = 2; +pub const SO_ERROR: ::c_int = 4; +pub const SO_BROADCAST: ::c_int = 6; +pub const SO_LINGER: ::c_int = 13; +pub const SO_RCVTIMEO: ::c_int = 66; +pub const SO_SNDTIMEO: ::c_int = 67; + +pub const SOCK_DGRAM: ::c_int = 5; +pub const SOCK_STREAM: ::c_int = 6; + +pub const SOL_SOCKET: ::c_int = 0x7fffffff; + +pub const AF_INET: ::c_int = 1; +pub const AF_INET6: ::c_int = 2; + +pub const IPPROTO_IP: ::c_int = 0; +pub const IPPROTO_TCP: ::c_int = 6; +pub const IPPROTO_IPV6: ::c_int = 41; + +pub const IP_TTL: ::c_int = 2; +pub const IP_MULTICAST_TTL: ::c_int = 33; +pub const IP_MULTICAST_LOOP: ::c_int = 34; +pub const IP_ADD_MEMBERSHIP: ::c_int = 35; +pub const IP_DROP_MEMBERSHIP: ::c_int = 36; + +pub const IPV6_MULTICAST_LOOP: ::c_int = 19; +pub const IPV6_JOIN_GROUP: ::c_int = 20; +pub const IPV6_LEAVE_GROUP: ::c_int = 21; +pub const IPV6_V6ONLY: ::c_int = 26; + +pub const IPV6_ADD_MEMBERSHIP: ::c_int = IPV6_JOIN_GROUP; +pub const IPV6_DROP_MEMBERSHIP: ::c_int = IPV6_LEAVE_GROUP; + +pub const TCP_NODELAY: ::c_int = 1; + +pub const EAI_SYSTEM: ::c_int = -11; + +extern "C" { + pub fn socket(domain: ::c_int, type_: ::c_int, protocol: ::c_int) -> ::c_int; + pub fn connect(fd: ::c_int, name: *const sockaddr, addrlen: socklen_t) -> ::c_int; + pub fn bind(socket: ::c_int, addr: *const sockaddr, addrlen: socklen_t) -> ::c_int; + pub fn listen(socket: ::c_int, backlog: ::c_int) -> ::c_int; + pub fn accept(socket: ::c_int, addr: *mut sockaddr, addrlen: *mut socklen_t) -> ::c_int; + + pub fn getsockname(socket: ::c_int, addr: *mut sockaddr, addrlen: *mut socklen_t) -> ::c_int; + pub fn getpeername(socket: ::c_int, addr: *mut sockaddr, addrlen: *mut socklen_t) -> ::c_int; + + pub fn sendto( + socket: ::c_int, + buffer: *const ::c_void, + length: ::size_t, + flags: ::c_int, + addr: *const sockaddr, + addrlen: socklen_t, + ) -> ::ssize_t; + pub fn recvfrom( + socket: ::c_int, + buffer: *mut ::c_void, + length: ::size_t, + flags: ::c_int, + addr: *mut sockaddr, + addrlen: *mut socklen_t, + ) -> ::ssize_t; + + pub fn getsockopt( + sockfd: ::c_int, + level: ::c_int, + optname: ::c_int, + optval: *mut ::c_void, + optlen: *mut socklen_t, + ) -> ::c_int; + pub fn setsockopt( + sockfd: ::c_int, + level: ::c_int, + optname: ::c_int, + optval: *const ::c_void, + optlen: socklen_t, + ) -> ::c_int; + + pub fn getaddrinfo( + host: *const ::c_char, + serv: *const ::c_char, + hint: *const addrinfo, + res: *mut *mut addrinfo, + ) -> ::c_int; + pub fn freeaddrinfo(p: *mut addrinfo); + pub fn gai_strerror(ecode: ::c_int) -> *const ::c_char; +}
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/gnu/align.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/gnu/align.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/gnu/align.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/gnu/align.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/gnu/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/gnu/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/gnu/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/gnu/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/msvc/mod.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/msvc/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/msvc/mod.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/msvc/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/xous.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/xous.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/xous.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/xous.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/tests/const_fn.rs b/third_party/rust/chromium_crates_io/vendor/libc-0.2.159/tests/const_fn.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/libc-0.2.158/tests/const_fn.rs rename to third_party/rust/chromium_crates_io/vendor/libc-0.2.159/tests/const_fn.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/.cargo_vcs_info.json deleted file mode 100644 index fe105ad..0000000 --- a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/.cargo_vcs_info.json +++ /dev/null
@@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "6b58785c80e2641a945863301f1f0f270902766c" - }, - "path_in_vcs": "read-fonts" -} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/.cargo-checksum.json
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/.cargo_vcs_info.json new file mode 100644 index 0000000..21e8950 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/.cargo_vcs_info.json
@@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "f80507c47a9974863c735af5162d76dba4daf8bf" + }, + "path_in_vcs": "read-fonts" +} \ No newline at end of file
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/Cargo.toml similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/Cargo.toml index fe0063f3..91c139c 100644 --- a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/Cargo.toml
@@ -12,7 +12,7 @@ [package] edition = "2021" name = "read-fonts" -version = "0.22.0" +version = "0.22.1" build = false autobins = false autoexamples = false
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/Cargo.toml.orig similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/Cargo.toml.orig index 42f90809..2d75ce2 100644 --- a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/Cargo.toml.orig
@@ -1,6 +1,6 @@ [package] name = "read-fonts" -version = "0.22.0" +version = "0.22.1" description = "Reading OpenType font files." readme = "README.md" categories = ["text-processing", "parsing", "graphics"]
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/LICENSE-APACHE
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/LICENSE-MIT
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/README.md b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/README.md rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/README.md
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/benches/bench_helper.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/benches/bench_helper.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/benches/bench_helper.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/benches/bench_helper.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/benches/int_set_benchmark.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/benches/int_set_benchmark.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/benches/int_set_benchmark.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/benches/int_set_benchmark.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/benches/sparse_bit_set_benchmark.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/benches/sparse_bit_set_benchmark.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/benches/sparse_bit_set_benchmark.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/benches/sparse_bit_set_benchmark.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/font.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/font.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/font.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/font.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_aat.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_aat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_aat.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_aat.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_ankr.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_ankr.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_ankr.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_ankr.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_avar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_avar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_avar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_avar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_base.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_base.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_base.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_base.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_bitmap.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_bitmap.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_bitmap.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_bitmap.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cbdt.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cbdt.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cbdt.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cbdt.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cblc.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cblc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cblc.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cblc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cff.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cff.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cff.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cff.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cff2.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cff2.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cff2.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cff2.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cmap.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cmap.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cmap.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cmap.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_colr.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_colr.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_colr.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_colr.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cpal.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cpal.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cpal.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cpal.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_cvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_cvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_ebdt.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_ebdt.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_ebdt.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_ebdt.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_eblc.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_eblc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_eblc.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_eblc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_feat.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_feat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_feat.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_feat.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_fvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_fvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_fvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_fvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gasp.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gasp.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gasp.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gasp.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gdef.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gdef.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gdef.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gdef.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_glyf.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_glyf.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_glyf.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_glyf.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gpos.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gpos.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gpos.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gpos.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gsub.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gsub.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gsub.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gsub.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_gvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_gvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_head.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_head.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_head.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_head.rs index efd9d32..f376764 100644 --- a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_head.rs +++ b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_head.rs
@@ -531,7 +531,7 @@ self.data.read_at(range.start).unwrap() } - /// see somewhere else + /// Bits identifying the font's style; see [MacStyle] pub fn mac_style(&self) -> MacStyle { let range = self.shape.mac_style_byte_range(); self.data.read_at(range.start).unwrap()
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_hhea.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_hhea.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_hhea.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_hhea.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_hmtx.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_hmtx.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_hmtx.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_hmtx.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_hvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_hvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_hvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_hvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_ift.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_ift.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_ift.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_ift.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_layout.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_layout.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_layout.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_layout.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_ltag.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_ltag.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_ltag.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_ltag.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_maxp.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_maxp.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_maxp.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_maxp.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_mvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_mvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_mvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_mvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_name.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_name.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_name.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_name.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_os2.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_os2.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_os2.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_os2.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_post.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_post.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_post.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_post.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_postscript.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_postscript.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_postscript.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_postscript.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_sbix.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_sbix.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_sbix.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_sbix.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_stat.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_stat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_stat.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_stat.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_svg.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_svg.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_svg.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_svg.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_conditions.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_conditions.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_conditions.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_conditions.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_count_all.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_count_all.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_count_all.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_count_all.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_enum.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_enum.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_enum.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_enum.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_flags.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_flags.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_flags.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_flags.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_formats.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_formats.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_formats.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_formats.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_offsets_arrays.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_offsets_arrays.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_offsets_arrays.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_offsets_arrays.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_records.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_records.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_test_records.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_test_records.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_varc.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_varc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_varc.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_varc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_variations.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_variations.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_variations.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_variations.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_vhea.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_vhea.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_vhea.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_vhea.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_vmtx.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_vmtx.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_vmtx.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_vmtx.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_vorg.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_vorg.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_vorg.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_vorg.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_vvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_vvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/generated/generated_vvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/generated/generated_vvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/array.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/array.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/array.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/array.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/codegen_test.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/codegen_test.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/codegen_test.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/codegen_test.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/bitpage.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/bitpage.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/bitpage.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/bitpage.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/bitset.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/bitset.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/bitset.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/bitset.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/input_bit_stream.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/input_bit_stream.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/input_bit_stream.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/input_bit_stream.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/mod.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/mod.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/mod.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/output_bit_stream.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/output_bit_stream.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/output_bit_stream.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/output_bit_stream.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/sparse_bit_set.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/sparse_bit_set.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/sparse_bit_set.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/sparse_bit_set.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/font_data.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/font_data.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/font_data.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/font_data.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/lib.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/lib.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/offset.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/offset.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/offset.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/offset.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/offset_array.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/offset_array.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/offset_array.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/offset_array.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/read.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/read.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/read.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/table_provider.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/table_provider.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/table_provider.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/table_provider.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/table_ref.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/table_ref.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/table_ref.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/table_ref.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/aat.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/aat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/aat.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/aat.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ankr.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ankr.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ankr.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ankr.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/avar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/avar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/avar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/avar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/base.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/base.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/base.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/base.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/bitmap.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/bitmap.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/bitmap.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/bitmap.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cbdt.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cbdt.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cbdt.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cbdt.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cblc.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cblc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cblc.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cblc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cff.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cff.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cff.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cff.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cff2.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cff2.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cff2.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cff2.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cmap.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cmap.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cmap.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cmap.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/colr.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/colr.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/colr.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/colr.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/colr/closure.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/colr/closure.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/colr/closure.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/colr/closure.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cpal.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cpal.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cpal.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cpal.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ebdt.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ebdt.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ebdt.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ebdt.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/eblc.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/eblc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/eblc.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/eblc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/feat.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/feat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/feat.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/feat.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/fvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/fvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/fvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/fvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gasp.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gasp.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gasp.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gasp.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gdef.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gdef.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gdef.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gdef.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode/decode.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode/decode.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode/decode.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode/decode.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode/instruction.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode/instruction.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode/instruction.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode/instruction.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode/opcode.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode/opcode.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode/opcode.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode/opcode.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gpos.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gpos.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gpos.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gpos.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gsub.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gsub.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gsub.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gsub.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gsub/closure.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gsub/closure.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gsub/closure.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gsub/closure.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gvar.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gvar.rs index 43d5ba2..d70202c 100644 --- a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gvar.rs +++ b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gvar.rs
@@ -57,7 +57,7 @@ } impl<'a> Gvar<'a> { - fn data_for_gid(&self, gid: GlyphId) -> Result<FontData<'a>, ReadError> { + pub fn data_for_gid(&self, gid: GlyphId) -> Result<FontData<'a>, ReadError> { let start_idx = gid.to_u32() as usize; let end_idx = start_idx + 1; let data_start = self.glyph_variation_data_array_offset();
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/head.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/head.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/head.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/head.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/hhea.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/hhea.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/hhea.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/hhea.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/hmtx.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/hmtx.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/hmtx.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/hmtx.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/hvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/hvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/hvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/hvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ift.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ift.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ift.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ift.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/instance_record.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/instance_record.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/instance_record.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/instance_record.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/layout.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/layout.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/layout.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/layout.rs index 14de931..02f5ccb 100644 --- a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/layout.rs +++ b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/layout.rs
@@ -2,10 +2,12 @@ #[path = "./lookupflag.rs"] mod lookupflag; +mod script; use core::cmp::Ordering; pub use lookupflag::LookupFlag; +pub use script::{ScriptTags, SelectedScript, UNICODE_TO_NEW_OPENTYPE_SCRIPT_TAGS}; use super::variations::DeltaSetIndex;
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/layout/script.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/layout/script.rs new file mode 100644 index 0000000..6d25f08 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/layout/script.rs
@@ -0,0 +1,275 @@ +//! Additional support for working with OpenType scripts. + +use super::{ScriptList, Tag}; +use std::ops::Deref; + +/// A script chosen from a set of candidate tags. +/// +/// Returned by the [`ScriptList::select`] method. +#[derive(Copy, Clone, PartialEq, Debug)] +pub struct SelectedScript { + /// The actual OpenType tag of the chosen script. + pub tag: Tag, + /// Index of the script in the [`ScriptList`]. + pub index: u16, + /// True if a script was chosen that wasn't in the requested list. + pub is_fallback: bool, +} + +impl<'a> ScriptList<'a> { + /// Returns the index of the script with the given tag. + pub fn index_for_tag(&self, tag: Tag) -> Option<u16> { + self.script_records() + .binary_search_by_key(&tag, |rec| rec.script_tag()) + .map(|index| index as u16) + .ok() + } + + /// Finds the first available script that matches one of the given tags. + /// + /// When none of the requested scripts are available, then `DFLT`, `dflt` + /// and `latn` tags are tried in that order. + /// + /// If you're starting from a Unicode script code, use the + /// [`ScriptTags::from_unicode`] function to generate the appropriate set + /// of tags to pass to this method. + /// + /// See [`hb_ot_layout_table_select_script`](https://github.com/harfbuzz/harfbuzz/blob/2edc371e97d6d2c5ad0e085b26e9af0123501647/src/hb-ot-layout.cc#L547) + /// for the corresponding HarfBuzz function. + pub fn select(&self, tags: &[Tag]) -> Option<SelectedScript> { + for &tag in tags { + if let Some(index) = self.index_for_tag(tag) { + return Some(SelectedScript { + tag, + index, + is_fallback: false, + }); + } + } + for tag in [ + // Try finding 'DFLT' + Tag::new(b"DFLT"), + // Try with 'dflt'; MS site has had typos and many fonts use it now :( + Tag::new(b"dflt"), + // try with 'latn'; some old fonts put their features there even though + // they're really trying to support Thai, for example :( + Tag::new(b"latn"), + ] { + if let Some(index) = self.index_for_tag(tag) { + return Some(SelectedScript { + tag, + index, + is_fallback: true, + }); + } + } + None + } +} + +/// A prioritized list of OpenType script tags mapped from a Unicode script +/// tag. +/// +/// This is useful as input to [`ScriptList::select`] when you have a Unicode +/// script and would like to find the appropriate OpenType script for shaping. +#[derive(Copy, Clone, PartialEq, Eq, Default)] +pub struct ScriptTags { + tags: [Tag; 3], + len: usize, +} + +impl ScriptTags { + /// Given a [Unicode script code](https://unicode.org/iso15924/iso15924-codes.html), + /// returns a prioritized list of matching + /// [OpenType script tags](https://learn.microsoft.com/en-us/typography/opentype/spec/scripttags). + /// + /// See [hb_ot_all_tags_from_script](https://github.com/harfbuzz/harfbuzz/blob/63d09dbefcf7ad9f794ca96445d37b6d8c3c9124/src/hb-ot-tag.cc#L155C1-L155C27) + /// for the equivalent HarfBuzz function. + pub fn from_unicode(unicode_script: Tag) -> Self { + let mut tags = [Tag::default(); 3]; + let mut len = 0; + if let Some(new_tag) = new_tag_from_unicode(unicode_script) { + // Myanmar maps to mym2 but there is no mym3 + if new_tag != Tag::new(b"mym2") { + let mut bytes = new_tag.to_be_bytes(); + bytes[3] = b'3'; + tags[len] = Tag::new(&bytes); + len += 1; + } + tags[len] = new_tag; + len += 1; + } + tags[len] = old_tag_from_unicode(unicode_script); + len += 1; + Self { tags, len } + } + + /// Returns a slice containing the mapped script tags. + pub fn as_slice(&self) -> &[Tag] { + &self.tags[..self.len] + } +} + +impl Deref for ScriptTags { + type Target = [Tag]; + + fn deref(&self) -> &Self::Target { + &self.tags[..self.len] + } +} + +impl std::fmt::Debug for ScriptTags { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + write!(f, "{:?}", self.as_slice()) + } +} + +// See <https://github.com/harfbuzz/harfbuzz/blob/63d09dbefcf7ad9f794ca96445d37b6d8c3c9124/src/hb-ot-tag.cc#L37> +fn old_tag_from_unicode(unicode_script: Tag) -> Tag { + let mut bytes = unicode_script.to_be_bytes(); + let tag_bytes = match &bytes { + b"Zmth" => b"math", + // Katakana and Hiragana both map to 'kana' + b"Hira" => b"kana", + // Spaces at the end are preserved, unlike ISO 15924 + b"Laoo" => b"lao ", + b"Yiii" => b"yi ", + // Unicode 5.0 additions + b"Nkoo" => b"nko ", + // Unicode 5.1 additions + b"Vaii" => b"vai ", + _ => { + // Else, just change the first char to lowercase + bytes[0] = bytes[0].to_ascii_lowercase(); + &bytes + } + }; + Tag::new(tag_bytes) +} + +/// Mapping from Unicode script code to "new" OpenType script +/// tags. +#[doc(hidden)] +pub const UNICODE_TO_NEW_OPENTYPE_SCRIPT_TAGS: &[(&[u8; 4], Tag)] = &[ + (b"Beng", Tag::new(b"bng2")), + (b"Deva", Tag::new(b"dev2")), + (b"Gujr", Tag::new(b"gjr2")), + (b"Guru", Tag::new(b"gur2")), + (b"Knda", Tag::new(b"knd2")), + (b"Mlym", Tag::new(b"mlm2")), + (b"Mymr", Tag::new(b"mym2")), + (b"Orya", Tag::new(b"ory2")), + (b"Taml", Tag::new(b"tml2")), + (b"Telu", Tag::new(b"tel2")), +]; + +// See <https://github.com/harfbuzz/harfbuzz/blob/63d09dbefcf7ad9f794ca96445d37b6d8c3c9124/src/hb-ot-tag.cc#L84> +fn new_tag_from_unicode(unicode_script: Tag) -> Option<Tag> { + let ix = UNICODE_TO_NEW_OPENTYPE_SCRIPT_TAGS + .binary_search_by_key(&unicode_script.to_be_bytes(), |entry| *entry.0) + .ok()?; + UNICODE_TO_NEW_OPENTYPE_SCRIPT_TAGS + .get(ix) + .map(|entry| entry.1) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{FontRef, TableProvider}; + + #[test] + fn script_index_for_tag() { + let font = FontRef::new(font_test_data::NOTOSERIFHEBREW_AUTOHINT_METRICS).unwrap(); + let gsub_scripts = font.gsub().unwrap().script_list().unwrap(); + let ordered_scripts = [b"DFLT", b"cyrl", b"grek", b"hebr", b"latn"]; + for (index, tag) in ordered_scripts.into_iter().enumerate() { + let tag = Tag::new(tag); + assert_eq!(gsub_scripts.index_for_tag(tag), Some(index as u16)); + } + } + + #[test] + fn simple_script_tag_from_unicode() { + let unicode_tags = [b"Cyrl", b"Grek", b"Hebr", b"Latn"]; + for unicode_tag in unicode_tags { + // These should all return a single tag that is simply + // the lowercase version of the Unicode tag + let mut bytes = *unicode_tag; + bytes[0] = bytes[0].to_ascii_lowercase(); + let expected_tag = Tag::new(&bytes); + let result = ScriptTags::from_unicode(Tag::new(unicode_tag)); + assert_eq!(&*result, &[expected_tag]); + } + } + + #[test] + fn exception_script_tag_from_unicode() { + let cases = [ + // (Unicode, OpenType) + (b"Kana", b"kana"), + // Hiragana maps to kana + (b"Hira", b"kana"), + // Unicode extends last char but OpenType pads with spaces + // for tags < 4 bytes + (b"Nkoo", b"nko "), + (b"Yiii", b"yi "), + (b"Vaii", b"vai "), + ]; + for (unicode_tag, ot_tag) in cases { + let result = ScriptTags::from_unicode(Tag::new(unicode_tag)); + assert_eq!(&*result, &[Tag::new(ot_tag)]); + } + } + + #[test] + fn multi_script_tags_from_unicode() { + let cases = [ + // (Unicode, OpenType) + (b"Beng", &[b"bng3", b"bng2", b"beng"][..]), + (b"Orya", &[b"ory3", b"ory2", b"orya"]), + (b"Mlym", &[b"mlm3", b"mlm2", b"mlym"]), + // There's no version 3 tag for Myanmar + (b"Mymr", &[b"mym2", b"mymr"]), + ]; + for (unicode_tag, ot_tags) in cases { + let result = ScriptTags::from_unicode(Tag::new(unicode_tag)); + let ot_tags = ot_tags + .iter() + .map(|bytes| Tag::new(bytes)) + .collect::<Vec<_>>(); + assert_eq!(&*result, &ot_tags); + } + } + + #[test] + fn select_scripts_from_unicode() { + let font = FontRef::new(font_test_data::NOTOSERIFHEBREW_AUTOHINT_METRICS).unwrap(); + let gsub_scripts = font.gsub().unwrap().script_list().unwrap(); + // We know Hebrew is available + let hebr = gsub_scripts + .select(&ScriptTags::from_unicode(Tag::new(b"Hebr"))) + .unwrap(); + assert_eq!( + hebr, + SelectedScript { + tag: Tag::new(b"hebr"), + index: 3, + is_fallback: false, + } + ); + // But this font doesn't contain any Indic scripts so we'll + // select a fallback for Bengali + let beng = gsub_scripts + .select(&ScriptTags::from_unicode(Tag::new(b"Beng"))) + .unwrap(); + assert_eq!( + beng, + SelectedScript { + tag: Tag::new(b"DFLT"), + index: 0, + is_fallback: true, + } + ); + } +}
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/loca.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/loca.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/loca.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/loca.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/lookupflag.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/lookupflag.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/lookupflag.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/lookupflag.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ltag.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ltag.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ltag.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ltag.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/maxp.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/maxp.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/maxp.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/maxp.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/mvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/mvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/mvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/mvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/name.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/name.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/name.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/name.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/os2.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/os2.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/os2.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/os2.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/post.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/post.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/post.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/post.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/blend.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/blend.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/blend.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/blend.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/charstring.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/charstring.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/charstring.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/charstring.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/dict.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/dict.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/dict.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/dict.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/fd_select.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/fd_select.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/fd_select.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/fd_select.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/index.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/index.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/index.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/index.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/stack.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/stack.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/stack.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/stack.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/string.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/string.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/string.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/string.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/sbix.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/sbix.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/sbix.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/sbix.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/stat.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/stat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/stat.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/stat.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/svg.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/svg.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/svg.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/svg.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/value_record.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/value_record.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/value_record.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/value_record.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/varc.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/varc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/varc.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/varc.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/variations.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/variations.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/variations.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/variations.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vhea.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vhea.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vhea.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vhea.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vmtx.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vmtx.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vmtx.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vmtx.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vorg.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vorg.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vorg.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vorg.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vvar.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vvar.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vvar.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vvar.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/layout.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/layout.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/layout.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/layout.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_gdef.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_gdef.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_gdef.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_gdef.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_gpos.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_gpos.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_gpos.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_gpos.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_gsub.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_gsub.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_gsub.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_gsub.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_helpers.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_helpers.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_helpers.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_helpers.rs
diff --git a/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/traversal.rs b/third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/traversal.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/traversal.rs rename to third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/traversal.rs
diff --git a/third_party/rust/fdeflate/v0_3/BUILD.gn b/third_party/rust/fdeflate/v0_3/BUILD.gn index 9bf4e12..b56c3f02 100644 --- a/third_party/rust/fdeflate/v0_3/BUILD.gn +++ b/third_party/rust/fdeflate/v0_3/BUILD.gn
@@ -13,18 +13,19 @@ epoch = "0.3" crate_type = "rlib" crate_root = - "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/lib.rs" + "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/lib.rs" sources = [ - "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/compress.rs", - "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/decompress.rs", - "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/lib.rs", - "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/src/tables.rs", + "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/compress.rs", + "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/decompress.rs", + "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/decompress/tests/test_utils.rs", + "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/lib.rs", + "//third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/src/tables.rs", ] inputs = [] build_native_rust_unit_tests = false edition = "2021" - cargo_pkg_version = "0.3.4" + cargo_pkg_version = "0.3.5" cargo_pkg_authors = "The image-rs Developers" cargo_pkg_name = "fdeflate" cargo_pkg_description = "Fast specialized deflate implementation"
diff --git a/third_party/rust/fdeflate/v0_3/README.chromium b/third_party/rust/fdeflate/v0_3/README.chromium index 4bca1cd..fdeab28 100644 --- a/third_party/rust/fdeflate/v0_3/README.chromium +++ b/third_party/rust/fdeflate/v0_3/README.chromium
@@ -1,9 +1,9 @@ Name: fdeflate URL: https://crates.io/crates/fdeflate Description: Fast specialized deflate implementation -Version: 0.3.4 +Version: 0.3.5 Security Critical: yes Shipped: yes License: Apache 2.0 -License File: //third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.4/LICENSE-APACHE -Revision: 11d05bdaec5f2ff9e5d1a8aed555958789f4cef8 +License File: //third_party/rust/chromium_crates_io/vendor/fdeflate-0.3.5/LICENSE-APACHE +Revision: e16928adc9496537794ce9ae93a55558b45db77a
diff --git a/third_party/rust/flate2/v1/BUILD.gn b/third_party/rust/flate2/v1/BUILD.gn index ef21eeb..3ee60d5 100644 --- a/third_party/rust/flate2/v1/BUILD.gn +++ b/third_party/rust/flate2/v1/BUILD.gn
@@ -13,34 +13,34 @@ epoch = "1" crate_type = "rlib" crate_root = - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/lib.rs" + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/lib.rs" sources = [ - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/bufreader.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/crc.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/bufread.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/read.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/deflate/write.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/c.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/ffi/rust.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/bufread.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/read.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/gz/write.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/lib.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/mem.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zio.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/bufread.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/read.rs", - "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/src/zlib/write.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/bufreader.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/crc.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/bufread.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/read.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/deflate/write.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/c.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/ffi/rust.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/bufread.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/read.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/gz/write.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/lib.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/mem.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zio.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/bufread.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/read.rs", + "//third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/src/zlib/write.rs", ] inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "1.0.33" + cargo_pkg_version = "1.0.34" cargo_pkg_authors = "Alex Crichton <alex@alexcrichton.com>, Josh Triplett <josh@joshtriplett.org>" cargo_pkg_name = "flate2" cargo_pkg_description = "DEFLATE compression and decompression exposed as Read/BufRead/Write streams. Supports miniz_oxide and multiple zlib implementations. Supports zlib, gzip, and raw deflate streams."
diff --git a/third_party/rust/flate2/v1/README.chromium b/third_party/rust/flate2/v1/README.chromium index bbc195d..16382a6 100644 --- a/third_party/rust/flate2/v1/README.chromium +++ b/third_party/rust/flate2/v1/README.chromium
@@ -4,9 +4,9 @@ Supports miniz_oxide and multiple zlib implementations. Supports zlib, gzip, and raw deflate streams. -Version: 1.0.33 +Version: 1.0.34 Security Critical: yes Shipped: yes License: Apache 2.0 -License File: //third_party/rust/chromium_crates_io/vendor/flate2-1.0.33/LICENSE-APACHE -Revision: 50852c6138789b255d5b2dfea2abb1a1dda99e99 +License File: //third_party/rust/chromium_crates_io/vendor/flate2-1.0.34/LICENSE-APACHE +Revision: 1a28821dc116dac14178858be056e4a58ef8f501
diff --git a/third_party/rust/libc/v0_2/BUILD.gn b/third_party/rust/libc/v0_2/BUILD.gn index 1b8914d..4e984639 100644 --- a/third_party/rust/libc/v0_2/BUILD.gn +++ b/third_party/rust/libc/v0_2/BUILD.gn
@@ -13,248 +13,249 @@ epoch = "0.2" crate_type = "rlib" crate_root = - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/lib.rs" + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/lib.rs" sources = [ - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fixed_width_ints.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/aarch64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/riscv64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/fuchsia/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/hermit.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/lib.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/macros.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/psp.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/sgx.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/solid/aarch64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/solid/arm.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/solid/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/switch.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/teeos/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/aix/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/aix/powerpc64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b32/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b32/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/aarch64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/aarch64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/x86_64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/b64/x86_64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/long_array.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/apple/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/dragonfly/errno.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/dragonfly/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/aarch64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/arm.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/freebsd15/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/riscv64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/freebsdlike/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/aarch64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/arm.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/mips.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/powerpc.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/riscv64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/sparc64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/x86.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/netbsd/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/aarch64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/arm.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/mips64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/powerpc.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/riscv64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/sparc64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/x86.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/bsd/netbsdlike/openbsd/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/b32.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/b64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/native.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/haiku/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/b32.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/b64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/hurd/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/arm.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/x86/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b32/x86/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/int128.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/aarch64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/riscv64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/riscv64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/x86_64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/b64/x86_64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/android/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/lfs64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/emscripten/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/generic/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/mips/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/powerpc/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/arch/sparc/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/arm/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/arm/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/csky/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/csky/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/m68k/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/mips/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/mips/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/powerpc.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/riscv32/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/sparc/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/x86/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b32/x86/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/mips64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/riscv64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/s390x.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/gnu/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/arm/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/arm/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/hexagon.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/mips/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/mips/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/powerpc.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/riscv32/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/x86/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b32/x86/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/int128.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/mips64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/powerpc64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/riscv64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/s390x.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/x86_64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/lfs64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/musl/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/non_exhaustive.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/arm/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/arm/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/arm/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips32/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips64/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mips/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/x86_64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/linux/uclibc/x86_64/other.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/linux_like/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/aarch64/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/arm/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/espidf/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/generic.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/horizon/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/powerpc/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/newlib/vita/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/no_align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/aarch64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/neutrino.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/redox/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/compat.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/illumos.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/solaris.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/x86.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/solarish/x86_common.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/aarch64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/arm.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/powerpc.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/powerpc64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/x86.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/vxworks/x86_64.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/wasi.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/gnu/align.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/gnu/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/windows/msvc/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/xous.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fixed_width_ints.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/aarch64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/riscv64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/fuchsia/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/hermit.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/lib.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/macros.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/psp.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/sgx.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/solid/aarch64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/solid/arm.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/solid/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/switch.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/teeos/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/aix/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/aix/powerpc64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b32/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b32/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/aarch64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/aarch64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/x86_64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/b64/x86_64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/long_array.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/apple/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/dragonfly/errno.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/dragonfly/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/aarch64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/arm.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd15/b64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/freebsd15/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/powerpc.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/riscv64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/x86.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/freebsdlike/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/aarch64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/arm.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/mips.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/powerpc.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/riscv64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/sparc64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/x86.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/netbsd/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/aarch64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/arm.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/mips64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/powerpc.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/riscv64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/sparc64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/x86.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/bsd/netbsdlike/openbsd/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/b32.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/b64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/native.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/haiku/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/b32.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/b64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/hurd/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/arm.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/x86/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b32/x86/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/int128.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/aarch64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/riscv64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/riscv64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/x86_64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/b64/x86_64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/android/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/lfs64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/emscripten/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/generic/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/mips/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/powerpc/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/arch/sparc/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/arm/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/arm/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/csky/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/csky/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/m68k/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/mips/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/mips/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/powerpc.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/riscv32/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/sparc/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/x86/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b32/x86/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/mips64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/riscv64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/s390x.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/gnu/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/arm/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/arm/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/hexagon.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/mips/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/mips/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/powerpc.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/riscv32/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/x86/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b32/x86/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/int128.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/mips64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/powerpc64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/riscv64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/s390x.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/x86_64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/lfs64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/musl/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/non_exhaustive.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/arm/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/arm/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/arm/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips32/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips64/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mips/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/x86_64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/linux/uclibc/x86_64/other.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/linux_like/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/aarch64/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/arm/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/espidf/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/generic.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/horizon/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/powerpc/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/newlib/vita/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/no_align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/aarch64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/neutrino.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/nto/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/redox/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/compat.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/illumos.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/solaris.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/x86.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/unix/solarish/x86_common.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/aarch64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/arm.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/powerpc.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/powerpc64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/x86.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/vxworks/x86_64.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/wasi/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/wasi/p2.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/gnu/align.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/gnu/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/windows/msvc/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/src/xous.rs", ] inputs = [] build_native_rust_unit_tests = false edition = "2015" - cargo_pkg_version = "0.2.158" + cargo_pkg_version = "0.2.159" cargo_pkg_authors = "The Rust Project Developers" cargo_pkg_name = "libc" cargo_pkg_description = "Raw FFI bindings to platform libraries like libc." @@ -266,7 +267,7 @@ proc_macro_configs += [ "//build/config/compiler:no_chromium_code" ] features = [ "std" ] build_root = - "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/build.rs" + "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/build.rs" build_sources = - [ "//third_party/rust/chromium_crates_io/vendor/libc-0.2.158/build.rs" ] + [ "//third_party/rust/chromium_crates_io/vendor/libc-0.2.159/build.rs" ] }
diff --git a/third_party/rust/libc/v0_2/README.chromium b/third_party/rust/libc/v0_2/README.chromium index cfd11e8..72161d8 100644 --- a/third_party/rust/libc/v0_2/README.chromium +++ b/third_party/rust/libc/v0_2/README.chromium
@@ -2,9 +2,9 @@ URL: https://crates.io/crates/libc Description: Raw FFI bindings to platform libraries like libc. -Version: 0.2.158 +Version: 0.2.159 Security Critical: yes Shipped: yes License: Apache 2.0 -License File: //third_party/rust/chromium_crates_io/vendor/libc-0.2.158/LICENSE-APACHE -Revision: c809c58c6873c05c9aa8cb3b9142f6c4d2818e57 +License File: //third_party/rust/chromium_crates_io/vendor/libc-0.2.159/LICENSE-APACHE +Revision: 7373a1abe57da20efae9fd2ca891d7b905c19e03
diff --git a/third_party/rust/read_fonts/v0_22/BUILD.gn b/third_party/rust/read_fonts/v0_22/BUILD.gn index 3c0163a..a9dc01f3 100644 --- a/third_party/rust/read_fonts/v0_22/BUILD.gn +++ b/third_party/rust/read_fonts/v0_22/BUILD.gn
@@ -12,153 +12,154 @@ crate_name = "read_fonts" epoch = "0.22" crate_type = "rlib" - crate_root = "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/lib.rs" + crate_root = "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/lib.rs" sources = [ - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/array.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/codegen_test.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/bitpage.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/bitset.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/input_bit_stream.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/mod.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/output_bit_stream.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/collections/int_set/sparse_bit_set.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/font_data.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/lib.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/offset.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/offset_array.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/read.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/table_provider.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/table_ref.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/aat.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ankr.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/avar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/base.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/bitmap.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cbdt.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cblc.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cff.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cff2.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cmap.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/colr.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/colr/closure.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cpal.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/cvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ebdt.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/eblc.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/feat.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/fvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gasp.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gdef.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode/decode.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode/instruction.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/glyf/bytecode/opcode.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gpos.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gsub.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gsub/closure.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/gvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/head.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/hhea.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/hmtx.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/hvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ift.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/instance_record.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/layout.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/loca.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/lookupflag.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/ltag.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/maxp.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/mvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/name.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/os2.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/post.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/blend.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/charstring.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/dict.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/fd_select.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/index.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/stack.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/postscript/string.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/sbix.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/stat.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/svg.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/value_record.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/varc.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/variations.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vhea.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vmtx.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vorg.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tables/vvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/layout.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_gdef.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_gpos.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_gsub.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/tests/test_helpers.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/traversal.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/array.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/codegen_test.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/bitpage.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/bitset.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/input_bit_stream.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/mod.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/output_bit_stream.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/collections/int_set/sparse_bit_set.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/font_data.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/lib.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/offset.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/offset_array.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/read.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/table_provider.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/table_ref.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/aat.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ankr.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/avar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/base.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/bitmap.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cbdt.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cblc.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cff.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cff2.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cmap.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/colr.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/colr/closure.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cpal.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/cvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ebdt.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/eblc.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/feat.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/fvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gasp.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gdef.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode/decode.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode/instruction.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/glyf/bytecode/opcode.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gpos.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gsub.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gsub/closure.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/gvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/head.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/hhea.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/hmtx.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/hvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ift.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/instance_record.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/layout.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/layout/script.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/loca.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/lookupflag.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/ltag.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/maxp.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/mvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/name.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/os2.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/post.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/blend.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/charstring.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/dict.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/fd_select.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/index.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/stack.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/postscript/string.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/sbix.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/stat.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/svg.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/value_record.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/varc.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/variations.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vhea.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vmtx.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vorg.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tables/vvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/layout.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_gdef.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_gpos.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_gsub.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/tests/test_helpers.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/traversal.rs", ] inputs = [ - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/font.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_aat.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_ankr.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_avar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_base.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_bitmap.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_cbdt.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_cblc.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_cff.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_cff2.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_cmap.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_colr.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_cpal.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_cvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_ebdt.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_eblc.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_feat.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_fvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_gasp.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_gdef.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_glyf.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_gpos.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_gsub.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_gvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_head.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_hhea.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_hmtx.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_hvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_ift.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_layout.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_ltag.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_maxp.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_mvar.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_name.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_os2.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_post.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_postscript.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_sbix.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_stat.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_svg.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_test_conditions.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_test_count_all.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_test_enum.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_test_flags.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_test_formats.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_test_offsets_arrays.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_test_records.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_varc.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_variations.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_vhea.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_vmtx.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_vorg.rs", - "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/src/../generated/generated_vvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/font.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_aat.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_ankr.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_avar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_base.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_bitmap.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_cbdt.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_cblc.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_cff.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_cff2.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_cmap.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_colr.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_cpal.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_cvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_ebdt.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_eblc.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_feat.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_fvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_gasp.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_gdef.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_glyf.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_gpos.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_gsub.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_gvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_head.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_hhea.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_hmtx.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_hvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_ift.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_layout.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_ltag.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_maxp.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_mvar.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_name.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_os2.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_post.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_postscript.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_sbix.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_stat.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_svg.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_test_conditions.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_test_count_all.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_test_enum.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_test_flags.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_test_formats.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_test_offsets_arrays.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_test_records.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_varc.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_variations.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_vhea.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_vmtx.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_vorg.rs", + "//third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/src/../generated/generated_vvar.rs", ] build_native_rust_unit_tests = false edition = "2021" - cargo_pkg_version = "0.22.0" + cargo_pkg_version = "0.22.1" cargo_pkg_name = "read-fonts" cargo_pkg_description = "Reading OpenType font files." library_configs -= [ "//build/config/compiler:chromium_code" ]
diff --git a/third_party/rust/read_fonts/v0_22/README.chromium b/third_party/rust/read_fonts/v0_22/README.chromium index 6f126d2..20d9bea 100644 --- a/third_party/rust/read_fonts/v0_22/README.chromium +++ b/third_party/rust/read_fonts/v0_22/README.chromium
@@ -1,9 +1,9 @@ Name: read-fonts URL: https://crates.io/crates/read-fonts Description: Reading OpenType font files. -Version: 0.22.0 +Version: 0.22.1 Security Critical: yes Shipped: yes License: Apache 2.0 -License File: //third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.0/LICENSE-APACHE -Revision: 6b58785c80e2641a945863301f1f0f270902766c +License File: //third_party/rust/chromium_crates_io/vendor/read-fonts-0.22.1/LICENSE-APACHE +Revision: f80507c47a9974863c735af5162d76dba4daf8bf
diff --git a/third_party/skia b/third_party/skia index 5218f67..5fb36dd 160000 --- a/third_party/skia +++ b/third_party/skia
@@ -1 +1 @@ -Subproject commit 5218f67ec716edb39f5d005ddaf6e9d70eca7cc9 +Subproject commit 5fb36dd08a257623ee0738747286de09662e4591
diff --git a/third_party/vulkan-deps b/third_party/vulkan-deps index fb8f012..0828416 160000 --- a/third_party/vulkan-deps +++ b/third_party/vulkan-deps
@@ -1 +1 @@ -Subproject commit fb8f0127fca4d687f0584b62183572ed39ffc198 +Subproject commit 0828416b3eae17db848880d486e5c7f0038e46b0
diff --git a/third_party/webrtc b/third_party/webrtc index 8569a0d..076eb6c 160000 --- a/third_party/webrtc +++ b/third_party/webrtc
@@ -1 +1 @@ -Subproject commit 8569a0d5346330eb6641512df65b864bbaed11e9 +Subproject commit 076eb6cdf236cd6125ab126df2340ca3ee265425
diff --git a/third_party/wtl/README.chromium b/third_party/wtl/README.chromium index ce067cd..2c99870 100644 --- a/third_party/wtl/README.chromium +++ b/third_party/wtl/README.chromium
@@ -1,7 +1,7 @@ Name: Windows Template Library (WTL) URL: https://sourceforge.net/projects/wtl/files/WTL%2010/ Version: 10.0.9163 -Commit: commit 57a7c4e2629cb85c6f27faa91650e047c4220e15 +Revision: 57a7c4e2629cb85c6f27faa91650e047c4220e15 License: Microsoft Permissive License License File: Ms-PL.txt Security Critical: yes
diff --git a/tools/android/avd/proto/android_33_google_apis_x64_swangle.textpb b/tools/android/avd/proto/android_33_google_apis_x64_swangle.textpb index 1baaf85..4dd7e93 100644 --- a/tools/android/avd/proto/android_33_google_apis_x64_swangle.textpb +++ b/tools/android/avd/proto/android_33_google_apis_x64_swangle.textpb
@@ -6,7 +6,7 @@ emulator_package { package_name: "chromium/third_party/android_sdk/public/emulator" - version: "5biVQLkXXVm61beRTyVfmPBrmjEJFBJTpdzAUcXY378C" # 34.2.16 (Stable) + version: "XS__KK27esI_4qZkc_Ybb_ooYjPfcIQ7DDOPUZGYW5wC" # 35.1.21 (Stable) dest_path: "android_33_google_apis_x64_swangle" } @@ -19,9 +19,9 @@ avd_package { package_name: "chromium/third_party/android_sdk/public/avds/android-33/google_apis/x86_64" - # Created in https://ci.chromium.org/ui/b/8740055568560541329 + # Created in https://ci.chromium.org/ui/b/8735783234873256961 # Patched gmscore version 24.26.32 in https://crrev.com/c/5735581 - version: "5RbPXtXRFZ_norw0s0y8ZBq_nAUD6hGItzAfsSfV6ZQC" + version: "Ee3kRDaGcJ0kQ4GP7TUNOGswwt_Xj6uGe9gUzP7axPwC" dest_path: "android_33_google_apis_x64_swangle" } avd_name: "android_33_google_apis_x64"
diff --git a/tools/android/checkstyle/chromium-style-5.0.xml b/tools/android/checkstyle/chromium-style-5.0.xml index 7d0caa9..a22c863 100644 --- a/tools/android/checkstyle/chromium-style-5.0.xml +++ b/tools/android/checkstyle/chromium-style-5.0.xml
@@ -108,7 +108,11 @@ <!-- https://source.android.com/docs/setup/contribute/code-style#treat-acronyms-as-words --> <property name="severity" value="warning"/> <property name="allowedAbbreviationLength" value="0"/> - <property name="allowedAbbreviations" value="GURL"/> + <!-- Fixing/changing GURL is not happening. Single letter variable names + do not have trailing lower case letters, and often must be in the middle + of an associated method name, especially when the name needs ForTesting + suffix. --> + <property name="allowedAbbreviations" value="GURL,X,Y,Z"/> </module> <module name="FallThrough"> <property name="severity" value="error"/>
diff --git a/tools/binary_size/generate_milestone_reports.py b/tools/binary_size/generate_milestone_reports.py index 16a6562..c48dfd9 100755 --- a/tools/binary_size/generate_milestone_reports.py +++ b/tools/binary_size/generate_milestone_reports.py
@@ -115,6 +115,7 @@ '127.0.6533.27', '128.0.6613.20', '129.0.6668.32', + '130.0.6723.20', ]
diff --git a/tools/crates/create_update_cl.py b/tools/crates/create_update_cl.py index 6df3ba3..7026e8b 100755 --- a/tools/crates/create_update_cl.py +++ b/tools/crates/create_update_cl.py
@@ -528,8 +528,15 @@ "and run `tools/crates/run_gnrt.py vendor` again.") -def RaiseErrorIfGitIsDirty(): +def IsGitDirty(): if Git("status", "--porcelain"): + return True + else: + return False + + +def RaiseErrorIfGitIsDirty(): + if IsGitDirty(): raise RuntimeError("Dirty `git status` - save you local changes "\ "before rerunning the script") @@ -563,11 +570,16 @@ *args) -def GitCommit(args, title): - Git("commit", "-m", title) - if args.upload: - print(f" Running `git cl upload ...` ...") - GitClUpload("-m", title) +def GitCommit(args, title, error_if_no_changes=True): + if IsGitDirty(): + Git("commit", "-m", title) + if args.upload: + print(f" Running `git cl upload ...` ...") + GitClUpload("-m", title) + else: + if error_if_no_changes: + raise RuntimeError( + f"The '%title' commit unexpectedly has no changes") def ResolveCrateNameToCrateId(crate_name): @@ -694,7 +706,12 @@ print( f"WARNING: {old_target_dir} unexpectedly has less files "\ f"than {new_target_dir}") - GitCommit(args, "Removing //third_party/rust/.../<old_epoch>") + GitCommit( + args, + "Removing //third_party/rust/.../<old_epoch>", + # Just skip this commit when `manual` mode is used in + # a scenario that *only* performs minor version updates. + error_if_no_changes=False) # Fix up the target names print(f" Updating the target name in BUILD.gn files...") @@ -716,7 +733,12 @@ with open(path, 'w') as file: file.write(file_contents) Git("add", "--", path) - GitCommit(args, "Updating the target name in BUILD.gn files") + GitCommit( + args, + "Updating the target name in BUILD.gn files", + # Just skip this commit when `manual` mode is used in + # a scenario that *only* performs minor version updates. + error_if_no_changes=False) def main():
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 948e2348..e0534552 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -27,13 +27,9 @@ # this dict to look up which config to use for a given bot. 'builder_groups': { 'chrome': { - 'lacros-amd64-generic-chrome': 'chromeos_amd64-generic_lacros_official_skylab_reclient', - 'lacros-arm-generic-chrome': 'chromeos_arm-generic_lacros_official_skylab_reclient', - 'lacros-arm64-generic-chrome': 'chromeos_arm64-generic_lacros_official_skylab_reclient', # Don't include unwind tables for linux-/mac-/win-/win64-chrome builders. # They monitor binary size growth, which may be affected by the tables. 'linux-chrome': 'official_reclient', - 'linux-lacros-chrome': 'official_reclient_lacros_include_unwind_tables', 'mac-chrome': 'official_reclient_mac', 'win-branded-rel': 'chrome_branded_reclient_minimal_symbols', 'win-chrome': 'official_reclient_x86', @@ -42,8 +38,6 @@ 'chrome.gpu.fyi': { 'ChromeOS FYI Release Skylab (jacuzzi)': 'gpu_tests_chromeos_jacuzzi_release_trybot_dcheck_off_no_symbols_reclient_skylab', - 'Lacros FYI Release (jacuzzi)': 'gpu_fyi_tests_lacros_jacuzzi_release_trybot_dcheck_off_no_symbols_reclient', - 'Lacros FYI Release (octopus)': 'gpu_fyi_tests_lacros_octopus_release_trybot_dcheck_off_no_symbols_reclient', }, 'chrome.pgo': { @@ -77,7 +71,6 @@ 'codesearch-gen-chromium-cronet': 'codesearch_gen_chromium_cronet_bot_reclient', 'codesearch-gen-chromium-fuchsia': 'codesearch_gen_chromium_fuchsia_bot_reclient', 'codesearch-gen-chromium-ios': 'codesearch_gen_chromium_ios_bot_reclient', - 'codesearch-gen-chromium-lacros': 'codesearch_gen_chromium_lacros_bot_reclient', 'codesearch-gen-chromium-linux': 'codesearch_gen_chromium_bot_reclient', 'codesearch-gen-chromium-mac': 'codesearch_gen_chromium_mac_bot_reclient', 'codesearch-gen-chromium-webview': 'codesearch_gen_chromium_android_bot_reclient', @@ -94,9 +87,6 @@ 'android_arm64_high_end-builder-perf': 'official_reclient_minimal_symbols_android_arm64_high_end', 'android_arm64_high_end-builder-perf-pgo': 'official_reclient_minimal_symbols_android_arm64_high_end_pgo', 'chromecast-linux-builder-perf': 'cast_binary_size_reclient', - 'chromeos-amd64-generic-lacros-builder-perf': 'chromeos_amd64-generic_lacros_official_reclient', - 'chromeos-arm-generic-lacros-builder-perf': 'chromeos_arm-generic_lacros_official_reclient', - 'chromeos-arm64-generic-lacros-builder-perf': 'chromeos_arm64-generic_lacros_official_reclient', 'linux-builder-perf': 'official_linux_perf', 'linux-builder-perf-pgo': 'official_reclient_linux_perf_pgo', 'linux-builder-perf-rel': 'official_linux_perf', @@ -130,9 +120,6 @@ 'android_arm64_high_end-builder-perf': 'official_reclient_minimal_symbols_android_arm64_high_end', 'android_arm64_high_end-builder-perf-pgo': 'official_reclient_minimal_symbols_android_arm64_high_end_pgo', 'chromecast-linux-builder-perf': 'cast_binary_size_reclient', - 'chromeos-amd64-generic-lacros-builder-perf': 'chromeos_amd64-generic_lacros_official_reclient', - 'chromeos-arm-generic-lacros-builder-perf': 'chromeos_arm-generic_lacros_official_reclient', - 'chromeos-arm64-generic-lacros-builder-perf': 'chromeos_arm64-generic_lacros_official_reclient', 'linux-builder-perf': 'official_linux_perf', 'linux-builder-perf-pgo': 'official_reclient_linux_perf_pgo', 'linux-builder-perf-rel': 'official_linux_perf', @@ -182,7 +169,6 @@ 'android-buildspeed-dbg': 'android_debug_bot_reclient_fastbuild', 'android-emulator-finch-smoke-chrome': 'android_release_bot_minimal_symbols_x86_fastbuild_webview_trichrome_reclient', 'chromeos-arm-generic-cfi-thin-lto-chrome-reclient': 'chromeos_arm-generic_cfi_thin_lto_official_reclient', - 'lacros-arm-generic-chrome-fyi-reclient': 'chromeos_arm-generic_lacros_official_skylab_reclient', 'linux-finch-smoke-chrome': 'official_reclient', 'lorenz-graph-dbg': 'android_debug_bot_reclient_external_fastbuild', 'mac-arm64-finch-smoke-chrome': 'official_reclient_mac_arm', @@ -215,12 +201,8 @@ }, 'tryserver.chrome': { - 'lacros-amd64-generic-chrome': 'chromeos_amd64-generic_lacros_official_skylab', - 'lacros-arm-generic-chrome': 'chromeos_arm-generic_lacros_official_skylab', - 'lacros-arm64-generic-chrome': 'chromeos_arm64-generic_lacros_official_skylab', 'linux-chrome': 'official_reclient', 'linux-finch-smoke-chrome': 'official_reclient', - 'linux-lacros-chrome': 'official_reclient_lacros_include_unwind_tables', 'mac-arm64-finch-smoke-chrome': 'official_reclient_mac_arm', 'mac-chrome': 'official_reclient_mac', 'win-branded-compile-rel': 'chrome_branded_reclient_minimal_symbols', @@ -338,45 +320,10 @@ 'chrome_branded', 'minimal_symbols', 'release_bot_reclient', ], - 'chromeos_amd64-generic_lacros_official_reclient': [ - 'chromeos_amd64-generic-crostoolchain_reclient', 'lacros', 'official', 'minimal_symbols', 'cfi', 'thin_lto', - ], - - # This is the same as 'chromeos_amd64-generic_lacros_official', except for - # the 'is_skylab' arg. Please keep them in sync. - 'chromeos_amd64-generic_lacros_official_skylab': [ - 'chromeos_amd64-generic-crostoolchain', 'lacros', 'official', 'minimal_symbols', 'cfi', 'thin_lto', 'is_skylab', - ], - 'chromeos_amd64-generic_lacros_official_skylab_reclient': [ - 'chromeos_amd64-generic-crostoolchain_reclient', 'lacros', 'official', 'minimal_symbols', 'cfi', 'thin_lto', 'is_skylab', - ], - 'chromeos_arm-generic_cfi_thin_lto_official_reclient': [ 'chromeos_device_reclient', 'arm-generic', 'cfi_full', 'thin_lto', 'official', 'full_symbols', 'ozone_headless' ], - 'chromeos_arm-generic_lacros_official_reclient': [ - 'chromeos_arm-generic-crostoolchain_reclient', 'lacros', 'official', 'minimal_symbols', 'cfi', 'thin_lto', - ], - - 'chromeos_arm-generic_lacros_official_skylab': [ - 'chromeos_arm-generic-crostoolchain', 'lacros', 'official', 'minimal_symbols', 'cfi', 'thin_lto', 'is_skylab', - ], - 'chromeos_arm-generic_lacros_official_skylab_reclient': [ - 'chromeos_arm-generic-crostoolchain_reclient', 'lacros', 'official', 'minimal_symbols', 'cfi', 'thin_lto', 'is_skylab', - ], - - 'chromeos_arm64-generic_lacros_official_reclient': [ - 'chromeos_arm64-generic-crostoolchain_reclient', 'lacros', 'official', 'minimal_symbols', 'cfi', 'thin_lto', - ], - - 'chromeos_arm64-generic_lacros_official_skylab': [ - 'chromeos_arm64-generic-crostoolchain', 'lacros', 'official', 'minimal_symbols', 'cfi', 'thin_lto', 'is_skylab', - ], - 'chromeos_arm64-generic_lacros_official_skylab_reclient': [ - 'chromeos_arm64-generic-crostoolchain_reclient', 'lacros', 'official', 'minimal_symbols', 'cfi', 'thin_lto', 'is_skylab', - ], - 'chromeos_kevin_include_unwind_tables_official_reclient': [ 'chromeos_kevin_reclient', 'include_unwind_tables', 'official', ], @@ -431,12 +378,6 @@ 'codesearch_ios_reclient', 'ios', 'ios_disable_code_signing' ], - # Lacros uses different gn args to build for chromeOS device vs. Linux. For - # simplicity, we only generate codesearch x-refs for lacros on Linux. - 'codesearch_gen_chromium_lacros_bot_reclient': [ - 'codesearch_reclient', 'lacros_on_linux', 'use_cups', - ], - 'codesearch_gen_chromium_mac_bot_reclient': [ 'codesearch_reclient', 'mac', ], @@ -449,16 +390,6 @@ 'debug_bot_reclient', ], - 'gpu_fyi_tests_lacros_jacuzzi_release_trybot_dcheck_off_no_symbols_reclient': [ - 'chromeos', 'jacuzzi', 'official', 'release_bot_reclient', 'no_symbols', - 'chromeos_device_reclient', 'also_build_lacros_chrome_for_architecture_arm64', - ], - - 'gpu_fyi_tests_lacros_octopus_release_trybot_dcheck_off_no_symbols_reclient': [ - 'chromeos', 'octopus', 'official', 'release_bot_reclient', 'no_symbols', - 'chromeos_device_reclient', 'also_build_lacros_chrome_for_architecture_amd64', - ], - 'gpu_tests_android_release_trybot_arm64_reclient': [ 'gpu_tests', 'android', 'release_trybot_minimal_symbols_reclient', 'arm64', 'static_angle', ], @@ -547,11 +478,6 @@ 'cast_receiver_size_optimized_internal', 'official', 'reclient', 'minimal_symbols', 'fuchsia', 'fuchsia_include_sd_images', 'arm64', 'ffmpeg_branding_chrome', 'proprietary_codecs', 'test_isolate_no_emulator', ], - 'official_reclient_lacros_include_unwind_tables': [ - 'official', 'reclient', 'lacros', 'minimal_symbols', 'include_unwind_tables', - 'also_build_ash_chrome', - ], - 'official_reclient_linux_perf_pgo': [ 'official', 'reclient', 'no_gnome_keyring', 'minimal_symbols', ], @@ -718,22 +644,6 @@ # This is a dict mapping a given 'mixin' name to a dict of settings that # mb should use. See //tools/mb/docs/user_guide.md for more information. 'mixins': { - 'also_build_ash_chrome': { - 'gn_args': 'also_build_ash_chrome=true' - }, - - 'also_build_lacros_chrome_for_architecture_amd64': { - 'gn_args': 'also_build_lacros_chrome_for_architecture="amd64"', - }, - - 'also_build_lacros_chrome_for_architecture_arm64': { - 'gn_args': 'also_build_lacros_chrome_for_architecture="arm64"', - }, - - 'amd64-generic-crostoolchain': { - 'args_file': '//build/args/chromeos/amd64-generic-crostoolchain.gni', - }, - # We build Android with codecs on most bots to ensure maximum test # coverage, but use 'android_without_codecs' on bots responsible for # building publicly advertised non-Official Android builds -- @@ -772,18 +682,10 @@ 'args_file': '//build/args/chromeos/arm-generic.gni', }, - 'arm-generic-crostoolchain': { - 'args_file': '//build/args/chromeos/arm-generic-crostoolchain.gni', - }, - 'arm64': { 'gn_args': 'target_cpu="arm64"', }, - 'arm64-generic-crostoolchain': { - 'args_file': '//build/args/chromeos/arm64-generic-crostoolchain.gni', - }, - 'arm64_host': { 'gn_args': 'test_host_cpu="arm64"', }, @@ -834,39 +736,10 @@ 'gn_args': 'target_os="chromeos"', }, - 'chromeos_amd64-generic-crostoolchain': { - 'mixins': ['chromeos_device', 'amd64-generic-crostoolchain',] - }, - - 'chromeos_amd64-generic-crostoolchain_reclient': { - 'mixins': ['chromeos_device_reclient', 'amd64-generic-crostoolchain', 'ozone_headless'] - }, - - 'chromeos_arm-generic-crostoolchain': { - 'mixins': ['chromeos_device', 'arm-generic-crostoolchain',] - }, - - 'chromeos_arm-generic-crostoolchain_reclient': { - 'mixins': ['chromeos_device_reclient', 'arm-generic-crostoolchain', 'ozone_headless'] - }, - - 'chromeos_arm64-generic-crostoolchain': { - 'mixins': ['chromeos_device', 'arm64-generic-crostoolchain',] - }, - - 'chromeos_arm64-generic-crostoolchain_reclient': { - 'mixins': ['chromeos_device_reclient', 'arm64-generic-crostoolchain', 'ozone_headless'] - }, - 'chromeos_codecs': { 'mixins': ['ffmpeg_branding_chromeos', 'proprietary_codecs'], }, - 'chromeos_device': { - 'gn_args': 'is_chromeos_device=true ozone_platform_headless=true', - 'mixins': ['dcheck_off', 'reclient'], - }, - 'chromeos_device_reclient': { 'gn_args': 'is_chromeos_device=true', 'mixins': ['dcheck_off', 'reclient'], @@ -1031,14 +904,6 @@ 'args_file': '//build/args/chromeos/kevin.gni', }, - 'lacros': { - 'gn_args': 'target_os="chromeos" chromeos_is_browser_only=true' - }, - - 'lacros_on_linux': { - 'gn_args': 'target_os="chromeos" chromeos_is_browser_only=true' - }, - 'lsan': { 'gn_args': 'is_lsan=true', }, @@ -1079,10 +944,6 @@ 'gn_args': 'ignore_missing_widevine_signing_cert=true', }, - 'octopus': { - 'args_file': '//build/args/chromeos/octopus.gni', - }, - 'official': { 'mixins': ['official_optimize'], 'gn_args': 'is_chrome_branded=true',
diff --git a/tools/mb/mb_config_expectations/chrome.gpu.fyi.json b/tools/mb/mb_config_expectations/chrome.gpu.fyi.json index 70b725b..e534ebfad 100644 --- a/tools/mb/mb_config_expectations/chrome.gpu.fyi.json +++ b/tools/mb/mb_config_expectations/chrome.gpu.fyi.json
@@ -13,35 +13,5 @@ "symbol_level": 0, "use_remoteexec": true } - }, - "Lacros FYI Release (jacuzzi)": { - "args_file": "//build/args/chromeos/jacuzzi.gni", - "gn_args": { - "also_build_lacros_chrome_for_architecture": "arm64", - "dcheck_always_on": false, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_component_build": false, - "is_debug": false, - "is_official_build": true, - "symbol_level": 0, - "target_os": "chromeos", - "use_remoteexec": true - } - }, - "Lacros FYI Release (octopus)": { - "args_file": "//build/args/chromeos/octopus.gni", - "gn_args": { - "also_build_lacros_chrome_for_architecture": "amd64", - "dcheck_always_on": false, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_component_build": false, - "is_debug": false, - "is_official_build": true, - "symbol_level": 0, - "target_os": "chromeos", - "use_remoteexec": true - } } } \ No newline at end of file
diff --git a/tools/mb/mb_config_expectations/chrome.json b/tools/mb/mb_config_expectations/chrome.json index 7a35a6e..94522e23 100644 --- a/tools/mb/mb_config_expectations/chrome.json +++ b/tools/mb/mb_config_expectations/chrome.json
@@ -1,55 +1,4 @@ { - "lacros-amd64-generic-chrome": { - "args_file": "//build/args/chromeos/amd64-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "is_skylab": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, - "lacros-arm-generic-chrome": { - "args_file": "//build/args/chromeos/arm-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "is_skylab": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, - "lacros-arm64-generic-chrome": { - "args_file": "//build/args/chromeos/arm64-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "is_skylab": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, "linux-chrome": { "gn_args": { "is_chrome_branded": true, @@ -57,18 +6,6 @@ "use_remoteexec": true } }, - "linux-lacros-chrome": { - "gn_args": { - "also_build_ash_chrome": true, - "chromeos_is_browser_only": true, - "exclude_unwind_tables": false, - "is_chrome_branded": true, - "is_official_build": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true - } - }, "mac-chrome": { "gn_args": { "ignore_missing_widevine_signing_cert": true,
diff --git a/tools/mb/mb_config_expectations/chromium.infra.codesearch.json b/tools/mb/mb_config_expectations/chromium.infra.codesearch.json index f7f6226..5c5503c 100644 --- a/tools/mb/mb_config_expectations/chromium.infra.codesearch.json +++ b/tools/mb/mb_config_expectations/chromium.infra.codesearch.json
@@ -82,21 +82,6 @@ "use_remoteexec": true } }, - "codesearch-gen-chromium-lacros": { - "gn_args": { - "blink_enable_generated_code_formatting": true, - "chromeos_is_browser_only": true, - "clang_use_chrome_plugins": false, - "enable_kythe_annotations": true, - "is_clang": true, - "is_component_build": true, - "is_debug": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_cups": true, - "use_remoteexec": true - } - }, "codesearch-gen-chromium-linux": { "gn_args": { "blink_enable_generated_code_formatting": true,
diff --git a/tools/mb/mb_config_expectations/chromium.perf.json b/tools/mb/mb_config_expectations/chromium.perf.json index 9c0b45f..5a39f5d 100644 --- a/tools/mb/mb_config_expectations/chromium.perf.json +++ b/tools/mb/mb_config_expectations/chromium.perf.json
@@ -130,54 +130,6 @@ "use_remoteexec": true } }, - "chromeos-amd64-generic-lacros-builder-perf": { - "args_file": "//build/args/chromeos/amd64-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, - "chromeos-arm-generic-lacros-builder-perf": { - "args_file": "//build/args/chromeos/arm-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, - "chromeos-arm64-generic-lacros-builder-perf": { - "args_file": "//build/args/chromeos/arm64-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, "linux-builder-perf": { "gn_args": { "chrome_pgo_phase": 0,
diff --git a/tools/mb/mb_config_expectations/chromium.perf.pinpoint.json b/tools/mb/mb_config_expectations/chromium.perf.pinpoint.json index e2ba2be..88190d0a 100644 --- a/tools/mb/mb_config_expectations/chromium.perf.pinpoint.json +++ b/tools/mb/mb_config_expectations/chromium.perf.pinpoint.json
@@ -130,54 +130,6 @@ "use_remoteexec": true } }, - "chromeos-amd64-generic-lacros-builder-perf": { - "args_file": "//build/args/chromeos/amd64-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, - "chromeos-arm-generic-lacros-builder-perf": { - "args_file": "//build/args/chromeos/arm-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, - "chromeos-arm64-generic-lacros-builder-perf": { - "args_file": "//build/args/chromeos/arm64-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, "linux-builder-perf": { "gn_args": { "chrome_pgo_phase": 0,
diff --git a/tools/mb/mb_config_expectations/internal.chrome.fyi.json b/tools/mb/mb_config_expectations/internal.chrome.fyi.json index c07a6952..d198bcec 100644 --- a/tools/mb/mb_config_expectations/internal.chrome.fyi.json +++ b/tools/mb/mb_config_expectations/internal.chrome.fyi.json
@@ -45,23 +45,6 @@ "use_thin_lto": true } }, - "lacros-arm-generic-chrome-fyi-reclient": { - "args_file": "//build/args/chromeos/arm-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "is_skylab": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, "linux-finch-smoke-chrome": { "gn_args": { "is_chrome_branded": true,
diff --git a/tools/mb/mb_config_expectations/tryserver.chrome.json b/tools/mb/mb_config_expectations/tryserver.chrome.json index fde1d7f1..32c9c7e 100644 --- a/tools/mb/mb_config_expectations/tryserver.chrome.json +++ b/tools/mb/mb_config_expectations/tryserver.chrome.json
@@ -1,55 +1,4 @@ { - "lacros-amd64-generic-chrome": { - "args_file": "//build/args/chromeos/amd64-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "is_skylab": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, - "lacros-arm-generic-chrome": { - "args_file": "//build/args/chromeos/arm-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "is_skylab": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, - "lacros-arm64-generic-chrome": { - "args_file": "//build/args/chromeos/arm64-generic-crostoolchain.gni", - "gn_args": { - "chromeos_is_browser_only": true, - "dcheck_always_on": false, - "is_cfi": true, - "is_chrome_branded": true, - "is_chromeos_device": true, - "is_official_build": true, - "is_skylab": true, - "ozone_platform_headless": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true, - "use_thin_lto": true - } - }, "linux-chrome": { "gn_args": { "is_chrome_branded": true, @@ -64,18 +13,6 @@ "use_remoteexec": true } }, - "linux-lacros-chrome": { - "gn_args": { - "also_build_ash_chrome": true, - "chromeos_is_browser_only": true, - "exclude_unwind_tables": false, - "is_chrome_branded": true, - "is_official_build": true, - "symbol_level": 1, - "target_os": "chromeos", - "use_remoteexec": true - } - }, "mac-arm64-finch-smoke-chrome": { "gn_args": { "ignore_missing_widevine_signing_cert": true,
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml index 06d7d85..dc251a9a6 100644 --- a/tools/metrics/actions/actions.xml +++ b/tools/metrics/actions/actions.xml
@@ -46758,9 +46758,12 @@ <suffix name="GoogleAppsButton" label="Google Apps details page button"/> <suffix name="GoogleToolsBuiltInButton" label="Google tools built in details page button"/> - <suffix name="HelpMeWriteButton" label="Help me write page button"/> + <suffix name="HelpMeReadButton" label="Help me read details page button"/> + <suffix name="HelpMeWriteButton" label="Help me write details page button"/> <suffix name="LauncherSearchButton" label="Launcher search details page button"/> + <suffix name="LiveTranslateButton" + label="Live translate details page button"/> <suffix name="LumaFusionButton" label="LumaFusion details page button"/> <suffix name="MessagingButton" label="Messaging details page button"/> <suffix name="MobileGamingButton" label="Mobile Gaming details page button"/>
diff --git a/tools/metrics/histograms/metadata/account_manager/histograms.xml b/tools/metrics/histograms/metadata/account_manager/histograms.xml index 921460111..3256192 100644 --- a/tools/metrics/histograms/metadata/account_manager/histograms.xml +++ b/tools/metrics/histograms/metadata/account_manager/histograms.xml
@@ -50,7 +50,7 @@ </histogram> <histogram name="AccountManager.EduCoexistence.FetchAccessTokenResult" - enum="GoogleServiceAuthError" expires_after="2024-11-01"> + enum="GoogleServiceAuthError" expires_after="2025-10-01"> <owner>agawronska@chromium.org</owner> <owner>cros-families-eng@google.com</owner> <summary> @@ -61,7 +61,7 @@ </histogram> <histogram name="AccountManager.EduCoexistenceV2.InSessionFlowResult" - enum="EduCoexistenceFlowV2Result" expires_after="2024-11-01"> + enum="EduCoexistenceFlowV2Result" expires_after="2025-10-01"> <owner>agawronska@chromium.org</owner> <owner>cros-families-eng@google.com</owner> <summary> @@ -71,7 +71,7 @@ </histogram> <histogram name="AccountManager.EduCoexistenceV2.OnboardingFlowResult" - enum="EduCoexistenceFlowV2Result" expires_after="2025-03-09"> + enum="EduCoexistenceFlowV2Result" expires_after="2025-10-01"> <owner>agawronska@chromium.org</owner> <owner>cros-families-eng@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/ash/histograms.xml b/tools/metrics/histograms/metadata/ash/histograms.xml index fc8e0ac..1670d0e 100644 --- a/tools/metrics/histograms/metadata/ash/histograms.xml +++ b/tools/metrics/histograms/metadata/ash/histograms.xml
@@ -5280,7 +5280,7 @@ </histogram> <histogram name="Ash.Login.ShowGaiaSignin.PermanentlyUntrusted" enum="Boolean" - expires_after="2024-11-01"> + expires_after="2025-10-01"> <owner>agawronska@chromium.org</owner> <owner>cros-families-eng@google.com</owner> <summary> @@ -5291,7 +5291,7 @@ </histogram> <histogram name="Ash.Login.ShowGaiaSignin.WaitTime" units="ms" - expires_after="2025-03-09"> + expires_after="2025-10-01"> <owner>agawronska@chromium.org</owner> <owner>cros-families-eng@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/borealis/histograms.xml b/tools/metrics/histograms/metadata/borealis/histograms.xml index 5659c29..8095c3c 100644 --- a/tools/metrics/histograms/metadata/borealis/histograms.xml +++ b/tools/metrics/histograms/metadata/borealis/histograms.xml
@@ -68,7 +68,7 @@ </histogram> <histogram name="Borealis.Disk.InodeRatioAtStartup" units="KiB" - expires_after="2024-11-14"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary> @@ -85,28 +85,28 @@ </histogram> <histogram name="Borealis.Disk.StatefulWritesDaily" units="KiB" - expires_after="2024-10-28"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary>Borealis stateful KiB written per day. Reported daily.</summary> </histogram> <histogram name="Borealis.Disk.SwapReadsDaily" units="KiB" - expires_after="2024-10-28"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary>Borealis swap file KiB read per day. Reported daily.</summary> </histogram> <histogram name="Borealis.Disk.SwapWritesDaily" units="KiB" - expires_after="2024-10-28"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary>Borealis swap file KiB written per day. Reported daily.</summary> </histogram> <histogram name="Borealis.Disk.VMUsageToTotalSpacePercentageAtStartup" - units="%" expires_after="2024-11-14"> + units="%" expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary> @@ -117,7 +117,7 @@ </histogram> <histogram name="Borealis.Disk.VMUsageToTotalUsagePercentageAtStartup" - units="%" expires_after="2024-11-14"> + units="%" expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary> @@ -212,7 +212,7 @@ </histogram> <histogram name="Borealis.Install.Source" enum="BorealisLaunchSource" - expires_after="2024-10-11"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary> @@ -224,7 +224,7 @@ </histogram> <histogram name="Borealis.Launch.Source" enum="BorealisLaunchSource" - expires_after="2024-10-11"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary> @@ -238,7 +238,7 @@ </histogram> <histogram name="Borealis.Shutdown.Attempt" enum="BooleanAttempted" - expires_after="2024-11-14"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary> @@ -259,7 +259,7 @@ </histogram> <histogram name="Borealis.Startup.fsckResult" enum="FsckResult" - expires_after="2024-11-14"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary> @@ -269,7 +269,7 @@ </histogram> <histogram name="Borealis.Startup.fsckTime" units="ms" - expires_after="2024-11-14"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <summary> @@ -322,7 +322,7 @@ </histogram> <histogram name="Borealis.Startup.TimeToFirstWindow" units="ms" - expires_after="2024-10-13"> + expires_after="2024-12-15"> <owner>philpearson@google.com</owner> <owner>src/chrome/browser/ash/borealis/OWNERS</owner> <improvement direction="LOWER_IS_BETTER"/>
diff --git a/tools/metrics/histograms/metadata/browser/histograms.xml b/tools/metrics/histograms/metadata/browser/histograms.xml index 04e49345a..851508c 100644 --- a/tools/metrics/histograms/metadata/browser/histograms.xml +++ b/tools/metrics/histograms/metadata/browser/histograms.xml
@@ -348,7 +348,7 @@ </histogram> <histogram name="Browser.ERP.RecordsPerUploadFromNonChromeosDevice" - units="records" expires_after="2024-11-09"> + units="records" expires_after="2025-11-09"> <owner>jrhilke@chromium.org</owner> <owner>cros-reporting-team@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/chromeos/histograms.xml b/tools/metrics/histograms/metadata/chromeos/histograms.xml index d315138b..3aaf4e48 100644 --- a/tools/metrics/histograms/metadata/chromeos/histograms.xml +++ b/tools/metrics/histograms/metadata/chromeos/histograms.xml
@@ -1155,7 +1155,7 @@ </histogram> <histogram name="ChromeOS.CWP.JankinessTriggerStatus" - enum="ChromeOSJankinessTriggerStatus" expires_after="2024-10-06"> + enum="ChromeOSJankinessTriggerStatus" expires_after="2025-10-06"> <owner>gmx@chromium.org</owner> <owner>cwp-team@google.com</owner> <summary> @@ -1222,8 +1222,7 @@ </histogram> <histogram name="ChromeOS.CWP.UploadPerf" units="reports" - expires_after="2024-10-20"> - <owner>aalexand@google.com</owner> + expires_after="2025-10-20"> <owner>gmx@chromium.org</owner> <owner>cwp-team@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/custom_tabs/enums.xml b/tools/metrics/histograms/metadata/custom_tabs/enums.xml index 356242b..64a3765 100644 --- a/tools/metrics/histograms/metadata/custom_tabs/enums.xml +++ b/tools/metrics/histograms/metadata/custom_tabs/enums.xml
@@ -120,6 +120,13 @@ <int value="57" label="Google bottom bar buttons EXTRA_GOOGLE_BOTTOM_BAR_BUTTONS"/> <int value="58" label="Support multi-network EXTRA_NETWORK"/> + <int value="59" label="Auth Tab EXTRA_LAUNCH_AUTH_TAB"/> + <int value="60" + label="Auth Tab custom redirect scheme EXTRA_REDIRECT_SCHEME"/> + <int value="61" + label="Auth Tab https redirect host EXTRA_HTTPS_REDIRECT_HOST"/> + <int value="62" + label="Auth Tab https redirect path EXTRA_HTTPS_REDIRECT_PATH"/> </enum> <enum name="CustomTabsMinimizedEvents">
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml index 71b6a2f3..2ff9c7a 100644 --- a/tools/metrics/histograms/metadata/others/histograms.xml +++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -72,9 +72,14 @@ summary="Highlights app Google Apps detail page"/> <variant name="GoogleToolsBuiltInPage" summary="Google tools built in detail page"/> + <variant name="HelpMeReadPage" + summary="Highlights app Help me read detail page"/> <variant name="HelpMeWritePage" summary="Highlights app Help me write detail page"/> - <variant name="LauncherSearchPage" summary="Launcher search detail page"/> + <variant name="LauncherSearchPage" + summary="Highlights app Launcher search detail page"/> + <variant name="LiveTranslatePage" + summary="Highlights app Live translate detail page"/> <variant name="LumaFusionPage" summary="Highlights app LumaFusion detail page"/> <variant name="MessagingPage" summary="Highlights app Messaging detail page"/>
diff --git a/tools/metrics/histograms/metadata/page/histograms.xml b/tools/metrics/histograms/metadata/page/histograms.xml index 9cfc253..c70215aa 100644 --- a/tools/metrics/histograms/metadata/page/histograms.xml +++ b/tools/metrics/histograms/metadata/page/histograms.xml
@@ -547,7 +547,7 @@ </histogram> <histogram name="PageLoad.Clients.Ads.AllPages.NonAdNetworkBytes" units="KB" - expires_after="2024-10-20"> + expires_after="2025-10-20"> <owner>alexmt@chromium.org</owner> <owner>johnidel@chromium.org</owner> <owner>chrome-ads-histograms@google.com</owner> @@ -561,7 +561,7 @@ </histogram> <histogram name="PageLoad.Clients.Ads.AllPages.PercentNetworkBytesAds" - units="%" expires_after="2024-10-20"> + units="%" expires_after="2025-10-20"> <owner>alexmt@chromium.org</owner> <owner>johnidel@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/safe_browsing/enums.xml b/tools/metrics/histograms/metadata/safe_browsing/enums.xml index 6fd98ca..a56bad4 100644 --- a/tools/metrics/histograms/metadata/safe_browsing/enums.xml +++ b/tools/metrics/histograms/metadata/safe_browsing/enums.xml
@@ -663,6 +663,7 @@ <int value="7" label="SITE_ENGAGEMENT_SCORE_EXISTS"/> <int value="8" label="NO_VISITS_TO_ANY_SITE_MORE_THAN_A_DAY_AGO"/> <int value="9" label="GLOBAL_ALLOWLIST_NOT_READY"/> + <int value="10" label="FAMILIAR_LIKELY_PREVIOUSLY_UNFAMILIAR"/> </enum> <enum name="SiteFamiliarityHistoryHeuristicName"> @@ -670,6 +671,7 @@ <int value="1" label="VISITED_MORE_THAN_A_DAY_AGO"/> <int value="2" label="VISITED_MORE_THAN_FOUR_HOURS_AGO"/> <int value="3" label="NO_VISITS_TO_ANY_SITE_MORE_THAN_A_DAY_AGO"/> + <int value="4" label="VISITED_MORE_THAN_A_DAY_AGO_PREVIOUSLY_UNFAMILIAR"/> </enum> <enum name="SuspiciousSiteTriggerEvent">
diff --git a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml index f7ad7921..1b5ea5f 100644 --- a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml +++ b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml
@@ -219,17 +219,6 @@ </summary> </histogram> -<histogram name="SafeBrowsing.AndroidTelemetry.DownloadUrlChainThreatType" - enum="SBThreatType" expires_after="2025-03-23"> - <owner>drubery@chromium.org</owner> - <owner>chrome-counter-abuse-alerts@google.com</owner> - <summary> - Records the most severe threat type in the url chain for each download on - Android. We only check against the malware and unwanted software lists. This - is logged once per download for users with Safe Browsing enabled. - </summary> -</histogram> - <histogram name="SafeBrowsing.AsyncCheck.CommittedNavigationIdsSize" units="count" expires_after="2025-02-10"> <owner>xinghuilu@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/sb_client/histograms.xml b/tools/metrics/histograms/metadata/sb_client/histograms.xml index 1fe161a3..be477abd 100644 --- a/tools/metrics/histograms/metadata/sb_client/histograms.xml +++ b/tools/metrics/histograms/metadata/sb_client/histograms.xml
@@ -680,7 +680,7 @@ </histogram> <histogram name="SBClientPhishing.ImageEmbedder.Event" - enum="SBPhishingClassifierEvent" expires_after="2024-11-12"> + enum="SBPhishingClassifierEvent" expires_after="2025-11-12"> <owner>andysjlim@chromium.org</owner> <owner>chrome-counter-abuse-alerts@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/signin/enums.xml b/tools/metrics/histograms/metadata/signin/enums.xml index 62ce3e85..7f355dcc 100644 --- a/tools/metrics/histograms/metadata/signin/enums.xml +++ b/tools/metrics/histograms/metadata/signin/enums.xml
@@ -981,6 +981,9 @@ <int value="22" label="DiceResponseHandler::Signin from sign in promo after password save (obsolete)"/> + <int value="23" + label="DiceWebSigninInterceptor::OnEnterpriseProfileCreationResult from + enterprise forced profile creation dialog"/> </enum> <enum name="SyncButtonClicked">
diff --git a/tools/perf/core/bot_platforms.py b/tools/perf/core/bot_platforms.py index 55b1d94..7d83477 100644 --- a/tools/perf/core/bot_platforms.py +++ b/tools/perf/core/bot_platforms.py
@@ -851,7 +851,7 @@ pinpoint_only=True) ANDROID_PIXEL4_WEBVIEW = PerfPlatform( 'android-pixel4_webview-perf', 'Android R', - _ANDROID_PIXEL4_WEBVIEW_BENCHMARK_CONFIGS, 40, 'android') + _ANDROID_PIXEL4_WEBVIEW_BENCHMARK_CONFIGS, 23, 'android') # TODO(crbug.com/307958700): Switch shard number back to a higher number around # 28 once more devices are procured. Temporarily use # 15 to avoid high contention in the pixel6 pool.
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index eed86a5..c1652b1a 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -6,7 +6,7 @@ }, "win": { "hash": "066fdeeadeb913dc99cd6cb19916237ccf804d49", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/ca467edc9dd2d58b6cfdf616cd69f0d457c15096/trace_processor_shell.exe" + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/077bb360edecb33551e88c8097035e4b8cef245b/trace_processor_shell.exe" }, "linux_arm": { "hash": "bb963e5488d9a76861165256126830c7ae523733", @@ -22,7 +22,7 @@ }, "linux": { "hash": "a970025e2d93c368de68982b257f43c28cd3d4c5", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/ca467edc9dd2d58b6cfdf616cd69f0d457c15096/trace_processor_shell" + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/c6494911fdbe08d2df0057eb94034dca930e3d68/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/tools/perf/core/shard_maps/android-pixel4_webview-perf_map.json b/tools/perf/core/shard_maps/android-pixel4_webview-perf_map.json index 06a17fd..6dc33b57 100644 --- a/tools/perf/core/shard_maps/android-pixel4_webview-perf_map.json +++ b/tools/perf/core/shard_maps/android-pixel4_webview-perf_map.json
@@ -5,7 +5,10 @@ "abridged": false }, "blink_perf.accessibility": { - "end": 9, + "abridged": false + }, + "blink_perf.bindings": { + "end": 21, "abridged": false }, "speedometer2": { @@ -18,12 +21,12 @@ }, "1": { "benchmarks": { - "blink_perf.accessibility": { - "begin": 9, + "blink_perf.bindings": { + "begin": 21, "abridged": false }, - "blink_perf.bindings": { - "end": 8, + "blink_perf.css": { + "end": 69, "abridged": false }, "speedometer2": { @@ -36,12 +39,21 @@ }, "2": { "benchmarks": { - "blink_perf.bindings": { - "begin": 8, + "blink_perf.css": { + "begin": 69, "abridged": false }, - "blink_perf.css": { - "end": 4, + "blink_perf.dom": { + "abridged": false + }, + "blink_perf.events": { + "abridged": false + }, + "blink_perf.image_decoder": { + "abridged": false + }, + "blink_perf.layout": { + "end": 14, "abridged": false }, "speedometer2": { @@ -54,9 +66,9 @@ }, "3": { "benchmarks": { - "blink_perf.css": { - "begin": 4, - "end": 45, + "blink_perf.layout": { + "begin": 14, + "end": 99, "abridged": false }, "speedometer2": { @@ -69,12 +81,21 @@ }, "4": { "benchmarks": { - "blink_perf.css": { - "begin": 45, + "blink_perf.layout": { + "begin": 99, "abridged": false }, - "blink_perf.dom": { - "end": 3, + "blink_perf.owp_storage": { + "abridged": false + }, + "blink_perf.parser": { + "abridged": false + }, + "blink_perf.shadow_dom": { + "abridged": false + }, + "blink_perf.webaudio": { + "end": 2, "abridged": false }, "speedometer2": { @@ -87,134 +108,8 @@ }, "5": { "benchmarks": { - "blink_perf.dom": { - "begin": 3, - "abridged": false - }, - "blink_perf.events": { - "end": 5, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "6": { - "benchmarks": { - "blink_perf.events": { - "begin": 5, - "abridged": false - }, - "blink_perf.image_decoder": { - "abridged": false - }, - "blink_perf.layout": { - "end": 23, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "7": { - "benchmarks": { - "blink_perf.layout": { - "begin": 23, - "end": 57, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "8": { - "benchmarks": { - "blink_perf.layout": { - "begin": 57, - "end": 95, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "9": { - "benchmarks": { - "blink_perf.layout": { - "begin": 95, - "abridged": false - }, - "blink_perf.owp_storage": { - "abridged": false - }, - "blink_perf.parser": { - "end": 7, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "10": { - "benchmarks": { - "blink_perf.parser": { - "begin": 7, - "abridged": false - }, - "blink_perf.shadow_dom": { - "end": 14, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "11": { - "benchmarks": { - "blink_perf.shadow_dom": { - "begin": 14, - "abridged": false - }, "blink_perf.webaudio": { - "end": 4, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "12": { - "benchmarks": { - "blink_perf.webaudio": { - "begin": 4, + "begin": 2, "abridged": false }, "blink_perf.webcodecs": { @@ -239,7 +134,110 @@ "abridged": false }, "rasterize_and_record_micro.top_25": { - "end": 4, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "6": { + "benchmarks": { + "rendering.mobile": { + "end": 48, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "7": { + "benchmarks": { + "rendering.mobile": { + "begin": 48, + "end": 103, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "8": { + "benchmarks": { + "rendering.mobile": { + "begin": 103, + "end": 157, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "9": { + "benchmarks": { + "rendering.mobile": { + "begin": 157, + "end": 200, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "10": { + "benchmarks": { + "rendering.mobile": { + "begin": 200, + "end": 246, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "11": { + "benchmarks": { + "rendering.mobile": { + "begin": 246, + "end": 310, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "12": { + "benchmarks": { + "rendering.mobile": { + "begin": 310, + "end": 350, "abridged": false }, "speedometer2": { @@ -252,12 +250,9 @@ }, "13": { "benchmarks": { - "rasterize_and_record_micro.top_25": { - "begin": 4, - "abridged": false - }, "rendering.mobile": { - "end": 8, + "begin": 350, + "end": 396, "abridged": false }, "speedometer2": { @@ -271,160 +266,7 @@ "14": { "benchmarks": { "rendering.mobile": { - "begin": 8, - "end": 32, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "15": { - "benchmarks": { - "rendering.mobile": { - "begin": 32, - "end": 55, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "16": { - "benchmarks": { - "rendering.mobile": { - "begin": 55, - "end": 82, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "17": { - "benchmarks": { - "rendering.mobile": { - "begin": 82, - "end": 117, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "18": { - "benchmarks": { - "rendering.mobile": { - "begin": 117, - "end": 144, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "19": { - "benchmarks": { - "rendering.mobile": { - "begin": 144, - "end": 166, - "abridged": false - }, - "speedometer2": { - "abridged": false - }, - "speedometer3": { - "abridged": false - } - } - }, - "20": { - "benchmarks": { - "rendering.mobile": { - "begin": 166, - "end": 203, - "abridged": false - } - } - }, - "21": { - "benchmarks": { - "rendering.mobile": { - "begin": 203, - "end": 239, - "abridged": false - } - } - }, - "22": { - "benchmarks": { - "rendering.mobile": { - "begin": 239, - "end": 266, - "abridged": false - } - } - }, - "23": { - "benchmarks": { - "rendering.mobile": { - "begin": 266, - "end": 312, - "abridged": false - } - } - }, - "24": { - "benchmarks": { - "rendering.mobile": { - "begin": 312, - "end": 343, - "abridged": false - } - } - }, - "25": { - "benchmarks": { - "rendering.mobile": { - "begin": 343, - "end": 379, - "abridged": false - } - } - }, - "26": { - "benchmarks": { - "rendering.mobile": { - "begin": 379, - "end": 414, - "abridged": false - } - } - }, - "27": { - "benchmarks": { - "rendering.mobile": { - "begin": 414, + "begin": 396, "abridged": false }, "rendering.mobile.notracing": { @@ -444,11 +286,7 @@ }, "speedometer3": { "abridged": false - } - } - }, - "28": { - "benchmarks": { + }, "speedometer3-future": { "abridged": false }, @@ -456,109 +294,112 @@ "abridged": false }, "system_health.common_mobile": { - "end": 21, - "abridged": false - } - } - }, - "29": { - "benchmarks": { - "system_health.common_mobile": { - "begin": 21, - "end": 58, - "abridged": false - } - } - }, - "30": { - "benchmarks": { - "system_health.common_mobile": { - "begin": 58, - "abridged": false - }, - "system_health.memory_mobile": { "end": 4, "abridged": false } } }, - "31": { + "15": { "benchmarks": { - "system_health.memory_mobile": { + "system_health.common_mobile": { "begin": 4, - "end": 18, - "abridged": false - } - } - }, - "32": { - "benchmarks": { - "system_health.memory_mobile": { - "begin": 18, - "end": 25, - "abridged": false - } - } - }, - "33": { - "benchmarks": { - "system_health.memory_mobile": { - "begin": 25, - "end": 36, - "abridged": false - } - } - }, - "34": { - "benchmarks": { - "system_health.memory_mobile": { - "begin": 36, - "end": 46, - "abridged": false - } - } - }, - "35": { - "benchmarks": { - "system_health.memory_mobile": { - "begin": 46, - "end": 56, - "abridged": false - } - } - }, - "36": { - "benchmarks": { - "system_health.memory_mobile": { - "begin": 56, - "end": 69, - "abridged": false - } - } - }, - "37": { - "benchmarks": { - "system_health.memory_mobile": { - "begin": 69, - "abridged": false - } - } - }, - "38": { - "benchmarks": { - "system_health.webview_startup": { + "end": 49, "abridged": false }, - "v8.browsing_mobile": { - "end": 5, + "speedometer2": { + "abridged": false + }, + "speedometer3": { "abridged": false } } }, - "39": { + "16": { + "benchmarks": { + "system_health.common_mobile": { + "begin": 49, + "abridged": false + }, + "system_health.memory_mobile": { + "end": 5, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "17": { + "benchmarks": { + "system_health.memory_mobile": { + "begin": 5, + "end": 21, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "18": { + "benchmarks": { + "system_health.memory_mobile": { + "begin": 21, + "end": 31, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "19": { + "benchmarks": { + "system_health.memory_mobile": { + "begin": 31, + "end": 48, + "abridged": false + }, + "speedometer2": { + "abridged": false + }, + "speedometer3": { + "abridged": false + } + } + }, + "20": { + "benchmarks": { + "system_health.memory_mobile": { + "begin": 48, + "end": 66, + "abridged": false + } + } + }, + "21": { + "benchmarks": { + "system_health.memory_mobile": { + "begin": 66, + "abridged": false + }, + "system_health.webview_startup": { + "abridged": false + } + } + }, + "22": { "benchmarks": { "v8.browsing_mobile": { - "begin": 5, "abridged": false }, "wasmpspdfkit": { @@ -571,49 +412,32 @@ }, "extra_infos": { "num_stories": 1131, - "predicted_min_shard_time": 786.0, - "predicted_min_shard_index": 37, - "predicted_max_shard_time": 1393.0, - "predicted_max_shard_index": 39, - "shard #0": 995.0, - "shard #1": 1015.0, - "shard #2": 1022.0, - "shard #3": 1003.0, - "shard #4": 1004.0, - "shard #5": 1025.0, - "shard #6": 1019.0, - "shard #7": 1014.0, - "shard #8": 1008.0, - "shard #9": 1021.0, - "shard #10": 1018.0, - "shard #11": 1029.0, - "shard #12": 1019.0, - "shard #13": 999.0, - "shard #14": 1024.0, - "shard #15": 1003.0, - "shard #16": 1009.0, - "shard #17": 1011.0, - "shard #18": 1012.0, - "shard #19": 1032.0, - "shard #20": 1034.0, - "shard #21": 1043.0, - "shard #22": 1024.0, - "shard #23": 1010.0, - "shard #24": 1031.0, - "shard #25": 1018.0, - "shard #26": 1002.0, - "shard #27": 974.0, - "shard #28": 1010.0, - "shard #29": 1024.0, - "shard #30": 1022.0, - "shard #31": 924.0, - "shard #32": 1032.0, - "shard #33": 1050.0, - "shard #34": 993.0, - "shard #35": 1035.0, - "shard #36": 978.0, - "shard #37": 786.0, - "shard #38": 1194.0, - "shard #39": 1393.0 + "predicted_min_shard_time": 1635.0, + "predicted_min_shard_index": 20, + "predicted_max_shard_time": 1802.0, + "predicted_max_shard_index": 21, + "shard #0": 1691.0, + "shard #1": 1698.0, + "shard #2": 1701.0, + "shard #3": 1691.0, + "shard #4": 1678.0, + "shard #5": 1690.0, + "shard #6": 1713.0, + "shard #7": 1688.0, + "shard #8": 1692.0, + "shard #9": 1713.0, + "shard #10": 1691.0, + "shard #11": 1694.0, + "shard #12": 1715.0, + "shard #13": 1696.0, + "shard #14": 1683.0, + "shard #15": 1697.0, + "shard #16": 1663.0, + "shard #17": 1686.0, + "shard #18": 1677.0, + "shard #19": 1743.0, + "shard #20": 1635.0, + "shard #21": 1802.0, + "shard #22": 1716.0 } }
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel4_webview-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel4_webview-perf_timing.json index f135ee8..477abe7 100644 --- a/tools/perf/core/shard_maps/timing_data/android-pixel4_webview-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android-pixel4_webview-perf_timing.json
@@ -1,58 +1,58 @@ [ { - "duration": "15.0", + "duration": "18.0", "name": "ad_frames.fencedframe/fencedframe: https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B8455269.126839257;sz=970x250" }, { - "duration": "15.0", + "duration": "17.0", "name": "ad_frames.fencedframe/fencedframe: https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B9340305.127461685;sz=970x250" }, { - "duration": "20.0", + "duration": "22.0", "name": "ad_frames.fencedframe/fencedframe: https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B9340305.127562781;sz=970x250" }, { - "duration": "16.0", + "duration": "18.0", "name": "ad_frames.fencedframe/fencedframe: https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B9340305.128470354;sz=300x600" }, { - "duration": "15.0", + "duration": "18.0", "name": "ad_frames.fencedframe/fencedframe: https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B9340305.128710365;sz=970x250" }, { - "duration": "15.0", + "duration": "17.0", "name": "ad_frames.fencedframe/fencedframe: https://ad.doubleclick.net/ddm/adi/N378.3159.GOOGLE3/B9340305.138620671;sz=970x250" }, { - "duration": "32.0", + "duration": "35.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "30.0", + "duration": "31.0", "name": "blink_perf.accessibility/focus-links.html" }, { - "duration": "29.0", + "duration": "30.0", "name": "blink_perf.accessibility/insert-block-child-after-many-inline-children.html" }, { - "duration": "29.0", + "duration": "28.0", "name": "blink_perf.accessibility/line-breaks.html" }, { - "duration": "30.0", + "duration": "29.0", "name": "blink_perf.accessibility/location-changes-css-animation.html" }, { - "duration": "30.0", + "duration": "29.0", "name": "blink_perf.accessibility/location-changes-js-animation.html" }, { - "duration": "155.0", + "duration": "140.0", "name": "blink_perf.accessibility/location-changes-scrolling-content-visibility-auto.html" }, { - "duration": "156.0", + "duration": "139.0", "name": "blink_perf.accessibility/location-changes-scrolling.html" }, { @@ -60,7 +60,7 @@ "name": "blink_perf.accessibility/many-nodes-toggle-aria-hidden.html" }, { - "duration": "41.0", + "duration": "43.0", "name": "blink_perf.accessibility/many-nodes-toggle-content-visibility-auto.html" }, { @@ -68,7 +68,7 @@ "name": "blink_perf.accessibility/many-nodes-toggle-content-visibility-hidden.html" }, { - "duration": "34.0", + "duration": "35.0", "name": "blink_perf.accessibility/many-nodes-toggle-display-none-in-focusable.html" }, { @@ -76,7 +76,7 @@ "name": "blink_perf.accessibility/many-nodes-toggle-display-none.html" }, { - "duration": "33.0", + "duration": "34.0", "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { @@ -84,7 +84,7 @@ "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" }, { - "duration": "33.0", + "duration": "34.0", "name": "blink_perf.accessibility/many-text-changes-deep-inline-subtree.html" }, { @@ -96,23 +96,23 @@ "name": "blink_perf.accessibility/slot-updates.html" }, { - "duration": "33.0", + "duration": "34.0", "name": "blink_perf.accessibility/text-changes-ignored-in-focusable.html" }, { - "duration": "33.0", + "duration": "34.0", "name": "blink_perf.accessibility/text-changes-unignored-in-focusable.html" }, { - "duration": "33.0", + "duration": "34.0", "name": "blink_perf.accessibility/textarea-append.html" }, { - "duration": "33.0", + "duration": "34.0", "name": "blink_perf.accessibility/unassignable-slots-deep-tree.html" }, { - "duration": "33.0", + "duration": "34.0", "name": "blink_perf.accessibility/unassignable-slots-focusable-containers.html" }, { @@ -120,619 +120,619 @@ "name": "blink_perf.accessibility/unassignable-slots-wide-tree.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "blink_perf.bindings/append-child.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.bindings/create-element.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.bindings/document-implementation.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.bindings/dom-attribute-on-prototoype.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.bindings/first-child.html" }, { - "duration": "21.0", + "duration": "18.0", "name": "blink_perf.bindings/gc-forest.html" }, { - "duration": "26.0", + "duration": "22.0", "name": "blink_perf.bindings/gc-mini-tree.html" }, { - "duration": "46.0", + "duration": "40.0", "name": "blink_perf.bindings/gc-tree.html" }, { - "duration": "30.0", + "duration": "21.0", "name": "blink_perf.bindings/get-attribute-rare.html" }, { - "duration": "23.0", + "duration": "14.0", "name": "blink_perf.bindings/get-attribute.html" }, { - "duration": "22.0", + "duration": "14.0", "name": "blink_perf.bindings/get-element-by-id.html" }, { - "duration": "20.0", + "duration": "15.0", "name": "blink_perf.bindings/get-elements-by-tag-name.html" }, { - "duration": "21.0", + "duration": "14.0", "name": "blink_perf.bindings/id-getter.html" }, { - "duration": "20.0", + "duration": "14.0", "name": "blink_perf.bindings/id-setter.html" }, { - "duration": "20.0", + "duration": "15.0", "name": "blink_perf.bindings/indexed-getter.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "blink_perf.bindings/insert-before.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "blink_perf.bindings/named-property-enumerator.html" }, { - "duration": "28.0", + "duration": "18.0", "name": "blink_perf.bindings/node-list-access.html" }, { - "duration": "20.0", + "duration": "15.0", "name": "blink_perf.bindings/node-type.html" }, { - "duration": "15.0", + "duration": "9.0", "name": "blink_perf.bindings/post-message.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "blink_perf.bindings/sequence-conversion-array.html" }, { - "duration": "21.0", + "duration": "16.0", "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html" }, { - "duration": "15.0", + "duration": "9.0", "name": "blink_perf.bindings/serialize-array.html" }, { - "duration": "15.0", + "duration": "9.0", "name": "blink_perf.bindings/serialize-long-string.html" }, { - "duration": "17.0", + "duration": "11.0", "name": "blink_perf.bindings/serialize-map.html" }, { - "duration": "15.0", + "duration": "9.0", "name": "blink_perf.bindings/serialize-nested-array.html" }, { - "duration": "21.0", + "duration": "14.0", "name": "blink_perf.bindings/set-attribute-rare.html" }, { - "duration": "21.0", + "duration": "14.0", "name": "blink_perf.bindings/set-attribute.html" }, { - "duration": "22.0", + "duration": "14.0", "name": "blink_perf.bindings/structured-clone-json-deserialize.html" }, { - "duration": "22.0", + "duration": "14.0", "name": "blink_perf.bindings/structured-clone-json-serialize.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.bindings/structured-clone-long-string-serialize.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "blink_perf.bindings/typed-array-construct-from-array.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "blink_perf.bindings/typed-array-construct-from-same-type.html" }, { - "duration": "21.0", + "duration": "14.0", "name": "blink_perf.bindings/typed-array-construct-from-typed.html" }, { - "duration": "20.0", + "duration": "14.0", "name": "blink_perf.bindings/typed-array-set-from-typed.html" }, { - "duration": "21.0", + "duration": "14.0", "name": "blink_perf.bindings/undefined-first-child.html" }, { - "duration": "20.0", + "duration": "14.0", "name": "blink_perf.bindings/undefined-get-element-by-id.html" }, { - "duration": "20.0", + "duration": "14.0", "name": "blink_perf.bindings/undefined-id-getter.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.bindings/wasm_webgl_no_js.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.bindings/wasm_webgl_through_js.html" }, { - "duration": "15.0", + "duration": "9.0", "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" }, { - "duration": "30.0", + "duration": "19.0", "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" }, { - "duration": "31.0", + "duration": "19.0", "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" }, { - "duration": "32.0", + "duration": "20.0", "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" }, { - "duration": "21.0", + "duration": "13.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html" }, { - "duration": "19.0", + "duration": "11.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html" }, { - "duration": "27.0", + "duration": "18.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html" }, { - "duration": "29.0", + "duration": "17.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html" }, { - "duration": "31.0", + "duration": "18.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html" }, { - "duration": "30.0", + "duration": "15.0", "name": "blink_perf.bindings/worker-transferable-from-worker.html" }, { - "duration": "30.0", + "duration": "15.0", "name": "blink_perf.bindings/worker-transferable-roundtrip.html" }, { - "duration": "31.0", + "duration": "15.0", "name": "blink_perf.bindings/worker-transferable-to-worker.html" }, { - "duration": "33.0", + "duration": "16.0", "name": "blink_perf.css/AtScope.html" }, { - "duration": "25.0", + "duration": "10.0", "name": "blink_perf.css/AtScopeAncestor.html" }, { - "duration": "23.0", + "duration": "9.0", "name": "blink_perf.css/AtScopeInsertion.html" }, { - "duration": "35.0", + "duration": "21.0", "name": "blink_perf.css/AttributeDescendantSelector.html" }, { - "duration": "22.0", + "duration": "19.0", "name": "blink_perf.css/BigContainerQuery.html" }, { - "duration": "28.0", + "duration": "23.0", "name": "blink_perf.css/CSSCountersCreate.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/CSSLogicalDirection.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.css/CSSPropertySetterGetter.html" }, { - "duration": "20.0", + "duration": "17.0", "name": "blink_perf.css/CSSPropertySetterGetterMethods.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.css/CSSPropertyUpdateValue.html" }, { - "duration": "45.0", + "duration": "38.0", "name": "blink_perf.css/CSSQuotesCreate.html" }, { - "duration": "18.0", + "duration": "14.0", "name": "blink_perf.css/ChangeStyleCSSVariableRecalc.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleChildClassSelector.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleChildElementSelectors.html" }, { - "duration": "19.0", + "duration": "16.0", "name": "blink_perf.css/ChangeStyleCustomPropertyDeclaration.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleElementSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html" }, { - "duration": "18.0", + "duration": "15.0", "name": "blink_perf.css/ChangeStyleNewRuleInExistingStylesheet.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html" }, { - "duration": "17.0", + "duration": "13.0", "name": "blink_perf.css/ChangeStyleShallowTree.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleSingleClassSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleUniversalSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleUnrelatedAttributeSelector.html" }, { - "duration": "27.0", + "duration": "24.0", "name": "blink_perf.css/ClassDescendantSelector.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.css/ClassInvalidation.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.css/CustomPropertiesCascade.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.css/CustomPropertiesDependency.html" }, { - "duration": "17.0", + "duration": "13.0", "name": "blink_perf.css/CustomPropertiesIdenticalSets.html" }, { - "duration": "17.0", + "duration": "13.0", "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html" }, { - "duration": "17.0", + "duration": "12.0", "name": "blink_perf.css/CustomPropertiesPendingSubstitution.html" }, { - "duration": "18.0", + "duration": "12.0", "name": "blink_perf.css/CustomPropertiesRootInheritance.html" }, { - "duration": "18.0", + "duration": "12.0", "name": "blink_perf.css/CustomPropertiesVarAlias.html" }, { - "duration": "18.0", + "duration": "12.0", "name": "blink_perf.css/ExplicitInheritance.html" }, { - "duration": "26.0", + "duration": "20.0", "name": "blink_perf.css/FocusUpdate.html" }, { - "duration": "24.0", + "duration": "18.0", "name": "blink_perf.css/HasDescendantInAncestorPositionInvalidation.html" }, { - "duration": "24.0", + "duration": "31.0", "name": "blink_perf.css/HasDescendantInvalidation.html" }, { - "duration": "17.0", + "duration": "20.0", "name": "blink_perf.css/HasDescendantInvalidationAllSubjects.html" }, { - "duration": "18.0", + "duration": "21.0", "name": "blink_perf.css/HasDescendantInvalidationMultipleSubjects.html" }, { - "duration": "18.0", + "duration": "21.0", "name": "blink_perf.css/HasDescendantInvalidationWith1NonMatchingHasRule.html" }, { - "duration": "18.0", + "duration": "20.0", "name": "blink_perf.css/HasDescendantInvalidationWithMultipleNonMatchingHasRules.html" }, { - "duration": "18.0", + "duration": "21.0", "name": "blink_perf.css/HasDescendantInvalidationWithoutNonMatchingHasRule.html" }, { - "duration": "17.0", + "duration": "19.0", "name": "blink_perf.css/HasInvalidationFiltering.html" }, { - "duration": "19.0", + "duration": "22.0", "name": "blink_perf.css/HasSiblingDescendantInvalidation.html" }, { - "duration": "16.0", + "duration": "19.0", "name": "blink_perf.css/HasSiblingDescendantInvalidationAllSubjects.html" }, { - "duration": "18.0", + "duration": "21.0", "name": "blink_perf.css/HasSiblingInvalidation.html" }, { - "duration": "16.0", + "duration": "19.0", "name": "blink_perf.css/HasSiblingInvalidationAllSubjects.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.css/HighlightInheritanceRecalc.html" }, { - "duration": "14.0", + "duration": "17.0", "name": "blink_perf.css/HighlightInheritanceSelected.html" }, { - "duration": "13.0", + "duration": "16.0", "name": "blink_perf.css/ImplicitAtScope.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.css/ImplicitAtScopeInsertion.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.css/ImplicitAtScopeMatching.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.css/ImplicitScopeShared.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.css/LoadBootstrapBlog.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.css/LoadMaterializeStarterPage.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.css/LoadSemanticPageExample.html" }, { - "duration": "23.0", + "duration": "31.0", "name": "blink_perf.css/ModifySelectorText.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.css/NamedContainerLookup.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.css/NestingIdentInvalidValue.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.css/NestingIdentKnownProperty.html" }, { - "duration": "11.0", + "duration": "15.0", "name": "blink_perf.css/NestingIdentLeadingBraces.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.css/NestingIdentNonProperty.html" }, { - "duration": "16.0", + "duration": "20.0", "name": "blink_perf.css/PseudoClassSelectors.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.css/ScrollbarPseudoSelector.html" }, { - "duration": "47.0", + "duration": "51.0", "name": "blink_perf.css/SelectorCountScaling.html" }, { - "duration": "21.0", + "duration": "28.0", "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" }, { - "duration": "18.0", + "duration": "19.0", "name": "blink_perf.dom/custom-element-default-style.html" }, { - "duration": "19.0", + "duration": "23.0", "name": "blink_perf.dom/deep-tree-clonenode.html" }, { - "duration": "67.0", + "duration": "65.0", "name": "blink_perf.dom/dom-parts-api-flat-append.html" }, { - "duration": "60.0", + "duration": "56.0", "name": "blink_perf.dom/dom-parts-api-flat-clone.html" }, { - "duration": "59.0", + "duration": "56.0", "name": "blink_perf.dom/dom-parts-api-flat-parts.html" }, { - "duration": "60.0", + "duration": "56.0", "name": "blink_perf.dom/dom-parts-api-manual-append.html" }, { - "duration": "61.0", + "duration": "57.0", "name": "blink_perf.dom/dom-parts-api-manual-clone.html" }, { - "duration": "63.0", + "duration": "55.0", "name": "blink_perf.dom/dom-parts-api-manual-parts.html" }, { - "duration": "61.0", + "duration": "57.0", "name": "blink_perf.dom/dom-parts-api-nested-append.html" }, { - "duration": "60.0", + "duration": "57.0", "name": "blink_perf.dom/dom-parts-api-nested-clone.html" }, { - "duration": "60.0", + "duration": "57.0", "name": "blink_perf.dom/dom-parts-api-nested-parts.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.dom/insert-text-with-dir-auto.html" }, { - "duration": "31.0", + "duration": "24.0", "name": "blink_perf.dom/long-sibling-list.html" }, { - "duration": "17.0", + "duration": "13.0", "name": "blink_perf.dom/modify-element-classname.html" }, { - "duration": "17.0", + "duration": "12.0", "name": "blink_perf.dom/modify-element-id.html" }, { - "duration": "17.0", + "duration": "13.0", "name": "blink_perf.dom/modify-element-title.html" }, { - "duration": "21.0", + "duration": "17.0", "name": "blink_perf.dom/replace-text-with-dir-auto.html" }, { - "duration": "21.0", + "duration": "17.0", "name": "blink_perf.dom/select-multiple-add.html" }, { - "duration": "21.0", + "duration": "18.0", "name": "blink_perf.dom/select-single-add.html" }, { - "duration": "24.0", + "duration": "19.0", "name": "blink_perf.dom/select-single-remove.html" }, { - "duration": "27.0", + "duration": "26.0", "name": "blink_perf.events/EventsDispatching.html" }, { - "duration": "25.0", + "duration": "20.0", "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" }, { - "duration": "43.0", + "duration": "40.0", "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { - "duration": "44.0", + "duration": "30.0", "name": "blink_perf.events/hit-test-lots-of-layers.html" }, { - "duration": "27.0", + "duration": "17.0", "name": "blink_perf.events/is-input-pending-default-events.html" }, { - "duration": "30.0", + "duration": "29.0", "name": "blink_perf.events/is-input-pending-include-continuous-events.html" }, { @@ -740,11 +740,11 @@ "name": "blink_perf.image_decoder/decode-gif.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v2.html" }, { @@ -752,103 +752,103 @@ "name": "blink_perf.image_decoder/decode-jpeg-h2v1.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.image_decoder/decode-jpeg-h2v2.html" }, { - "duration": "26.0", + "duration": "24.0", "name": "blink_perf.image_decoder/decode-lossless-webp.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.image_decoder/decode-lossy-webp.html" }, { - "duration": "22.0", + "duration": "20.0", "name": "blink_perf.image_decoder/decode-png-palette-opaque.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.image_decoder/decode-png-palette.html" }, { - "duration": "25.0", + "duration": "22.0", "name": "blink_perf.image_decoder/decode-png.html" }, { - "duration": "25.0", + "duration": "27.0", "name": "blink_perf.layout/ArabicLineLayout.html" }, { - "duration": "18.0", + "duration": "16.0", "name": "blink_perf.layout/CJK-article.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.layout/Shapes/MultipleShapes.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/SimpleTextPathLineLayout.html" }, { - "duration": "33.0", + "duration": "28.0", "name": "blink_perf.layout/abspos.html" }, { - "duration": "22.0", + "duration": "20.0", "name": "blink_perf.layout/add-remove-inline-floats.html" }, { - "duration": "18.0", + "duration": "16.0", "name": "blink_perf.layout/animate-abspos-deep.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/attach-inlines-2.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/attach-inlines.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/auto-grid-lots-of-data.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/auto-grid-lots-of-spanning-data.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/chapter-reflow-once-random.html" }, { - "duration": "22.0", + "duration": "19.0", "name": "blink_perf.layout/chapter-reflow-once.html" }, { - "duration": "22.0", + "duration": "20.0", "name": "blink_perf.layout/chapter-reflow-thrice.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.layout/chapter-reflow-twice.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.layout/chapter-reflow.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.layout/character_fallback.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.layout/contain-content-style-change.html" }, { - "duration": "24.0", + "duration": "23.0", "name": "blink_perf.layout/css-contain-change-text-different-subtree-root.html" }, { @@ -856,15 +856,15 @@ "name": "blink_perf.layout/css-contain-change-text-without-subtree-root.html" }, { - "duration": "24.0", + "duration": "23.0", "name": "blink_perf.layout/css-contain-change-text.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.layout/culled-inline-bounding-rects.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.layout/culled-inline-hittest.html" }, { @@ -872,7 +872,7 @@ "name": "blink_perf.layout/deeply-nested-grid.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/editing_append.html" }, { @@ -884,7 +884,7 @@ "name": "blink_perf.layout/editing_delete.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/editing_insert.html" }, { @@ -896,7 +896,7 @@ "name": "blink_perf.layout/fit-content-change-available-size-blocks.html" }, { - "duration": "22.0", + "duration": "19.0", "name": "blink_perf.layout/fit-content-change-available-size-text.html" }, { @@ -912,119 +912,119 @@ "name": "blink_perf.layout/flexbox-column-nowrap.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-column-wrap.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-deeply-nested-with-ortho-flow.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-hittest.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-input.html" }, { - "duration": "22.0", + "duration": "20.0", "name": "blink_perf.layout/flexbox-lots-of-data.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-nested-rows-and-columns-auto-overflow.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-row-nowrap.html" }, { - "duration": "23.0", + "duration": "21.0", "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/flexbox-row-stretch-height-indefinite.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-row-wrap.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-with-stretch-layout.html" }, { - "duration": "26.0", + "duration": "24.0", "name": "blink_perf.layout/flexbox_with_list_item.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.layout/floats_100_100.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.layout/floats_100_100_nested.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.layout/floats_10_1000.html" }, { - "duration": "18.0", + "duration": "17.0", "name": "blink_perf.layout/floats_20_100.html" }, { - "duration": "19.0", + "duration": "16.0", "name": "blink_perf.layout/floats_20_100_nested.html" }, { - "duration": "20.0", + "duration": "17.0", "name": "blink_perf.layout/floats_2_100.html" }, { - "duration": "18.0", + "duration": "15.0", "name": "blink_perf.layout/floats_2_100_nested.html" }, { - "duration": "19.0", + "duration": "15.0", "name": "blink_perf.layout/floats_50_100.html" }, { - "duration": "20.0", + "duration": "15.0", "name": "blink_perf.layout/floats_50_100_nested.html" }, { - "duration": "24.0", + "duration": "19.0", "name": "blink_perf.layout/floats_show_hide.html" }, { - "duration": "29.0", + "duration": "23.0", "name": "blink_perf.layout/grid-nested-baseline.html" }, { - "duration": "20.0", + "duration": "15.0", "name": "blink_perf.layout/grid-with-block-constraints-dependence.html" }, { - "duration": "21.0", + "duration": "16.0", "name": "blink_perf.layout/hindi-line-layout.html" }, { - "duration": "19.0", + "duration": "13.0", "name": "blink_perf.layout/hittest-block-children.html" }, { - "duration": "20.0", + "duration": "16.0", "name": "blink_perf.layout/hittest-nested-inline-blocks-listbased.html" }, { - "duration": "17.0", + "duration": "12.0", "name": "blink_perf.layout/japanese-kokoro-insert.html" }, { @@ -1032,139 +1032,139 @@ "name": "blink_perf.layout/large-grid.html" }, { - "duration": "20.0", + "duration": "16.0", "name": "blink_perf.layout/large-spanning-grid-item.html" }, { - "duration": "30.0", + "duration": "22.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html" }, { - "duration": "29.0", + "duration": "22.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html" }, { - "duration": "30.0", + "duration": "22.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html" }, { - "duration": "19.0", + "duration": "13.0", "name": "blink_perf.layout/latin-ebook-french.html" }, { - "duration": "27.0", + "duration": "19.0", "name": "blink_perf.layout/latin-ebook-resize.html" }, { - "duration": "20.0", + "duration": "13.0", "name": "blink_perf.layout/latin-ebook.html" }, { - "duration": "44.0", + "duration": "43.0", "name": "blink_perf.layout/layer-overhead.html" }, { - "duration": "17.0", + "duration": "11.0", "name": "blink_perf.layout/layers_overlap_2d.html" }, { - "duration": "17.0", + "duration": "11.0", "name": "blink_perf.layout/layers_overlap_3d.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.layout/line-layout-fit-content-break-word.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.layout/line-layout-fit-content.html" }, { - "duration": "29.0", + "duration": "22.0", "name": "blink_perf.layout/line-layout-line-height.html" }, { - "duration": "21.0", + "duration": "17.0", "name": "blink_perf.layout/line-layout-repeat-append-select.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "blink_perf.layout/line-layout-repeat-append.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "blink_perf.layout/line-layout.html" }, { - "duration": "16.0", + "duration": "10.0", "name": "blink_perf.layout/long-line-nowrap-collapse.html" }, { - "duration": "15.0", + "duration": "10.0", "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html" }, { - "duration": "19.0", + "duration": "14.0", "name": "blink_perf.layout/long-line-nowrap.html" }, { - "duration": "20.0", + "duration": "15.0", "name": "blink_perf.layout/many-block-children-auto-inline-size.html" }, { - "duration": "20.0", + "duration": "15.0", "name": "blink_perf.layout/many-block-children-fixed-inline-size.html" }, { - "duration": "20.0", + "duration": "15.0", "name": "blink_perf.layout/many-block-children-rebuild-box-tree.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "blink_perf.layout/multicol/balance-forced-breaks.html" }, { - "duration": "22.0", + "duration": "15.0", "name": "blink_perf.layout/multicol/balance-list-items-with-tall-marker.html" }, { - "duration": "22.0", + "duration": "15.0", "name": "blink_perf.layout/multicol/balance-tables-with-break-inside-avoidance.html" }, { - "duration": "22.0", + "duration": "15.0", "name": "blink_perf.layout/multicol/deeply-nested-tables-2.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "blink_perf.layout/multicol/deeply-nested-tables.html" }, { - "duration": "21.0", + "duration": "16.0", "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html" }, { - "duration": "22.0", + "duration": "19.0", "name": "blink_perf.layout/multicol/large-inline-formatting-context.html" }, { - "duration": "21.0", + "duration": "16.0", "name": "blink_perf.layout/multicol/lots-of-small-nested-unbreakable-blocks-autofill.html" }, { - "duration": "21.0", + "duration": "16.0", "name": "blink_perf.layout/multicol/lots-of-small-unbreakable-blocks-autofill.html" }, { - "duration": "26.0", + "duration": "25.0", "name": "blink_perf.layout/multicol/lots-of-small-unbreakable-blocks-balanced.html" }, { - "duration": "20.0", + "duration": "17.0", "name": "blink_perf.layout/multicol/lots-of-text-autofill.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html" }, { @@ -1172,95 +1172,95 @@ "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.layout/multicol/nested-forced-breaks.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.layout/multicol/tall-content-short-columns.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.layout/nested-grid.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.layout/nested-percent-height-tables.html" }, { - "duration": "20.0", + "duration": "18.0", "name": "blink_perf.layout/nested-subgrid.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.layout/nested-tables-with-overflow-auto.html" }, { - "duration": "21.0", + "duration": "19.0", "name": "blink_perf.layout/ruby.html" }, { - "duration": "40.0", + "duration": "32.0", "name": "blink_perf.layout/subtree-detaching.html" }, { - "duration": "19.0", + "duration": "15.0", "name": "blink_perf.layout/subtree-layout-scrollable-area.html" }, { - "duration": "20.0", + "duration": "17.0", "name": "blink_perf.layout/text-wrap-balance.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.layout/word-break-break-all.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.layout/word-break-break-word.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.layout/word-wrap-break-word.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.owp_storage/blob-perf-files.html" }, { - "duration": "19.0", + "duration": "15.0", "name": "blink_perf.owp_storage/blob-perf-ipc.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { - "duration": "19.0", + "duration": "15.0", "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { - "duration": "19.0", + "duration": "15.0", "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "26.0", + "duration": "23.0", "name": "blink_perf.parser/css-parser-yui.html" }, { @@ -1272,155 +1272,155 @@ "name": "blink_perf.parser/declarative-shadow-dom.html" }, { - "duration": "25.0", + "duration": "17.0", "name": "blink_perf.parser/html-parser.html" }, { - "duration": "70.0", + "duration": "53.0", "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "26.0", + "duration": "20.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { - "duration": "20.0", + "duration": "16.0", "name": "blink_perf.parser/innerHTML-setter-siblings.html" }, { - "duration": "24.0", + "duration": "22.0", "name": "blink_perf.parser/innerHTML-setter.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-all-attribute-complex.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-all-attribute.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-all-class-deep.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-all-class-first.html" }, { - "duration": "18.0", + "duration": "15.0", "name": "blink_perf.parser/query-selector-all-class-last.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-all-class.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-all-deep.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.parser/query-selector-all-first.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.parser/query-selector-all-id-deep.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.parser/query-selector-all-id-first.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.parser/query-selector-all-id-last.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.parser/query-selector-all-last.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-deep.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-first.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-id-deep.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.parser/query-selector-id-last.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.parser/query-selector-last.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.parser/simple-url.html" }, { - "duration": "19.0", + "duration": "17.0", "name": "blink_perf.parser/textarea-parsing.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.parser/tiny-innerHTML.html" }, { - "duration": "25.0", + "duration": "24.0", "name": "blink_perf.parser/url-parser.html" }, { - "duration": "18.0", + "duration": "16.0", "name": "blink_perf.parser/xml-parser.html" }, { - "duration": "16.0", + "duration": "15.0", "name": "blink_perf.shadow_dom/declarative-api.html" }, { - "duration": "12.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/imperative-api-appendchild.html" }, { - "duration": "12.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/imperative-api-assign.html" }, { - "duration": "12.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/imperative-api-assigned-elements.html" }, { - "duration": "12.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html" }, { - "duration": "13.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html" }, { - "duration": "13.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html" }, { - "duration": "14.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html" }, { - "duration": "15.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html" }, { - "duration": "15.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/imperative-api-insertbefore.html" }, { - "duration": "15.0", + "duration": "10.0", "name": "blink_perf.shadow_dom/imperative-api.html" }, { @@ -1436,143 +1436,143 @@ "name": "blink_perf.shadow_dom/shadow-dom-overhead.html" }, { - "duration": "24.0", + "duration": "22.0", "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/shadow-style-share.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/style-sheet-insert.html" }, { - "duration": "48.0", + "duration": "41.0", "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-distribution.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-host-child-append.html" }, { - "duration": "23.0", + "duration": "19.0", "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html" }, { - "duration": "25.0", + "duration": "23.0", "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-large-shallow-append-layout.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html" }, { - "duration": "16.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-large-shallow-prepend-layout.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-slot-append.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.shadow_dom/v1-small-deep-layout.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html" }, { - "duration": "28.0", + "duration": "29.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "109.0", + "duration": "100.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "111.0", + "duration": "100.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "99.0", + "duration": "88.0", "name": "blink_perf.webaudio/dynamics-compressor-node-knee.html" }, { - "duration": "66.0", + "duration": "102.0", "name": "blink_perf.webaudio/dynamics-compressor-node-post-knee.html" }, { - "duration": "63.0", + "duration": "89.0", "name": "blink_perf.webaudio/dynamics-compressor-node-pre-knee.html" }, { - "duration": "64.0", + "duration": "104.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "30.0", + "duration": "45.0", "name": "blink_perf.webaudio/panner-node.html" }, { - "duration": "16.0", + "duration": "25.0", "name": "blink_perf.webaudio/timeline-insert-event.html" }, { - "duration": "14.0", + "duration": "24.0", "name": "blink_perf.webcodecs/hardware-video-encoding.html" }, { @@ -1580,111 +1580,111 @@ "name": "blink_perf.webcodecs/software-video-encoding.html" }, { - "duration": "10.0", + "duration": "15.0", "name": "blink_perf.webcodecs/videoFrame-batch-copyTo-canvas.html" }, { - "duration": "9.0", + "duration": "14.0", "name": "blink_perf.webcodecs/videoFrame-copyTo-canvas.html" }, { - "duration": "9.0", + "duration": "14.0", "name": "blink_perf.webcodecs/videoFrame-copyTo-videoDecoder.html" }, { - "duration": "9.0", + "duration": "14.0", "name": "blink_perf.webcodecs/videoFrame-createImageBitmap-canvas.html" }, { - "duration": "9.0", + "duration": "14.0", "name": "blink_perf.webcodecs/videoFrame-createImageBitmap-imageDecoder.html" }, { - "duration": "9.0", + "duration": "14.0", "name": "blink_perf.webcodecs/videoFrame-createImageBitmap-videoDecoder.html" }, { - "duration": "9.0", + "duration": "15.0", "name": "blink_perf.webcodecs/videoFrame-drawImage-imageDecoder.html" }, { - "duration": "9.0", + "duration": "14.0", "name": "blink_perf.webcodecs/videoFrame-drawImage.html" }, { - "duration": "9.0", + "duration": "14.0", "name": "blink_perf.webcodecs/videoFrame-texImage2d.html" }, { - "duration": "14.0", + "duration": "22.0", "name": "blink_perf.webgl/binding-bind-buffer.html" }, { - "duration": "9.0", + "duration": "15.0", "name": "blink_perf.webgl/binding-buffer-sub-data.html" }, { - "duration": "10.0", + "duration": "16.0", "name": "blink_perf.webgl/binding-draw-arrays.html" }, { - "duration": "10.0", + "duration": "17.0", "name": "blink_perf.webgl/binding-typed-array-uniforms.html" }, { - "duration": "13.0", + "duration": "26.0", "name": "blink_perf.webgl_fast_call/binding-bind-buffer.html" }, { - "duration": "9.0", + "duration": "18.0", "name": "blink_perf.webgl_fast_call/binding-buffer-sub-data.html" }, { - "duration": "10.0", + "duration": "18.0", "name": "blink_perf.webgl_fast_call/binding-draw-arrays.html" }, { - "duration": "10.0", + "duration": "17.0", "name": "blink_perf.webgl_fast_call/binding-typed-array-uniforms.html" }, { - "duration": "10.0", + "duration": "16.0", "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html" }, { - "duration": "10.0", + "duration": "19.0", "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html" }, { - "duration": "46.0", + "duration": "55.0", "name": "octane/Octane" }, { - "duration": "19.0", + "duration": "38.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html" }, { - "duration": "14.0", + "duration": "19.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html" }, { - "duration": "17.0", + "duration": "21.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html" }, { - "duration": "15.0", + "duration": "20.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html" }, { - "duration": "22.0", + "duration": "28.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html" }, { - "duration": "20.0", + "duration": "18.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html" }, { @@ -1692,43 +1692,43 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html" }, { - "duration": "18.0", + "duration": "16.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html" }, { - "duration": "19.0", + "duration": "16.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html" }, { - "duration": "18.0", + "duration": "16.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html" }, { - "duration": "18.0", + "duration": "16.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html" }, { - "duration": "20.0", + "duration": "18.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html" }, { @@ -1736,15 +1736,15 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html" }, { - "duration": "16.0", + "duration": "14.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html" }, { - "duration": "18.0", + "duration": "16.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html" }, { @@ -1752,39 +1752,39 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html" }, { - "duration": "20.0", + "duration": "17.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" }, { - "duration": "329.0", + "duration": "333.0", "name": "rendering.mobile.notracing/motionmark_ramp_composite" }, { - "duration": "32.0", + "duration": "28.0", "name": "rendering.mobile/accu_weather_2018" }, { - "duration": "31.0", + "duration": "27.0", "name": "rendering.mobile/accu_weather_mobile_pinch_2018" }, { - "duration": "26.0", + "duration": "24.0", "name": "rendering.mobile/amazon_2018" }, { - "duration": "29.0", + "duration": "26.0", "name": "rendering.mobile/amazon_mobile_2018" }, { - "duration": "30.0", + "duration": "27.0", "name": "rendering.mobile/analog_clock_svg" }, { - "duration": "31.0", + "duration": "29.0", "name": "rendering.mobile/androidpolice_mobile_2018" }, { @@ -1792,19 +1792,19 @@ "name": "rendering.mobile/animometer_webgl" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.mobile/animometer_webgl_attrib_arrays" }, { - "duration": "40.0", + "duration": "41.0", "name": "rendering.mobile/animometer_webgl_multi_draw" }, { - "duration": "38.0", + "duration": "39.0", "name": "rendering.mobile/aquarium" }, { - "duration": "6.0", + "duration": "5.0", "name": "rendering.mobile/aquarium_20k" }, { @@ -1812,7 +1812,7 @@ "name": "rendering.mobile/background_color_animation" }, { - "duration": "35.0", + "duration": "34.0", "name": "rendering.mobile/background_color_animation_with_gradient" }, { @@ -1824,7 +1824,7 @@ "name": "rendering.mobile/balls_css_key_frame_animations" }, { - "duration": "6.0", + "duration": "5.0", "name": "rendering.mobile/balls_css_key_frame_animations_composited_transform" }, { @@ -1832,11 +1832,11 @@ "name": "rendering.mobile/balls_css_transition_2_properties" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/balls_css_transition_40_properties" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/balls_css_transition_all_properties" }, { @@ -1844,7 +1844,7 @@ "name": "rendering.mobile/balls_javascript_canvas" }, { - "duration": "33.0", + "duration": "34.0", "name": "rendering.mobile/balls_javascript_css" }, { @@ -1852,7 +1852,7 @@ "name": "rendering.mobile/balls_svg_animations" }, { - "duration": "33.0", + "duration": "36.0", "name": "rendering.mobile/basic_stream" }, { @@ -1860,35 +1860,35 @@ "name": "rendering.mobile/bing_mobile_2018" }, { - "duration": "36.0", + "duration": "37.0", "name": "rendering.mobile/blob" }, { - "duration": "34.0", + "duration": "33.0", "name": "rendering.mobile/blogspot_2018" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.mobile/blogspot_mobile_2018" }, { - "duration": "27.0", + "duration": "28.0", "name": "rendering.mobile/blur_rotating_background" }, { - "duration": "30.0", + "duration": "31.0", "name": "rendering.mobile/boingboing_mobile_2018" }, { - "duration": "28.0", + "duration": "29.0", "name": "rendering.mobile/booking.com_2018" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.mobile/booking.com_mobile_2018" }, { - "duration": "34.0", + "duration": "36.0", "name": "rendering.mobile/bouncing_balls_15" }, { @@ -1896,523 +1896,523 @@ "name": "rendering.mobile/bouncing_balls_shadow" }, { - "duration": "30.0", + "duration": "33.0", "name": "rendering.mobile/bouncing_clipped_rectangles" }, { - "duration": "30.0", + "duration": "32.0", "name": "rendering.mobile/bouncing_gradient_circles" }, { - "duration": "31.0", + "duration": "32.0", "name": "rendering.mobile/bouncing_png_images" }, { - "duration": "32.0", + "duration": "34.0", "name": "rendering.mobile/bouncing_svg_images" }, { - "duration": "35.0", + "duration": "36.0", "name": "rendering.mobile/camera_to_webgl" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/canvas2d_to_texture.html" }, { - "duration": "41.0", + "duration": "38.0", "name": "rendering.mobile/canvas_05000_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/canvas_10000_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/canvas_20000_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/canvas_40000_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/canvas_60000_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/canvas_75000_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/canvas_90000_pixels_per_second" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/canvas_animation_no_clear" }, { - "duration": "32.0", + "duration": "33.0", "name": "rendering.mobile/canvas_arcs" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/canvas_font_cycler" }, { - "duration": "31.0", + "duration": "32.0", "name": "rendering.mobile/canvas_globalAlpha" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/canvas_lines" }, { - "duration": "31.0", + "duration": "32.0", "name": "rendering.mobile/canvas_to_blob" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/canvas_to_canvas_draw" }, { - "duration": "35.0", + "duration": "36.0", "name": "rendering.mobile/capitolvolkswagen_mobile_2018" }, { - "duration": "25.0", + "duration": "22.0", "name": "rendering.mobile/card_expansion" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.mobile/card_expansion_animated" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.mobile/card_expansion_images_text" }, { - "duration": "25.0", + "duration": "21.0", "name": "rendering.mobile/card_flying" }, { - "duration": "33.0", + "duration": "35.0", "name": "rendering.mobile/cc_poster_circle" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/cc_scroll_text_only" }, { - "duration": "44.0", + "duration": "29.0", "name": "rendering.mobile/chip_tune" }, { - "duration": "32.0", + "duration": "31.0", "name": "rendering.mobile/cnn_2018" }, { - "duration": "45.0", + "duration": "27.0", "name": "rendering.mobile/cnn_article_mobile_2018" }, { - "duration": "37.0", + "duration": "21.0", "name": "rendering.mobile/cnn_mobile_2018" }, { - "duration": "9.0", + "duration": "2.0", "name": "rendering.mobile/cnn_mobile_pinch_2018" }, { - "duration": "37.0", + "duration": "21.0", "name": "rendering.mobile/cnn_pathological_2018" }, { - "duration": "42.0", + "duration": "29.0", "name": "rendering.mobile/compositor_heavy_animation" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.mobile/coordinated_animation" }, { - "duration": "40.0", + "duration": "27.0", "name": "rendering.mobile/crafty_mind" }, { - "duration": "37.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_many_keyframes" }, { - "duration": "36.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_simultaneous_inline_style" }, { - "duration": "35.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_simultaneous_new_element" }, { - "duration": "36.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_simultaneous_style_element" }, { - "duration": "36.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_simultaneous_updating_class" }, { - "duration": "36.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_staggered_infinite_iterations" }, { - "duration": "37.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_staggered_inline_style" }, { - "duration": "37.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_staggered_new_element" }, { - "duration": "38.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_staggered_style_element" }, { - "duration": "38.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_staggered_updating_class" }, { - "duration": "38.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_triggered_inline_style" }, { - "duration": "38.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_triggered_new_element" }, { - "duration": "37.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_triggered_style_element" }, { - "duration": "37.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_triggered_updating_class" }, { - "duration": "33.0", + "duration": "35.0", "name": "rendering.mobile/css_opacity_plus_n_layers_0" }, { - "duration": "33.0", + "duration": "36.0", "name": "rendering.mobile/css_opacity_plus_n_layers_75" }, { - "duration": "33.0", + "duration": "36.0", "name": "rendering.mobile/css_opacity_plus_n_layers_99" }, { - "duration": "36.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_inline_style" }, { - "duration": "36.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_new_element" }, { - "duration": "37.0", + "duration": "26.0", "name": "rendering.mobile/css_transitions_staggered_inline_style" }, { - "duration": "36.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_staggered_new_element" }, { - "duration": "36.0", + "duration": "26.0", "name": "rendering.mobile/css_transitions_staggered_style_element" }, { - "duration": "35.0", + "duration": "28.0", "name": "rendering.mobile/css_transitions_staggered_updating_class" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.mobile/css_transitions_style_element" }, { - "duration": "32.0", + "duration": "26.0", "name": "rendering.mobile/css_transitions_triggered_inline_style" }, { - "duration": "32.0", + "duration": "26.0", "name": "rendering.mobile/css_transitions_triggered_new_element" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.mobile/css_transitions_triggered_style_element" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.mobile/css_transitions_triggered_updating_class" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.mobile/css_transitions_updating_class" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.mobile/css_value_type_color" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.mobile/css_value_type_filter" }, { - "duration": "32.0", + "duration": "26.0", "name": "rendering.mobile/css_value_type_length" }, { - "duration": "31.0", + "duration": "27.0", "name": "rendering.mobile/css_value_type_length_complex" }, { - "duration": "31.0", + "duration": "27.0", "name": "rendering.mobile/css_value_type_length_simple" }, { - "duration": "31.0", + "duration": "27.0", "name": "rendering.mobile/css_value_type_path" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.mobile/css_value_type_shadow" }, { - "duration": "31.0", + "duration": "25.0", "name": "rendering.mobile/css_value_type_transform_complex" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.mobile/css_value_type_transform_simple" }, { - "duration": "36.0", + "duration": "27.0", "name": "rendering.mobile/deviantart_mobile_2018" }, { - "duration": "27.0", + "duration": "21.0", "name": "rendering.mobile/digg_mobile_2018" }, { - "duration": "32.0", + "duration": "26.0", "name": "rendering.mobile/docs_paper.html" }, { - "duration": "32.0", + "duration": "26.0", "name": "rendering.mobile/docs_resume.html" }, { - "duration": "33.0", + "duration": "27.0", "name": "rendering.mobile/docs_table.html" }, { - "duration": "33.0", + "duration": "28.0", "name": "rendering.mobile/draw_image" }, { - "duration": "32.0", + "duration": "27.0", "name": "rendering.mobile/draw_image_not_pixel_aligned" }, { - "duration": "32.0", + "duration": "27.0", "name": "rendering.mobile/dynamic_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "35.0", + "duration": "28.0", "name": "rendering.mobile/dynamic_cube_map" }, { - "duration": "33.0", + "duration": "27.0", "name": "rendering.mobile/dynamic_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "34.0", + "duration": "28.0", "name": "rendering.mobile/earth" }, { - "duration": "29.0", + "duration": "22.0", "name": "rendering.mobile/ebay_2018" }, { - "duration": "24.0", + "duration": "18.0", "name": "rendering.mobile/ebay_mobile_2018" }, { - "duration": "29.0", + "duration": "21.0", "name": "rendering.mobile/ebay_mobile_pinch_2018" }, { - "duration": "32.0", + "duration": "34.0", "name": "rendering.mobile/ebay_scroll_2018" }, { - "duration": "6.0", + "duration": "2.0", "name": "rendering.mobile/effect_games" }, { - "duration": "39.0", + "duration": "28.0", "name": "rendering.mobile/espn_2018" }, { - "duration": "28.0", + "duration": "23.0", "name": "rendering.mobile/espn_mobile_2018" }, { - "duration": "6.0", + "duration": "2.0", "name": "rendering.mobile/espn_pathological_2018" }, { - "duration": "34.0", + "duration": "27.0", "name": "rendering.mobile/extra_large_texture_uploads" }, { - "duration": "35.0", + "duration": "25.0", "name": "rendering.mobile/facebook_2018" }, { - "duration": "41.0", + "duration": "31.0", "name": "rendering.mobile/facebook_mobile_2018" }, { - "duration": "42.0", + "duration": "30.0", "name": "rendering.mobile/falling_particle_simulation_cpu.html" }, { - "duration": "38.0", + "duration": "28.0", "name": "rendering.mobile/falling_particle_simulation_gpu.html" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/famo_us_twitter_demo" }, { - "duration": "36.0", + "duration": "28.0", "name": "rendering.mobile/fill_clear_rect.html" }, { - "duration": "37.0", + "duration": "28.0", "name": "rendering.mobile/fill_shapes" }, { - "duration": "37.0", + "duration": "28.0", "name": "rendering.mobile/filter_terrain_svg" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/flickr_scroll_2018" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.mobile/font_wipe" }, { - "duration": "29.0", + "duration": "21.0", "name": "rendering.mobile/forecast.io_mobile_2018" }, { - "duration": "36.0", + "duration": "28.0", "name": "rendering.mobile/get_image_data_cpu.html" }, { - "duration": "36.0", + "duration": "28.0", "name": "rendering.mobile/get_image_data_gpu.html" }, { - "duration": "31.0", + "duration": "22.0", "name": "rendering.mobile/gmail_2018" }, { - "duration": "28.0", + "duration": "20.0", "name": "rendering.mobile/google_calendar_2018" }, { - "duration": "35.0", + "duration": "26.0", "name": "rendering.mobile/google_docs_2018" }, { - "duration": "38.0", + "duration": "32.0", "name": "rendering.mobile/google_docs_mobile_2022" }, { - "duration": "32.0", + "duration": "23.0", "name": "rendering.mobile/google_image_search_2018" }, { - "duration": "37.0", + "duration": "25.0", "name": "rendering.mobile/google_image_search_mobile_2018" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/google_news_ios" }, { - "duration": "28.0", + "duration": "21.0", "name": "rendering.mobile/google_news_mobile_2018" }, { - "duration": "32.0", + "duration": "26.0", "name": "rendering.mobile/google_plus_2018" }, { - "duration": "33.0", + "duration": "25.0", "name": "rendering.mobile/google_plus_mobile_2018" }, { - "duration": "36.0", + "duration": "23.0", "name": "rendering.mobile/google_search_mobile_pinch_2018" }, { - "duration": "28.0", + "duration": "20.0", "name": "rendering.mobile/google_web_search_2018" }, { - "duration": "33.0", + "duration": "26.0", "name": "rendering.mobile/google_web_search_mobile_2018" }, { - "duration": "30.0", + "duration": "39.0", "name": "rendering.mobile/gpu_bound_shader.html" }, { - "duration": "37.0", + "duration": "26.0", "name": "rendering.mobile/gsp.ro_mobile_2018" }, { - "duration": "28.0", + "duration": "35.0", "name": "rendering.mobile/guardian_pathological_2018" }, { - "duration": "36.0", + "duration": "28.0", "name": "rendering.mobile/guimark_vector_chart" }, { - "duration": "25.0", + "duration": "32.0", "name": "rendering.mobile/gws_boogie_expansion" }, { - "duration": "25.0", + "duration": "32.0", "name": "rendering.mobile/gws_google_expansion" }, { - "duration": "31.0", + "duration": "39.0", "name": "rendering.mobile/hakim" }, { - "duration": "26.0", + "duration": "24.0", "name": "rendering.mobile/horizontal_vertical_expansion" }, { - "duration": "27.0", + "duration": "35.0", "name": "rendering.mobile/hw_accelerated_canvas_to_sw_canvas.html" }, { - "duration": "47.0", + "duration": "45.0", "name": "rendering.mobile/idle_power_animated_gif" }, { @@ -2420,255 +2420,255 @@ "name": "rendering.mobile/idle_power_blank" }, { - "duration": "54.0", + "duration": "43.0", "name": "rendering.mobile/idle_power_css_animation" }, { - "duration": "46.0", + "duration": "43.0", "name": "rendering.mobile/idle_power_request_animation_frame" }, { - "duration": "120.0", + "duration": "122.0", "name": "rendering.mobile/idle_power_set_timeout_long" }, { - "duration": "64.0", + "duration": "53.0", "name": "rendering.mobile/idle_power_set_timetout" }, { - "duration": "42.0", + "duration": "43.0", "name": "rendering.mobile/ie_chalkboard" }, { - "duration": "32.0", + "duration": "30.0", "name": "rendering.mobile/ie_pirate_mark" }, { - "duration": "29.0", + "duration": "36.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_0" }, { - "duration": "29.0", + "duration": "36.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_75" }, { - "duration": "29.0", + "duration": "36.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_99" }, { - "duration": "29.0", + "duration": "37.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0" }, { - "duration": "30.0", + "duration": "36.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75" }, { - "duration": "29.0", + "duration": "36.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99" }, { - "duration": "30.0", + "duration": "37.0", "name": "rendering.mobile/infinite_scroll_root_fixed_raf_n_layers_0" }, { - "duration": "30.0", + "duration": "37.0", "name": "rendering.mobile/infinite_scroll_root_fixed_raf_n_layers_75" }, { - "duration": "29.0", + "duration": "36.0", "name": "rendering.mobile/infinite_scroll_root_fixed_raf_n_layers_99" }, { - "duration": "30.0", + "duration": "36.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_0" }, { - "duration": "29.0", + "duration": "37.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_75" }, { - "duration": "29.0", + "duration": "36.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_99" }, { - "duration": "30.0", + "duration": "32.0", "name": "rendering.mobile/infinite_scrolling" }, { - "duration": "31.0", + "duration": "39.0", "name": "rendering.mobile/jarro_doverson" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/jpeg_decoding_rgb_and_gpu_rasterization" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/jpeg_decoding_yuv_and_gpu_rasterization" }, { - "duration": "31.0", + "duration": "39.0", "name": "rendering.mobile/js_full_screen_invalidation" }, { - "duration": "30.0", + "duration": "37.0", "name": "rendering.mobile/js_opacity_plus_n_layers_0" }, { - "duration": "30.0", + "duration": "38.0", "name": "rendering.mobile/js_opacity_plus_n_layers_75" }, { - "duration": "31.0", + "duration": "38.0", "name": "rendering.mobile/js_opacity_plus_n_layers_99" }, { - "duration": "33.0", + "duration": "39.0", "name": "rendering.mobile/js_paint_plus_n_layers_0" }, { - "duration": "30.0", + "duration": "36.0", "name": "rendering.mobile/js_paint_plus_n_layers_75" }, { - "duration": "30.0", + "duration": "35.0", "name": "rendering.mobile/js_paint_plus_n_layers_99" }, { - "duration": "30.0", + "duration": "37.0", "name": "rendering.mobile/js_poster_circle" }, { - "duration": "29.0", + "duration": "38.0", "name": "rendering.mobile/js_scroll_text_only" }, { - "duration": "30.0", + "duration": "36.0", "name": "rendering.mobile/js_toggle_layer_plus_n_layers_0" }, { - "duration": "31.0", + "duration": "36.0", "name": "rendering.mobile/js_toggle_layer_plus_n_layers_75" }, { - "duration": "30.0", + "duration": "36.0", "name": "rendering.mobile/js_toggle_layer_plus_n_layers_99" }, { - "duration": "4.0", + "duration": "5.0", "name": "rendering.mobile/kevs_3d" }, { - "duration": "27.0", + "duration": "32.0", "name": "rendering.mobile/keyframed_animations" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/large_texture_uploads" }, { - "duration": "27.0", + "duration": "34.0", "name": "rendering.mobile/latimes_pathological_2018" }, { - "duration": "25.0", + "duration": "30.0", "name": "rendering.mobile/linkedin_2018" }, { - "duration": "39.0", + "duration": "49.0", "name": "rendering.mobile/linkedin_mobile_2018" }, { - "duration": "37.0", + "duration": "47.0", "name": "rendering.mobile/linkedin_mobile_pinch_2018" }, { - "duration": "34.0", + "duration": "42.0", "name": "rendering.mobile/linkedin_pathological_2018" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.mobile/list_animation_simple" }, { - "duration": "30.0", + "duration": "33.0", "name": "rendering.mobile/list_recycle_transform" }, { - "duration": "27.0", + "duration": "36.0", "name": "rendering.mobile/main_0fps_impl_60fps" }, { - "duration": "28.0", + "duration": "37.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update" }, { - "duration": "28.0", + "duration": "38.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update_jank" }, { - "duration": "28.0", + "duration": "37.0", "name": "rendering.mobile/main_0fps_with_jank_impl_0fps" }, { - "duration": "27.0", + "duration": "32.0", "name": "rendering.mobile/main_15fps_impl_0fps" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/main_15fps_with_jank_impl_0fps" }, { - "duration": "27.0", + "duration": "34.0", "name": "rendering.mobile/main_30fps_impl_0fps" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/main_30fps_impl_60fps" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/main_60fps_impl_0fps" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/main_60fps_impl_60fps" }, { - "duration": "27.0", + "duration": "32.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update_jank" }, { - "duration": "42.0", + "duration": "50.0", "name": "rendering.mobile/main_60fps_with_extreme_jank_impl_0fps" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/main_60fps_with_jank_and_delay_impl_60fps" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/main_60fps_with_jank_impl_0fps" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/main_animations_half_presented" }, { - "duration": "27.0", + "duration": "34.0", "name": "rendering.mobile/man_in_blue" }, { - "duration": "40.0", + "duration": "41.0", "name": "rendering.mobile/many_images" }, { - "duration": "36.0", + "duration": "38.0", "name": "rendering.mobile/many_planets_deep" }, { @@ -2676,11 +2676,11 @@ "name": "rendering.mobile/maps_perf_test" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.mobile/mask_transition_animation" }, { - "duration": "27.0", + "duration": "28.0", "name": "rendering.mobile/masonry" }, { @@ -2692,7 +2692,7 @@ "name": "rendering.mobile/megi_dish" }, { - "duration": "75.0", + "duration": "73.0", "name": "rendering.mobile/microgame_fps" }, { @@ -2704,23 +2704,23 @@ "name": "rendering.mobile/microsoft_fireflies" }, { - "duration": "34.0", + "duration": "36.0", "name": "rendering.mobile/microsoft_fish_ie_tank" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/microsoft_performance" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/microsoft_snow" }, { - "duration": "33.0", + "duration": "35.0", "name": "rendering.mobile/microsoft_speed_reading" }, { - "duration": "33.0", + "duration": "35.0", "name": "rendering.mobile/microsoft_tweet_map" }, { @@ -2728,23 +2728,23 @@ "name": "rendering.mobile/microsoft_video_city" }, { - "duration": "33.0", + "duration": "35.0", "name": "rendering.mobile/microsoft_worker_fountains" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/mix_10k" }, { - "duration": "32.0", + "duration": "34.0", "name": "rendering.mobile/mix_blend_mode_animation_difference" }, { - "duration": "33.0", + "duration": "35.0", "name": "rendering.mobile/mix_blend_mode_animation_hue" }, { - "duration": "33.0", + "duration": "34.0", "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation" }, { @@ -2752,11 +2752,11 @@ "name": "rendering.mobile/mix_blend_mode_animation_screen" }, { - "duration": "32.0", + "duration": "38.0", "name": "rendering.mobile/mlb_mobile_2018" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/mobile_news_sandbox" }, { @@ -2764,7 +2764,7 @@ "name": "rendering.mobile/motion_mark_canvas_fill_shapes" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/motion_mark_canvas_stroke_shapes" }, { @@ -2800,27 +2800,27 @@ "name": "rendering.mobile/motionmark_fixed_2_seconds_suits" }, { - "duration": "56.0", + "duration": "55.0", "name": "rendering.mobile/motionmark_ramp_canvas_arcs" }, { - "duration": "55.0", + "duration": "56.0", "name": "rendering.mobile/motionmark_ramp_canvas_lines" }, { - "duration": "52.0", + "duration": "54.0", "name": "rendering.mobile/motionmark_ramp_design" }, { - "duration": "52.0", + "duration": "55.0", "name": "rendering.mobile/motionmark_ramp_images" }, { - "duration": "53.0", + "duration": "56.0", "name": "rendering.mobile/motionmark_ramp_leaves" }, { - "duration": "57.0", + "duration": "54.0", "name": "rendering.mobile/motionmark_ramp_multiply" }, { @@ -2828,43 +2828,43 @@ "name": "rendering.mobile/motionmark_ramp_paths" }, { - "duration": "54.0", + "duration": "52.0", "name": "rendering.mobile/motionmark_ramp_suits" }, { - "duration": "37.0", + "duration": "38.0", "name": "rendering.mobile/new_tilings" }, { - "duration": "32.0", + "duration": "34.0", "name": "rendering.mobile/no_op_raf" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/no_op_scroll" }, { - "duration": "27.0", + "duration": "30.0", "name": "rendering.mobile/no_op_settimeout" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/no_op_touch_handler" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/no_update_compositor_animation_with_janky_main_animation" }, { - "duration": "43.0", + "duration": "45.0", "name": "rendering.mobile/non_opaque_background_compositor_thread_scrolling_00050_pixels_per_second" }, { - "duration": "44.0", + "duration": "46.0", "name": "rendering.mobile/non_opaque_background_main_thread_scrolling_00050_pixels_per_second" }, { - "duration": "36.0", + "duration": "37.0", "name": "rendering.mobile/nvidia_vertex_buffer_object" }, { @@ -2872,143 +2872,143 @@ "name": "rendering.mobile/nyc_gov_scroll_2018" }, { - "duration": "36.0", + "duration": "38.0", "name": "rendering.mobile/nytimes_mobile_2018" }, { - "duration": "34.0", + "duration": "33.0", "name": "rendering.mobile/nytimes_scroll_2018" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/off_screen_main_60fps" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/off_screen_main_60fps_jank" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/offscreen_animation_no_damage" }, { - "duration": "32.0", + "duration": "34.0", "name": "rendering.mobile/overlay_background_color_css_transitions_page" }, { - "duration": "33.0", + "duration": "30.0", "name": "rendering.mobile/paint_worklet" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.mobile/parallax_effect" }, { - "duration": "33.0", + "duration": "30.0", "name": "rendering.mobile/particles" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/pbs_pathological_2018" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/physical_simulation" }, { - "duration": "34.0", + "duration": "29.0", "name": "rendering.mobile/pinterest_2018" }, { - "duration": "25.0", + "duration": "22.0", "name": "rendering.mobile/pinterest_mobile_2018" }, { - "duration": "30.0", + "duration": "27.0", "name": "rendering.mobile/put_and_create_imagebitmap_from_imagedata" }, { - "duration": "30.0", + "duration": "27.0", "name": "rendering.mobile/put_get_image_data" }, { - "duration": "30.0", + "duration": "27.0", "name": "rendering.mobile/put_image_data.html" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/raf" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/raf_animation" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/raf_canvas" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/raf_touch_animation" }, { - "duration": "28.0", + "duration": "25.0", "name": "rendering.mobile/recode_pathological_2018" }, { - "duration": "28.0", + "duration": "26.0", "name": "rendering.mobile/reddit_mobile_2018" }, { - "duration": "30.0", + "duration": "29.0", "name": "rendering.mobile/runway_2019" }, { - "duration": "32.0", + "duration": "31.0", "name": "rendering.mobile/san_angeles" }, { - "duration": "38.0", + "duration": "29.0", "name": "rendering.mobile/second_batch_js_heavy" }, { - "duration": "38.0", + "duration": "28.0", "name": "rendering.mobile/second_batch_js_light" }, { - "duration": "39.0", + "duration": "29.0", "name": "rendering.mobile/second_batch_js_medium" }, { - "duration": "29.0", + "duration": "26.0", "name": "rendering.mobile/sfgate_mobile_2018" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/sheets_render.html" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/silk_finance" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/simple_text_page" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/simple_touch_drag" }, { - "duration": "68.0", + "duration": "67.0", "name": "rendering.mobile/skelebuddies_wasm_2020" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/slashdot_mobile_2018" }, { - "duration": "29.0", + "duration": "30.0", "name": "rendering.mobile/small_texture_uploads" }, { @@ -3016,59 +3016,59 @@ "name": "rendering.mobile/smash_cat" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/spielzeugz" }, { - "duration": "29.0", + "duration": "32.0", "name": "rendering.mobile/static_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "29.0", + "duration": "32.0", "name": "rendering.mobile/static_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "24.0", + "duration": "22.0", "name": "rendering.mobile/sticky_using_webkit" }, { - "duration": "30.0", + "duration": "32.0", "name": "rendering.mobile/stroke_shapes" }, { - "duration": "35.0", + "duration": "34.0", "name": "rendering.mobile/svg_icon_raster" }, { - "duration": "25.0", + "duration": "22.0", "name": "rendering.mobile/swipe_to_dismiss" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.mobile/sync_scroll_offset" }, { - "duration": "39.0", + "duration": "38.0", "name": "rendering.mobile/techcrunch_2018" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.mobile/techcrunch_mobile_2018" }, { - "duration": "53.0", + "duration": "52.0", "name": "rendering.mobile/text_05000_pixels_per_second" }, { - "duration": "41.0", + "duration": "37.0", "name": "rendering.mobile/text_10000_pixels_per_second" }, { - "duration": "39.0", + "duration": "36.0", "name": "rendering.mobile/text_20000_pixels_per_second" }, { - "duration": "36.0", + "duration": "33.0", "name": "rendering.mobile/text_40000_pixels_per_second" }, { @@ -3084,11 +3084,11 @@ "name": "rendering.mobile/text_90000_pixels_per_second" }, { - "duration": "50.0", + "duration": "51.0", "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second" }, { - "duration": "48.0", + "duration": "49.0", "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second" }, { @@ -3096,11 +3096,11 @@ "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second" }, { - "duration": "43.0", + "duration": "45.0", "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second" }, { - "duration": "46.0", + "duration": "47.0", "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second" }, { @@ -3108,47 +3108,47 @@ "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second" }, { - "duration": "49.0", + "duration": "46.0", "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "42.0", + "duration": "34.0", "name": "rendering.mobile/text_fling_05000_pixels_per_second" }, { - "duration": "42.0", + "duration": "34.0", "name": "rendering.mobile/text_fling_10000_pixels_per_second" }, { - "duration": "43.0", + "duration": "34.0", "name": "rendering.mobile/text_fling_20000_pixels_per_second" }, { - "duration": "9.0", + "duration": "8.0", "name": "rendering.mobile/text_hover_05000_pixels_per_second" }, { - "duration": "9.0", + "duration": "8.0", "name": "rendering.mobile/text_hover_10000_pixels_per_second" }, { - "duration": "9.0", + "duration": "8.0", "name": "rendering.mobile/text_hover_20000_pixels_per_second" }, { - "duration": "9.0", + "duration": "8.0", "name": "rendering.mobile/text_hover_40000_pixels_per_second" }, { - "duration": "9.0", + "duration": "8.0", "name": "rendering.mobile/text_hover_60000_pixels_per_second" }, { - "duration": "9.0", + "duration": "8.0", "name": "rendering.mobile/text_hover_75000_pixels_per_second" }, { - "duration": "9.0", + "duration": "8.0", "name": "rendering.mobile/text_hover_90000_pixels_per_second" }, { @@ -3156,7 +3156,7 @@ "name": "rendering.mobile/text_scroll_input_every_other_vsync_plus_0us" }, { - "duration": "47.0", + "duration": "46.0", "name": "rendering.mobile/text_scroll_input_one_per_vsync_minus_1000us" }, { @@ -3164,19 +3164,19 @@ "name": "rendering.mobile/text_scroll_input_one_per_vsync_minus_3000us" }, { - "duration": "46.0", + "duration": "47.0", "name": "rendering.mobile/text_scroll_input_one_per_vsync_minus_300us" }, { - "duration": "47.0", + "duration": "48.0", "name": "rendering.mobile/text_scroll_input_one_per_vsync_plus_0us" }, { - "duration": "48.0", + "duration": "49.0", "name": "rendering.mobile/text_scroll_input_one_per_vsync_plus_1000us" }, { - "duration": "48.0", + "duration": "47.0", "name": "rendering.mobile/text_scroll_input_one_per_vsync_plus_3000us" }, { @@ -3184,51 +3184,51 @@ "name": "rendering.mobile/text_scroll_input_one_per_vsync_plus_300us" }, { - "duration": "47.0", + "duration": "48.0", "name": "rendering.mobile/text_scroll_input_two_per_vsync_plus_0us" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/text_scrollbar_100_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/text_scrollbar_1200_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/text_scrollbar_200_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/text_scrollbar_2300_pixels_per_second" }, { - "duration": "5.0", + "duration": "2.0", "name": "rendering.mobile/text_scrollbar_700_pixels_per_second" }, { - "duration": "28.0", + "duration": "29.0", "name": "rendering.mobile/theverge_article_mobile_2018" }, { - "duration": "28.0", + "duration": "29.0", "name": "rendering.mobile/theverge_mobile_2018" }, { - "duration": "33.0", + "duration": "36.0", "name": "rendering.mobile/throughput_scrolling_active_handler" }, { - "duration": "33.0", + "duration": "35.0", "name": "rendering.mobile/throughput_scrolling_composited" }, { - "duration": "35.0", + "duration": "36.0", "name": "rendering.mobile/throughput_scrolling_passive_handler" }, { - "duration": "33.0", + "duration": "34.0", "name": "rendering.mobile/throughput_scrolling_uncomposited" }, { @@ -3236,67 +3236,67 @@ "name": "rendering.mobile/tiny_racing_v3_wasm_2020" }, { - "duration": "30.0", + "duration": "31.0", "name": "rendering.mobile/toBlob_duration.html" }, { - "duration": "30.0", + "duration": "31.0", "name": "rendering.mobile/toBlob_duration_jpeg.html" }, { - "duration": "30.0", + "duration": "31.0", "name": "rendering.mobile/toBlob_small_canvas_in_worker.html" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.mobile/touch_handler_scrolling" }, { - "duration": "30.0", + "duration": "31.0", "name": "rendering.mobile/transfer_from_imageBitmap.html" }, { - "duration": "32.0", + "duration": "33.0", "name": "rendering.mobile/transform_transitions" }, { - "duration": "31.0", + "duration": "32.0", "name": "rendering.mobile/transform_transitions_js_block" }, { - "duration": "28.0", + "duration": "29.0", "name": "rendering.mobile/twitch_2018" }, { - "duration": "28.0", + "duration": "27.0", "name": "rendering.mobile/twitch_mobile_pinch_2018" }, { - "duration": "43.0", + "duration": "40.0", "name": "rendering.mobile/twitter_2018" }, { - "duration": "44.0", + "duration": "42.0", "name": "rendering.mobile/twitter_mobile_2018" }, { - "duration": "36.0", + "duration": "34.0", "name": "rendering.mobile/update_history_state" }, { - "duration": "30.0", + "duration": "28.0", "name": "rendering.mobile/usatoday_mobile_2018" }, { - "duration": "27.0", + "duration": "30.0", "name": "rendering.mobile/vertical_expansion" }, { - "duration": "35.0", + "duration": "34.0", "name": "rendering.mobile/video_to_hw_accelerated_canvas" }, { - "duration": "34.0", + "duration": "33.0", "name": "rendering.mobile/video_to_sub_texture" }, { @@ -3316,23 +3316,23 @@ "name": "rendering.mobile/video_to_texture" }, { - "duration": "34.0", + "duration": "33.0", "name": "rendering.mobile/web_animation_value_type_color" }, { - "duration": "35.0", + "duration": "34.0", "name": "rendering.mobile/web_animation_value_type_length_3d" }, { - "duration": "35.0", + "duration": "34.0", "name": "rendering.mobile/web_animation_value_type_length_complex" }, { - "duration": "35.0", + "duration": "34.0", "name": "rendering.mobile/web_animation_value_type_length_simple" }, { - "duration": "35.0", + "duration": "33.0", "name": "rendering.mobile/web_animation_value_type_path" }, { @@ -3340,23 +3340,23 @@ "name": "rendering.mobile/web_animation_value_type_shadow" }, { - "duration": "35.0", + "duration": "34.0", "name": "rendering.mobile/web_animation_value_type_transform_complex" }, { - "duration": "35.0", + "duration": "34.0", "name": "rendering.mobile/web_animation_value_type_transform_simple" }, { - "duration": "41.0", + "duration": "39.0", "name": "rendering.mobile/web_animations_many_keyframes" }, { - "duration": "35.0", + "duration": "34.0", "name": "rendering.mobile/web_animations_set_current_time" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.mobile/web_animations_simultaneous" }, { @@ -3364,31 +3364,31 @@ "name": "rendering.mobile/web_animations_staggered_chaining" }, { - "duration": "34.0", + "duration": "33.0", "name": "rendering.mobile/web_animations_staggered_infinite_iterations" }, { - "duration": "36.0", + "duration": "35.0", "name": "rendering.mobile/web_animations_staggered_triggering_page" }, { - "duration": "7.0", + "duration": "5.0", "name": "rendering.mobile/webgl_to_texture" }, { - "duration": "31.0", + "duration": "28.0", "name": "rendering.mobile/webp_decoding_rgb_and_gpu_rasterization" }, { - "duration": "31.0", + "duration": "30.0", "name": "rendering.mobile/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "38.0", + "duration": "37.0", "name": "rendering.mobile/wikipedia_2018" }, { - "duration": "34.0", + "duration": "32.0", "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018" }, { @@ -3396,15 +3396,15 @@ "name": "rendering.mobile/wikipedia_mobile_2018" }, { - "duration": "38.0", + "duration": "36.0", "name": "rendering.mobile/wordpress_2018" }, { - "duration": "31.0", + "duration": "32.0", "name": "rendering.mobile/wordpress_mobile_2018" }, { - "duration": "31.0", + "duration": "32.0", "name": "rendering.mobile/worldjournal_mobile_2018" }, { @@ -3412,75 +3412,75 @@ "name": "rendering.mobile/wow_wiki_pathological_2018" }, { - "duration": "35.0", + "duration": "39.0", "name": "rendering.mobile/wowwiki_mobile_2018" }, { - "duration": "7.0", + "duration": "5.0", "name": "rendering.mobile/wsj_mobile_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/yahoo_answers_2018" }, { - "duration": "2.0", + "duration": "3.0", "name": "rendering.mobile/yahoo_answers_mobile_2018" }, { - "duration": "18.0", + "duration": "21.0", "name": "rendering.mobile/yahoo_news_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/yahoo_news_mobile_2018" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/yahoo_sports_2018" }, { - "duration": "17.0", + "duration": "21.0", "name": "rendering.mobile/yahoo_sports_pathological_2018" }, { - "duration": "2.0", + "duration": "3.0", "name": "rendering.mobile/youtube_2018" }, { - "duration": "16.0", + "duration": "19.0", "name": "rendering.mobile/youtube_mobile_2018" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/zdnet_pathological_2018" }, { - "duration": "25.0", + "duration": "22.0", "name": "rendering.mobile/zoom_in_animation" }, { - "duration": "26.0", + "duration": "25.0", "name": "speedometer-future/http://browserbench.org/Speedometer/" }, { - "duration": "26.0", + "duration": "24.0", "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "93.0", + "duration": "82.0", "name": "speedometer2-future/Speedometer2" }, { - "duration": "99.0", + "duration": "85.0", "name": "speedometer2/Speedometer2" }, { - "duration": "138.0", + "duration": "116.0", "name": "speedometer3-future/Speedometer3" }, { - "duration": "136.0", + "duration": "113.0", "name": "speedometer3/Speedometer3" }, { @@ -3488,15 +3488,15 @@ "name": "system_health.common_mobile/background:media:imgur:2019" }, { - "duration": "46.0", + "duration": "47.0", "name": "system_health.common_mobile/background:news:nytimes:2019" }, { - "duration": "32.0", + "duration": "35.0", "name": "system_health.common_mobile/background:search:google:2019" }, { - "duration": "31.0", + "duration": "34.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { @@ -3504,11 +3504,11 @@ "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "15.0", + "duration": "20.0", "name": "system_health.common_mobile/browse:chrome:newtab:2019" }, { - "duration": "15.0", + "duration": "20.0", "name": "system_health.common_mobile/browse:chrome:omnibox:2019" }, { @@ -3516,23 +3516,23 @@ "name": "system_health.common_mobile/browse:media:facebook_photos:2019" }, { - "duration": "55.0", + "duration": "56.0", "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:media:googleplaystore:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:media:imgur:2019" }, { - "duration": "49.0", + "duration": "55.0", "name": "system_health.common_mobile/browse:media:tiktok_infinite_scroll:2021" }, { - "duration": "58.0", + "duration": "63.0", "name": "system_health.common_mobile/browse:media:youtube:2019" }, { @@ -3540,7 +3540,7 @@ "name": "system_health.common_mobile/browse:news:businessinsider:2021" }, { - "duration": "54.0", + "duration": "55.0", "name": "system_health.common_mobile/browse:news:cnn:2021" }, { @@ -3552,15 +3552,15 @@ "name": "system_health.common_mobile/browse:news:globo:2019" }, { - "duration": "55.0", + "duration": "59.0", "name": "system_health.common_mobile/browse:news:nytimes:2019" }, { - "duration": "42.0", + "duration": "47.0", "name": "system_health.common_mobile/browse:news:qq:2019" }, { - "duration": "62.0", + "duration": "68.0", "name": "system_health.common_mobile/browse:news:reddit:2019" }, { @@ -3568,15 +3568,15 @@ "name": "system_health.common_mobile/browse:news:toi:2019" }, { - "duration": "58.0", + "duration": "62.0", "name": "system_health.common_mobile/browse:news:washingtonpost:2019" }, { - "duration": "33.0", + "duration": "35.0", "name": "system_health.common_mobile/browse:search:amp:2018" }, { - "duration": "32.0", + "duration": "37.0", "name": "system_health.common_mobile/browse:search:amp:sxg:2019" }, { @@ -3584,11 +3584,11 @@ "name": "system_health.common_mobile/browse:shopping:amazon:2019" }, { - "duration": "61.0", + "duration": "66.0", "name": "system_health.common_mobile/browse:shopping:avito:2019" }, { - "duration": "62.0", + "duration": "71.0", "name": "system_health.common_mobile/browse:shopping:flipkart:2019" }, { @@ -3600,23 +3600,23 @@ "name": "system_health.common_mobile/browse:social:facebook:2019" }, { - "duration": "79.0", + "duration": "82.0", "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:social:instagram:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2021" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "82.0", + "duration": "88.0", "name": "system_health.common_mobile/browse:social:twitter:2019" }, { @@ -3624,219 +3624,219 @@ "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "46.0", + "duration": "53.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { - "duration": "31.0", + "duration": "32.0", "name": "system_health.common_mobile/load:chrome:blank" }, { - "duration": "25.0", + "duration": "32.0", "name": "system_health.common_mobile/load:games:bubbles:2020" }, { - "duration": "29.0", + "duration": "36.0", "name": "system_health.common_mobile/load:games:lazors" }, { - "duration": "30.0", + "duration": "36.0", "name": "system_health.common_mobile/load:games:spychase:2018" }, { - "duration": "28.0", + "duration": "33.0", "name": "system_health.common_mobile/load:media:dailymotion:2019" }, { - "duration": "27.0", + "duration": "32.0", "name": "system_health.common_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "25.0", + "duration": "32.0", "name": "system_health.common_mobile/load:media:facebook_photos:2019" }, { - "duration": "25.0", + "duration": "32.0", "name": "system_health.common_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "27.0", + "duration": "34.0", "name": "system_health.common_mobile/load:media:flickr:2018" }, { - "duration": "28.0", + "duration": "34.0", "name": "system_health.common_mobile/load:media:google_images:2018" }, { - "duration": "27.0", + "duration": "33.0", "name": "system_health.common_mobile/load:media:imgur:2018" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/load:media:soundcloud:2018" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "28.0", + "duration": "34.0", "name": "system_health.common_mobile/load:news:bbc:2019" }, { - "duration": "29.0", + "duration": "34.0", "name": "system_health.common_mobile/load:news:cnn:2020" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:news:irctc:2019" }, { - "duration": "29.0", + "duration": "35.0", "name": "system_health.common_mobile/load:news:nytimes:2019" }, { - "duration": "28.0", + "duration": "33.0", "name": "system_health.common_mobile/load:news:qq:2019" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:news:reddit:2019" }, { - "duration": "27.0", + "duration": "32.0", "name": "system_health.common_mobile/load:news:washingtonpost:2019" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:news:wikipedia:2018" }, { - "duration": "28.0", + "duration": "33.0", "name": "system_health.common_mobile/load:search:amazon:2019" }, { - "duration": "27.0", + "duration": "33.0", "name": "system_health.common_mobile/load:search:baidu:2018" }, { - "duration": "27.0", + "duration": "32.0", "name": "system_health.common_mobile/load:search:ebay:2018" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:search:google:2018" }, { - "duration": "26.0", + "duration": "33.0", "name": "system_health.common_mobile/load:search:naver:2023" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:search:taobao:2019" }, { - "duration": "26.0", + "duration": "31.0", "name": "system_health.common_mobile/load:search:yahoo:2018" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:search:yandex:2018" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:social:instagram:2019" }, { - "duration": "27.0", + "duration": "32.0", "name": "system_health.common_mobile/load:social:pinterest:2019" }, { - "duration": "27.0", + "duration": "32.0", "name": "system_health.common_mobile/load:social:twitter:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/load:tools:docs:2019" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:tools:drive:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/load:tools:dropbox:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "26.0", + "duration": "34.0", "name": "system_health.common_mobile/load:tools:stackoverflow:2018" }, { - "duration": "26.0", + "duration": "32.0", "name": "system_health.common_mobile/load:tools:weather:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.common_mobile/long_running:tools:gmail-background" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.common_mobile/long_running:tools:gmail-foreground" }, { - "duration": "34.0", + "duration": "43.0", "name": "system_health.memory_mobile/background:media:imgur:2019" }, { - "duration": "55.0", + "duration": "50.0", "name": "system_health.memory_mobile/background:news:nytimes:2019" }, { - "duration": "33.0", + "duration": "43.0", "name": "system_health.memory_mobile/background:search:google:2019" }, { - "duration": "31.0", + "duration": "40.0", "name": "system_health.memory_mobile/background:social:facebook:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { - "duration": "14.0", + "duration": "25.0", "name": "system_health.memory_mobile/browse:chrome:newtab:2019" }, { - "duration": "21.0", + "duration": "23.0", "name": "system_health.memory_mobile/browse:chrome:omnibox:2019" }, { - "duration": "86.0", + "duration": "84.0", "name": "system_health.memory_mobile/browse:media:facebook_photos:2019" }, { - "duration": "55.0", + "duration": "59.0", "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "52.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:media:googleplaystore:2019" }, { - "duration": "76.0", + "duration": "78.0", "name": "system_health.memory_mobile/browse:media:imgur:2019" }, { - "duration": "57.0", + "duration": "58.0", "name": "system_health.memory_mobile/browse:media:tiktok_infinite_scroll:2021" }, { - "duration": "66.0", + "duration": "67.0", "name": "system_health.memory_mobile/browse:media:youtube:2019" }, { @@ -3856,19 +3856,19 @@ "name": "system_health.memory_mobile/browse:news:globo:2019" }, { - "duration": "53.0", + "duration": "64.0", "name": "system_health.memory_mobile/browse:news:nytimes:2019" }, { - "duration": "41.0", + "duration": "51.0", "name": "system_health.memory_mobile/browse:news:qq:2019" }, { - "duration": "68.0", + "duration": "69.0", "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { - "duration": "59.0", + "duration": "54.0", "name": "system_health.memory_mobile/browse:news:toi:2019" }, { @@ -3876,11 +3876,11 @@ "name": "system_health.memory_mobile/browse:news:washingtonpost:2019" }, { - "duration": "34.0", + "duration": "37.0", "name": "system_health.memory_mobile/browse:search:amp:2018" }, { - "duration": "36.0", + "duration": "39.0", "name": "system_health.memory_mobile/browse:search:amp:sxg:2019" }, { @@ -3888,11 +3888,11 @@ "name": "system_health.memory_mobile/browse:shopping:amazon:2019" }, { - "duration": "65.0", + "duration": "64.0", "name": "system_health.memory_mobile/browse:shopping:avito:2019" }, { - "duration": "68.0", + "duration": "64.0", "name": "system_health.memory_mobile/browse:shopping:flipkart:2019" }, { @@ -3904,15 +3904,15 @@ "name": "system_health.memory_mobile/browse:social:facebook:2019" }, { - "duration": "80.0", + "duration": "83.0", "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "88.0", + "duration": "89.0", "name": "system_health.memory_mobile/browse:social:instagram:2019" }, { - "duration": "1.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2021" }, { @@ -3928,23 +3928,23 @@ "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "53.0", + "duration": "56.0", "name": "system_health.memory_mobile/browse:tools:maps:2019" }, { - "duration": "36.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:chrome:blank" }, { - "duration": "32.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:games:bubbles:2020" }, { - "duration": "34.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:games:lazors" }, { - "duration": "37.0", + "duration": "40.0", "name": "system_health.memory_mobile/load:games:spychase:2018" }, { @@ -3952,39 +3952,39 @@ "name": "system_health.memory_mobile/load:media:dailymotion:2019" }, { - "duration": "28.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "30.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:media:facebook_photos:2019" }, { - "duration": "29.0", + "duration": "37.0", "name": "system_health.memory_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "30.0", + "duration": "37.0", "name": "system_health.memory_mobile/load:media:flickr:2018" }, { - "duration": "28.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:media:google_images:2018" }, { - "duration": "29.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:media:imgur:2018" }, { - "duration": "4.0", + "duration": "5.0", "name": "system_health.memory_mobile/load:media:soundcloud:2018" }, { - "duration": "25.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { - "duration": "33.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:news:bbc:2019" }, { @@ -3992,303 +3992,303 @@ "name": "system_health.memory_mobile/load:news:cnn:2020" }, { - "duration": "29.0", + "duration": "37.0", "name": "system_health.memory_mobile/load:news:irctc:2019" }, { - "duration": "36.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:news:nytimes:2019" }, { - "duration": "33.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:news:qq:2019" }, { - "duration": "33.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:news:reddit:2019" }, { - "duration": "26.0", + "duration": "37.0", "name": "system_health.memory_mobile/load:news:washingtonpost:2019" }, { - "duration": "26.0", + "duration": "37.0", "name": "system_health.memory_mobile/load:news:wikipedia:2018" }, { - "duration": "33.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:search:amazon:2019" }, { - "duration": "36.0", + "duration": "37.0", "name": "system_health.memory_mobile/load:search:baidu:2018" }, { - "duration": "33.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:search:ebay:2018" }, { - "duration": "31.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:search:google:2018" }, { - "duration": "34.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:search:naver:2023" }, { - "duration": "32.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:search:taobao:2019" }, { - "duration": "25.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:search:yahoo:2018" }, { - "duration": "25.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:search:yandex:2018" }, { - "duration": "30.0", + "duration": "37.0", "name": "system_health.memory_mobile/load:social:instagram:2019" }, { - "duration": "34.0", + "duration": "37.0", "name": "system_health.memory_mobile/load:social:pinterest:2019" }, { - "duration": "26.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:social:twitter:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/load:tools:docs:2019" }, { - "duration": "33.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:tools:drive:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/load:tools:dropbox:2019" }, { - "duration": "2.0", + "duration": "4.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, { - "duration": "33.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:tools:stackoverflow:2018" }, { - "duration": "25.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:tools:weather:2019" }, { - "duration": "1.0", + "duration": "3.0", "name": "system_health.memory_mobile/long_running:tools:gmail-background" }, { - "duration": "1.0", + "duration": "3.0", "name": "system_health.memory_mobile/long_running:tools:gmail-foreground" }, { - "duration": "30.0", + "duration": "25.0", "name": "system_health.webview_startup/load:chrome:blank" }, { - "duration": "5.0", + "duration": "7.0", "name": "v8.browsing_mobile/browse:chrome:newtab:2019" }, { - "duration": "15.0", + "duration": "23.0", "name": "v8.browsing_mobile/browse:chrome:omnibox:2019" }, { - "duration": "76.0", + "duration": "84.0", "name": "v8.browsing_mobile/browse:media:facebook_photos:2019" }, { - "duration": "53.0", + "duration": "60.0", "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "5.0", + "duration": "7.0", "name": "v8.browsing_mobile/browse:media:googleplaystore:2019" }, { - "duration": "5.0", + "duration": "7.0", "name": "v8.browsing_mobile/browse:media:imgur:2019" }, { - "duration": "52.0", + "duration": "59.0", "name": "v8.browsing_mobile/browse:media:tiktok_infinite_scroll:2021" }, { - "duration": "60.0", + "duration": "67.0", "name": "v8.browsing_mobile/browse:media:youtube:2019" }, { - "duration": "5.0", + "duration": "7.0", "name": "v8.browsing_mobile/browse:news:businessinsider:2021" }, { - "duration": "52.0", + "duration": "58.0", "name": "v8.browsing_mobile/browse:news:cnn:2021" }, { - "duration": "9.0", + "duration": "6.0", "name": "v8.browsing_mobile/browse:news:cricbuzz:2019" }, { - "duration": "56.0", + "duration": "52.0", "name": "v8.browsing_mobile/browse:news:globo:2019" }, { - "duration": "57.0", + "duration": "63.0", "name": "v8.browsing_mobile/browse:news:nytimes:2019" }, { - "duration": "42.0", + "duration": "50.0", "name": "v8.browsing_mobile/browse:news:qq:2019" }, { - "duration": "59.0", + "duration": "66.0", "name": "v8.browsing_mobile/browse:news:reddit:2019" }, { - "duration": "50.0", + "duration": "56.0", "name": "v8.browsing_mobile/browse:news:toi:2019" }, { - "duration": "61.0", + "duration": "67.0", "name": "v8.browsing_mobile/browse:news:washingtonpost:2019" }, { - "duration": "29.0", + "duration": "37.0", "name": "v8.browsing_mobile/browse:search:amp:2018" }, { - "duration": "30.0", + "duration": "38.0", "name": "v8.browsing_mobile/browse:search:amp:sxg:2019" }, { - "duration": "63.0", + "duration": "61.0", "name": "v8.browsing_mobile/browse:shopping:amazon:2019" }, { - "duration": "65.0", + "duration": "58.0", "name": "v8.browsing_mobile/browse:shopping:avito:2019" }, { - "duration": "68.0", + "duration": "62.0", "name": "v8.browsing_mobile/browse:shopping:flipkart:2019" }, { - "duration": "5.0", + "duration": "7.0", "name": "v8.browsing_mobile/browse:shopping:lazada:2019" }, { - "duration": "5.0", + "duration": "7.0", "name": "v8.browsing_mobile/browse:social:facebook:2019" }, { - "duration": "76.0", + "duration": "84.0", "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "5.0", + "duration": "7.0", "name": "v8.browsing_mobile/browse:social:instagram:2019" }, { - "duration": "5.0", + "duration": "7.0", "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll:2021" }, { - "duration": "68.0", + "duration": "76.0", "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "84.0", + "duration": "92.0", "name": "v8.browsing_mobile/browse:social:twitter:2019" }, { - "duration": "5.0", + "duration": "7.0", "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "47.0", + "duration": "55.0", "name": "v8.browsing_mobile/browse:tools:maps:2019" }, { - "duration": "77.0", + "duration": "91.0", "name": "wasmpspdfkit/https://pspdfkit.com/webassembly-benchmark/" }, { - "duration": "1.0", + "duration": "2.0", "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "21.0", + "duration": "26.0", "name": "webrtc/canvas_capture_peer_connection" }, { - "duration": "31.0", + "duration": "36.0", "name": "webrtc/codec_constraints_h264" }, { - "duration": "31.0", + "duration": "36.0", "name": "webrtc/codec_constraints_vp8" }, { - "duration": "31.0", + "duration": "37.0", "name": "webrtc/codec_constraints_vp9" }, { - "duration": "31.0", + "duration": "36.0", "name": "webrtc/encoded_insertable_streams" }, { - "duration": "21.0", + "duration": "26.0", "name": "webrtc/hd_local_stream_10s" }, { - "duration": "1.0", + "duration": "2.0", "name": "webrtc/insertable_streams_audio_processing" }, { - "duration": "1.0", + "duration": "2.0", "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" }, { - "duration": "1.0", + "duration": "2.0", "name": "webrtc/insertable_streams_video_processing_camera_noop_video" }, { - "duration": "1.0", + "duration": "2.0", "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" }, { - "duration": "1.0", + "duration": "2.0", "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" }, { - "duration": "1.0", + "duration": "2.0", "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" }, { - "duration": "1.0", + "duration": "2.0", "name": "webrtc/insertable_streams_video_processing_video_webgl_video" }, { - "duration": "31.0", + "duration": "36.0", "name": "webrtc/multiple_peerconnections" }, { - "duration": "1.0", + "duration": "2.0", "name": "webrtc/negotiate-timing" }, { - "duration": "32.0", + "duration": "37.0", "name": "webrtc/pause_play_peerconnections" } ]
diff --git a/tools/rust/build_crubit.py b/tools/rust/build_crubit.py index bd6f912..5330d1f 100755 --- a/tools/rust/build_crubit.py +++ b/tools/rust/build_crubit.py
@@ -4,22 +4,28 @@ # found in the LICENSE file. '''Builds the Crubit tool. -!!! DO NOT USE IN PRODUCTION -Builds the Crubit tool (an experiment for Rust/C++ FFI bindings generation). +Builds the Crubit tools for generating Rust/C++ bindings. -This script clones the Crubit repository, checks it out to a defined revision, -and then uses Bazel to build Crubit. +This script must be run after //tools/rust/build_rust.py as it uses the outputs +of that script in the compilation of Crubit. It uses: +- The LLVM and Clang libraries and headers in `RUST_HOST_LLVM_INSTALL_DIR`. +- The rust toolchain binaries and libraries in `RUST_TOOLCHAIN_OUT_DIR`. + +This script: +- Clones the Abseil repository, checks out a defined revision. +- Builds Abseil with Cmake. +- Clones the Crubit repository, checks out a defined revision. +- Builds Crubit's rs_bindings_from_cc with Cargo. +- Adds rs_bindings_from_cc and the Crubit support libraries into the + toolchain package in `RUST_TOOLCHAIN_OUT_DIR`. + +The cc_bindings_from_rs binary is not yet built, as there's no Cargo rules to build it yet. ''' import argparse -import collections -import hashlib import os import platform import shutil -import stat -import string -import subprocess import sys from pathlib import Path @@ -29,186 +35,177 @@ os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'clang', 'scripts')) -from update import (CLANG_REVISION, CLANG_SUB_REVISION, LLVM_BUILD_DIR) -from build import (LLVM_BOOTSTRAP_INSTALL_DIR, DownloadDebianSysroot) +from build import (AddCMakeToPath, AddZlibToPath, CheckoutGitRepo, + DownloadDebianSysroot, RunCommand, THIRD_PARTY_DIR) +from update import (RmTree) -from update_rust import (CHROMIUM_DIR, CRUBIT_REVISION, THIRD_PARTY_DIR) +from build_rust import (RUST_HOST_LLVM_INSTALL_DIR) +from update_rust import (CHROMIUM_DIR, ABSL_REVISION, CRUBIT_REVISION, + RUST_TOOLCHAIN_OUT_DIR) -BAZEL_DIR = os.path.join(CHROMIUM_DIR, 'tools', 'bazel') -CRUBIT_SRC_DIR = os.path.join(THIRD_PARTY_DIR, 'crubit', 'src') +ABSL_GIT = 'https://github.com/abseil/abseil-cpp' +CRUBIT_GIT = 'https://github.com/google/crubit' + +ABSL_SRC_DIR = os.path.join(CHROMIUM_DIR, 'third_party', + 'rust-toolchain-intermediate', 'absl') +ABSL_INSTALL_DIR = os.path.join(ABSL_SRC_DIR, 'install') +CRUBIT_SRC_DIR = os.path.join(CHROMIUM_DIR, 'third_party', + 'rust-toolchain-intermediate', 'crubit') + +EXE = '.exe' if sys.platform == 'win32' else '' -def BazelExe(): - if sys.platform == 'darwin': - if platform.machine() == 'arm64': - return os.path.join(BAZEL_DIR, 'mac-arm64', 'bazel') - else: - return os.path.join(BAZEL_DIR, 'mac-amd64', 'bazel') - elif sys.platform == 'win32': - return os.path.join(BAZEL_DIR, 'windows-amd64', 'bazel.exe') - else: - return os.path.join(BAZEL_DIR, 'linux-amd64', 'bazel') +def BuildAbsl(env, debug): + os.chdir(ABSL_SRC_DIR) - -def RunCommand(command, env=None, cwd=None, fail_hard=True): - print('Running', command) - if subprocess.run(command, env=env, cwd=cwd, - shell=sys.platform == 'win32').returncode == 0: - return True - print('Failed.') - if fail_hard: - raise RuntimeError(f"Failed to run {command}") - return False - - -def CheckoutCrubit(commit, dir): - """Checkout the Crubit repo at a certain git commit in dir. Any local - modifications in dir will be lost.""" - - print('Checking out crubit repo %s into %s' % (commit, dir)) - - # Try updating the current repo if it exists and has no local diff. - if os.path.isdir(dir): - os.chdir(dir) - # git diff-index --quiet returns success when there is no diff. - # Also check that the first commit is reachable. - if (RunCommand(['git', 'diff-index', '--quiet', 'HEAD'], - fail_hard=False) - and RunCommand(['git', 'fetch'], fail_hard=False) - and RunCommand(['git', 'checkout', commit], fail_hard=False)): - return - - # If we can't use the current repo, delete it. - os.chdir(CHROMIUM_DIR) # Can't remove dir if we're in it. - print('Removing %s.' % dir) - RmTree(dir) - - clone_cmd = ['git', 'clone', 'https://github.com/google/crubit.git', dir] - - if RunCommand(clone_cmd, fail_hard=False): - os.chdir(dir) - if RunCommand(['git', 'checkout', commit], fail_hard=False): - return - - print('CheckoutCrubit failed.') - sys.exit(1) - - -def BuildCrubit(): - # TODO(crbug.com/40229251): Use locally built Rust instead of having - # Bazel always download the whole Rust toolchain from the internet. - - # This environment variable is consumed by crubit/bazel/llvm.bzl and will - # configure Crubit's build to include and link against LLVM+Clang headers - # and libraries built when building Chromium toolchain. (Instead of - # downloading LLVM+Clang and building it during Crubit build.) - env = {"LLVM_INSTALL_PATH": LLVM_BOOTSTRAP_INSTALL_DIR} - - # Use the compiler and linker from `LLVM_BUILD_DIR`. - # - # Note that we use `bin/clang` from `LLVM_BUILD_DIR`, but depend on headers - # and libraries from `LLVM_BOOTSTRAP_INSTALL_DIR`. The former helps ensure - # that we use the same compiler as the final one used elsewhere in Chromium. - # The latter is needed, because the headers+libraries are not available - # anywhere else. - clang_path = os.path.join(LLVM_BUILD_DIR, "bin", "clang") - env["CXX"] = f"{clang_path}++" - env["LD"] = f"{clang_path}++" - # CC is set via `--repo_env` rather than via `env` to ensure that we - # override the defaults from `crubit/.bazelrc`. - extra_args = [ - "--repo_env=CC=", # Unset/ignore the value set via crubit/.bazelrc - f"--repo_env=CC={clang_path}", + configure_cmd = [ + 'cmake', + '-B', + 'out', + '-GNinja', + # Because Crubit is built with C++20. + '-DCMAKE_CXX_STANDARD=20', + f'-DCMAKE_INSTALL_PREFIX={ABSL_INSTALL_DIR}', + '-DABSL_PROPAGATE_CXX_STD=ON', + '-DABSL_BUILD_TESTING=OFF', + '-DABSL_USE_GOOGLETEST_HEAD=OFF', + # LLVM is built with static CRT. Make Abseil match it. + '-DABSL_MSVC_STATIC_RUNTIME=ON', ] + if not debug: + configure_cmd.append('-DCMAKE_BUILD_TYPE=Release') - if sys.platform.startswith('linux'): - # Include and link against the C++ stdlib from the sysroot. - sysroot = DownloadDebianSysroot('amd64') - sysroot_flag = (f'--sysroot={sysroot}' if sysroot else '') - env["BAZEL_CXXOPTS"] = sysroot_flag - env["BAZEL_LINKOPTS"] = f"{sysroot_flag}:-static-libstdc++" - env["BAZEL_LINKLIBS"] = f"-lm" + RunCommand(configure_cmd, setenv=True, env=env) + build_cmd = ['cmake', '--build', 'out', '--target', 'all'] + RunCommand(build_cmd, setenv=True, env=env) + install_cmd = ['cmake', '--install', 'out'] + RunCommand(install_cmd, setenv=True, env=env) - # Run bazel build ... - args = [ - BazelExe(), "build", "rs_bindings_from_cc:rs_bindings_from_cc_impl" - ] - RunCommand(args + extra_args, env=env, cwd=CRUBIT_SRC_DIR) + os.chdir(CHROMIUM_DIR) -def InstallCrubit(install_dir): - assert os.path.isdir(install_dir) +def BuildCrubit(env, debug): + os.chdir(CRUBIT_SRC_DIR) - print('Installing crubit binaries to %s' % install_dir) + CRUBIT_BINS = ['rs_bindings_from_cc'] - BAZEL_BIN_DIR = os.path.join(CRUBIT_SRC_DIR, "bazel-bin") - SOURCE_PATH = os.path.join(BAZEL_BIN_DIR, "rs_bindings_from_cc", - "rs_bindings_from_cc_impl") - TARGET_PATH = os.path.join(install_dir, "rs_bindings_from_cc") - shutil.copyfile(SOURCE_PATH, TARGET_PATH) + build_cmd = ['cargo', 'build'] + for bin in CRUBIT_BINS: + build_cmd += ['--bin', bin] + if not debug: + build_cmd.append('--release') + RunCommand(build_cmd, setenv=True, env=env) - # Change from r-xr-xr-x to rwxrwxr-x, so that future copies will work fine. - os.chmod(TARGET_PATH, - stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH | stat.S_IXOTH) + print(f'Installing Crubit to {RUST_TOOLCHAIN_OUT_DIR} ...') + target_dir = os.path.join(CRUBIT_SRC_DIR, 'target', + 'debug' if debug else 'release') + for bin in CRUBIT_BINS: + bin = bin + EXE + shutil.copy(os.path.join(target_dir, bin), + os.path.join(RUST_TOOLCHAIN_OUT_DIR, 'bin', bin)) + support_build_dir = os.path.join(CRUBIT_SRC_DIR, 'support') + support_out_dir = os.path.join(RUST_TOOLCHAIN_OUT_DIR, 'lib', 'crubit') + if os.path.exists(support_out_dir): + RmTree(support_out_dir) + shutil.copytree(support_build_dir, support_out_dir) -def CleanBazel(): - RunCommand([BazelExe(), "clean", "--expunge"], cwd=CRUBIT_SRC_DIR) - - -def ShutdownBazel(): - RunCommand([BazelExe(), "shutdown"], cwd=CRUBIT_SRC_DIR) - - -def WritableDir(d): - """ Utility function to use as `argparse` `type` to verify that the argument - is a writeable dir (and resolve it as an absolute path). """ - - try: - real_d = os.path.realpath(d) - except Exception as e: - raise ArgumentTypeError(f"realpath failed: {e}") - if not os.path.isdir(real_d): - raise ArgumentTypeError(f"Not a directory: {d}") - if not os.access(real_d, os.W_OK): - raise ArgumentTypeError(f"Cannot write to: {d}") - return real_d + os.chdir(CHROMIUM_DIR) def main(): parser = argparse.ArgumentParser( description='Build and package Crubit tools') - parser.add_argument('-v', - '--verbose', - action='count', - help='run subcommands with verbosity') - parser.add_argument( - '--install-to', - type=WritableDir, - help='skip Crubit git checkout. Useful for trying local changes') - parser.add_argument( - '--skip-clean', - action='store_true', - help='skip cleanup. Useful for retrying/rebuilding local changes') parser.add_argument( '--skip-checkout', action='store_true', - help='skip Crubit git checkout. Useful for trying local changes') + help=('skip checking out source code. Useful for trying local' + 'changes')) + parser.add_argument('--debug', + action='store_true', + help=('build Crubit in debug mode')) args, rest = parser.parse_known_args() + assert (not rest) if not args.skip_checkout: - CheckoutCrubit(CRUBIT_REVISION, CRUBIT_SRC_DIR) + CheckoutGitRepo("absl", ABSL_GIT, ABSL_REVISION, ABSL_SRC_DIR) + CheckoutGitRepo("crubit", CRUBIT_GIT, CRUBIT_REVISION, CRUBIT_SRC_DIR) + if sys.platform.startswith('linux'): + arch = 'arm64' if platform.machine() == 'aarch64' else 'amd64' + sysroot = DownloadDebianSysroot(arch, args.skip_checkout) - try: - if not args.skip_clean: - CleanBazel() + llvm_bin_dir = os.path.join(RUST_HOST_LLVM_INSTALL_DIR, 'bin') + rust_bin_dir = os.path.join(RUST_TOOLCHAIN_OUT_DIR, 'bin') - BuildCrubit() + AddCMakeToPath() - if args.install_to: - InstallCrubit(args.install_to) - finally: - ShutdownBazel() + env = os.environ + + path_trailing_sep = os.pathsep if env['PATH'] else '' + env['PATH'] = (f'{llvm_bin_dir}{os.pathsep}' + f'{rust_bin_dir}{path_trailing_sep}' + f'{env["PATH"]}') + + if sys.platform == 'win32': + # CMake on Windows doesn't like depot_tools's ninja.bat wrapper. + ninja_dir = os.path.join(THIRD_PARTY_DIR, 'ninja') + env['PATH'] = f'{ninja_dir}{os.pathsep}{env["PATH"]}' + + env['CXXFLAGS'] = '' + env['RUSTFLAGS'] = '' + + if sys.platform == 'win32': + env['CC'] = 'clang-cl' + env['CXX'] = 'clang-cl' + else: + env['CC'] = 'clang' + env['CXX'] = 'clang++' + + # We link with lld via clang, except on windows where we point to lld-link + # directly. + if sys.platform == 'win32': + env['RUSTFLAGS'] += f' -Clinker=lld-link' + else: + env['RUSTFLAGS'] += f' -Clinker=clang' + env['RUSTFLAGS'] += f' -Clink-arg=-fuse-ld=lld' + + if sys.platform == 'win32': + # LLVM is built with static CRT. Make Rust match it. + env['RUSTFLAGS'] += f' -Ctarget-feature=+crt-static' + + if sys.platform.startswith('linux'): + sysroot_flag = (f'--sysroot={sysroot}' if sysroot else '') + env['CXXFLAGS'] += f" {sysroot_flag}" + env['RUSTFLAGS'] += f" -Clink-arg={sysroot_flag}" + + if sys.platform == 'darwin': + import subprocess + # The system/xcode compiler would find system SDK correctly, but + # the Clang we've built does not. See + # https://github.com/llvm/llvm-project/issues/45225 + sdk_path = subprocess.check_output(['xcrun', '--show-sdk-path'], + text=True).rstrip() + env['CXXFLAGS'] += f' -isysroot {sdk_path}' + env['RUSTFLAGS'] += f' -Clink-arg=-isysroot -Clink-arg={sdk_path}' + + if sys.platform == 'win32': + # LLVM depends on Zlib. + zlib_dir = AddZlibToPath(dry_run=args.skip_checkout) + env['CXXFLAGS'] += f' /I{zlib_dir}' + env['RUSTFLAGS'] += f' -Clink-arg=/LIBPATH:{zlib_dir}' + # Prevent deprecation warnings. + env['CXXFLAGS'] += ' /D_CRT_SECURE_NO_DEPRECATE' + + BuildAbsl(env, args.debug) + + env['ABSL_INCLUDE_PATH'] = os.path.join(ABSL_INSTALL_DIR, 'include') + env['ABSL_LIB_STATIC_PATH'] = os.path.join(ABSL_INSTALL_DIR, 'lib') + env['CLANG_INCLUDE_PATH'] = os.path.join(RUST_HOST_LLVM_INSTALL_DIR, + 'include') + env['CLANG_LIB_STATIC_PATH'] = os.path.join(RUST_HOST_LLVM_INSTALL_DIR, + 'lib') + + BuildCrubit(env, args.debug) return 0
diff --git a/tools/rust/package_rust.py b/tools/rust/package_rust.py index b8a8da54..6eb8b84 100755 --- a/tools/rust/package_rust.py +++ b/tools/rust/package_rust.py
@@ -26,25 +26,6 @@ RUST_TOOLCHAIN_PACKAGE_NAME = f'rust-toolchain-{PACKAGE_VERSION}.tar.xz' -# TODO(crbug.com/40226863): Use this function (after integrating Crubit -# into Chromium; this work is on hold right now - see also -# https://crbug.com/1510943#c2). -def BuildCrubit(): - with open(os.path.join(THIRD_PARTY_DIR, BUILDLOG_NAME), - 'w', - encoding='utf-8') as log: - build_cmd = [sys.executable, os.path.join(THIS_DIR, 'build_crubit.py')] - # TODO(crbug.com/40226863): Default to `fail_hard` once we - # actually depend on the build step (i.e. once we start packaging - # Crubit). - TeeCmd(build_cmd, log, fail_hard=False) - - # TODO(crbug.com/40226863): Rename this function to - # BuildAndInstallCrubit and actually install Crubit binaries into - # RUST_TOOLCHAIN_OUT_DIR/bin (once we gain confidence that Crubit continues - # to build uneventfully on the bots). - - def main(): parser = argparse.ArgumentParser(description='build and package Rust') parser.add_argument('--upload', @@ -90,6 +71,12 @@ build_cmd = [sys.executable, os.path.join(THIS_DIR, 'build_vet.py')] TeeCmd(build_cmd, log) + # Build Crubit. + build_cmd = [sys.executable, os.path.join(THIS_DIR, 'build_crubit.py')] + # TODO: crbug.com/40226863 - Remove `fail_hard=False` once we can depend + # on the OSS Crubit build staying green with latest Rust and Clang. + TeeCmd(build_cmd, log, fail_hard=False) + # Strip everything in bin/ to reduce the package size. bin_dir_path = os.path.join(RUST_TOOLCHAIN_OUT_DIR, 'bin') if sys.platform != 'win32' and os.path.exists(bin_dir_path):
diff --git a/tools/rust/update_rust.py b/tools/rust/update_rust.py index 64b9e8ec..cb78d2dc 100755 --- a/tools/rust/update_rust.py +++ b/tools/rust/update_rust.py
@@ -32,18 +32,16 @@ # These fields are written by //tools/clang/scripts/upload_revision.py, and # should not be changed manually. RUST_REVISION = '009e73825af0e59ad4fc603562e038b3dbd6593a' -RUST_SUB_REVISION = 22 +RUST_SUB_REVISION = 23 -# Trunk on 2022-10-15. +# The revision of Crubit to use from https://github.com/google/crubit # -# The revision specified below should typically be the same as the -# `crubit_revision` specified in the //DEPS file. More details and roll -# instructions can be found in tools/rust/README.md. -# -# TODO(danakj): This should be included in --print-rust-revision when we want -# code to depend on using crubit rs_to_cc_bindings. -CRUBIT_REVISION = 'f5cbdf4b54b0e6b9f63a4464a2c901c82e0f0209' -CRUBIT_SUB_REVISION = 1 +# If changing the CRUBIT_REVISION but not the RUST_REVISION, bump the +# RUST_SUB_REVISION to generate a unique package name. +CRUBIT_REVISION = 'fa6caca0969c9d1dec584186eb85ebdd0fe02955' +# The Absl revision used for building Crubit. Can be bumped to the latest when +# rolling Crubit. There's no reason to change this if not rolling Crubit. +ABSL_REVISION = 'ba5fd0979b4e74bd4d1b8da1d84347173bd9f17f' # Hash of src/stage0.json, which itself contains the stage0 toolchain hashes. # We trust the Rust build system checks, but to ensure it is not tampered with
diff --git a/tools/search_engine_choice/OWNERS b/tools/search_engine_choice/OWNERS index a8ff91d..c7aa42b 100644 --- a/tools/search_engine_choice/OWNERS +++ b/tools/search_engine_choice/OWNERS
@@ -1 +1 @@ -file://components/search_engines/search_engine_choice/OWNERS +file://components/search_engines/search_engine_choice/COMPLIANCE_OWNERS
diff --git a/ui/accessibility/BUILD.gn b/ui/accessibility/BUILD.gn index d1ab3de8..451b022d 100644 --- a/ui/accessibility/BUILD.gn +++ b/ui/accessibility/BUILD.gn
@@ -72,6 +72,8 @@ "ax_event.h", "ax_event_intent.cc", "ax_event_intent.h", + "ax_location_and_scroll_updates.cc", + "ax_location_and_scroll_updates.h", "ax_mode.cc", "ax_mode.h", "ax_mode_histogram_logger.cc", @@ -317,7 +319,7 @@ "mojom/ax_action_data_mojom_traits_unittest.cc", "mojom/ax_event_intent_mojom_traits_unittest.cc", "mojom/ax_event_mojom_traits_unittest.cc", - "mojom/ax_location_changes_mojom_traits_unittest.cc", + "mojom/ax_location_and_scroll_updates_mojom_traits_unittest.cc", "mojom/ax_mode_mojom_traits_unittest.cc", "mojom/ax_node_data_mojom_traits_unittest.cc", "mojom/ax_relative_bounds_mojom_traits_unittest.cc",
diff --git a/ui/accessibility/ax_location_and_scroll_updates.cc b/ui/accessibility/ax_location_and_scroll_updates.cc new file mode 100644 index 0000000..1d0f958 --- /dev/null +++ b/ui/accessibility/ax_location_and_scroll_updates.cc
@@ -0,0 +1,35 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/accessibility/ax_location_and_scroll_updates.h" + +#include "ui/accessibility/ax_relative_bounds.h" + +namespace ui { +AXLocationChange::AXLocationChange(int id, AXRelativeBounds& bounds) + : id(id), new_location(bounds) {} +AXLocationChange::AXLocationChange(AXLocationChange&& other) = default; +AXLocationChange& AXLocationChange::operator=(AXLocationChange&& other) = + default; +AXLocationChange::AXLocationChange(const AXLocationChange& other) = default; +AXLocationChange& AXLocationChange::operator=(const AXLocationChange& other) = + default; +AXLocationChange::~AXLocationChange() = default; + +AXScrollChange::AXScrollChange(int id, int x, int y) + : id(id), scroll_x(x), scroll_y(y) {} +AXScrollChange::AXScrollChange(AXScrollChange&& other) = default; +AXScrollChange& AXScrollChange::operator=(AXScrollChange&& other) = default; +AXScrollChange::AXScrollChange(const AXScrollChange& other) = default; +AXScrollChange& AXScrollChange::operator=(const AXScrollChange& other) = + default; +AXScrollChange::~AXScrollChange() = default; + +AXLocationAndScrollUpdates::AXLocationAndScrollUpdates() = default; +AXLocationAndScrollUpdates::AXLocationAndScrollUpdates( + AXLocationAndScrollUpdates&& other) = default; +AXLocationAndScrollUpdates& AXLocationAndScrollUpdates::operator=( + AXLocationAndScrollUpdates&& other) = default; +AXLocationAndScrollUpdates::~AXLocationAndScrollUpdates() = default; +} // namespace ui
diff --git a/ui/accessibility/ax_location_and_scroll_updates.h b/ui/accessibility/ax_location_and_scroll_updates.h new file mode 100644 index 0000000..d402cd8 --- /dev/null +++ b/ui/accessibility/ax_location_and_scroll_updates.h
@@ -0,0 +1,64 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_ACCESSIBILITY_AX_LOCATION_AND_SCROLL_UPDATES_H_ +#define UI_ACCESSIBILITY_AX_LOCATION_AND_SCROLL_UPDATES_H_ + +#include "ui/accessibility/ax_base_export.h" +#include "ui/accessibility/ax_relative_bounds.h" +namespace ui { +struct AX_BASE_EXPORT AXLocationChange { + public: + AXLocationChange() = default; + AXLocationChange(int id, AXRelativeBounds& bounds); + + AXLocationChange(const AXLocationChange& other); + AXLocationChange& operator=(const AXLocationChange& other); + + AXLocationChange(AXLocationChange&& other); + AXLocationChange& operator=(AXLocationChange&& other); + + ~AXLocationChange(); + + int id; + AXRelativeBounds new_location; +}; + +struct AX_BASE_EXPORT AXScrollChange { + public: + AXScrollChange() = default; + AXScrollChange(int id, int x, int y); + + AXScrollChange(const AXScrollChange& other); + AXScrollChange& operator=(const AXScrollChange& other); + + AXScrollChange(AXScrollChange&& other); + AXScrollChange& operator=(AXScrollChange&& other); + + ~AXScrollChange(); + + int id; + int scroll_x; + int scroll_y; +}; + +struct AX_BASE_EXPORT AXLocationAndScrollUpdates { + public: + AXLocationAndScrollUpdates(); + + AXLocationAndScrollUpdates(const AXLocationAndScrollUpdates& other) = delete; + AXLocationAndScrollUpdates& operator=( + const AXLocationAndScrollUpdates& other) = delete; + + AXLocationAndScrollUpdates(AXLocationAndScrollUpdates&& other); + AXLocationAndScrollUpdates& operator=(AXLocationAndScrollUpdates&& other); + + ~AXLocationAndScrollUpdates(); + + std::vector<AXLocationChange> location_changes; + std::vector<AXScrollChange> scroll_changes; +}; +} // namespace ui + +#endif // UI_ACCESSIBILITY_AX_LOCATION_AND_SCROLL_UPDATES_H_
diff --git a/ui/accessibility/ax_node.cc b/ui/accessibility/ax_node.cc index fe9364b..ff1a2f6 100644 --- a/ui/accessibility/ax_node.cc +++ b/ui/accessibility/ax_node.cc
@@ -781,6 +781,16 @@ } } +void AXNode::SetScrollInfo(const int& scroll_x, const int& scroll_y) { + data_.AddIntAttribute(ax::mojom::IntAttribute::kScrollX, scroll_x); + data_.AddIntAttribute(ax::mojom::IntAttribute::kScrollY, scroll_y); +} + +void AXNode::GetScrollInfo(int* scroll_x, int* scroll_y) const { + *scroll_x = GetIntAttribute(ax::mojom::IntAttribute::kScrollX); + *scroll_y = GetIntAttribute(ax::mojom::IntAttribute::kScrollY); +} + void AXNode::SetIndexInParent(size_t index_in_parent) { index_in_parent_ = index_in_parent; }
diff --git a/ui/accessibility/ax_node.h b/ui/accessibility/ax_node.h index 5495f6e1..fd61512 100644 --- a/ui/accessibility/ax_node.h +++ b/ui/accessibility/ax_node.h
@@ -270,6 +270,12 @@ const gfx::RectF& location, gfx::Transform* transform); + // Update this node's scroll x and y. This is separate from |SetData| just + // because changing only the scroll info is common and should be more + // efficient than re-copying all of the data. + void SetScrollInfo(const int& scroll_x, const int& scroll_y); + void GetScrollInfo(int* scroll_x, int* scroll_y) const; + // Set the index in parent, for example if siblings were inserted or deleted. void SetIndexInParent(size_t index_in_parent);
diff --git a/ui/accessibility/ax_updates_and_events.cc b/ui/accessibility/ax_updates_and_events.cc index 7c91df9..95c876b 100644 --- a/ui/accessibility/ax_updates_and_events.cc +++ b/ui/accessibility/ax_updates_and_events.cc
@@ -16,11 +16,4 @@ AXUpdatesAndEvents::~AXUpdatesAndEvents() = default; -AXLocationChanges::AXLocationChanges() - : id(-1), ax_tree_id(AXTreeIDUnknown()) {} - -AXLocationChanges::AXLocationChanges(const AXLocationChanges& other) = default; - -AXLocationChanges::~AXLocationChanges() {} - } // namespace ui
diff --git a/ui/accessibility/ax_updates_and_events.h b/ui/accessibility/ax_updates_and_events.h index 072a81a3..fe6c02887 100644 --- a/ui/accessibility/ax_updates_and_events.h +++ b/ui/accessibility/ax_updates_and_events.h
@@ -39,18 +39,6 @@ std::vector<AXEvent> events; }; -struct AX_BASE_EXPORT AXLocationChanges { - public: - AXLocationChanges(); - AXLocationChanges( - const AXLocationChanges& other); - ~AXLocationChanges(); - - int id; - AXTreeID ax_tree_id; - AXRelativeBounds new_location; -}; - } // namespace ui #endif // UI_ACCESSIBILITY_AX_UPDATES_AND_EVENTS_H_
diff --git a/ui/accessibility/mojom/BUILD.gn b/ui/accessibility/mojom/BUILD.gn index 3cbe17a8..8d305e8 100644 --- a/ui/accessibility/mojom/BUILD.gn +++ b/ui/accessibility/mojom/BUILD.gn
@@ -10,7 +10,7 @@ "ax_action_data.mojom", "ax_event.mojom", "ax_event_intent.mojom", - "ax_location_changes.mojom", + "ax_location_and_scroll_updates.mojom", "ax_mode.mojom", "ax_node_data.mojom", "ax_relative_bounds.mojom", @@ -88,12 +88,26 @@ { types = [ { - mojom = "ax.mojom.AXLocationChanges" - cpp = "::ui::AXLocationChanges" + mojom = "ax.mojom.AXLocationChange" + cpp = "::ui::AXLocationChange" + }, + { + mojom = "ax.mojom.AXScrollChange" + cpp = "::ui::AXScrollChange" + }, + { + mojom = "ax.mojom.AXLocationAndScrollUpdates" + cpp = "::ui::AXLocationAndScrollUpdates" + + # This is necessary to avoid expensive copies after this data is + # created and passed around. Subsequent methods of the data can + # choose to apply const if appropriate. We avoid use move_only here + # because it requires the caller copy when passing to the mojo pipe. + non_const_ref = true }, ] - traits_sources = [ "ax_location_changes_mojom_traits.cc" ] - traits_headers = [ "ax_location_changes_mojom_traits.h" ] + traits_sources = [ "ax_location_and_scroll_updates_mojom_traits.cc" ] + traits_headers = [ "ax_location_and_scroll_updates_mojom_traits.h" ] traits_public_deps = [ "//ui/accessibility:ax_base" ] }, {
diff --git a/ui/accessibility/mojom/ax_location_and_scroll_updates.mojom b/ui/accessibility/mojom/ax_location_and_scroll_updates.mojom new file mode 100644 index 0000000..ef1b7dc2 --- /dev/null +++ b/ui/accessibility/mojom/ax_location_and_scroll_updates.mojom
@@ -0,0 +1,30 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module ax.mojom; + +import "ui/accessibility/mojom/ax_relative_bounds.mojom"; +import "ui/accessibility/mojom/ax_tree_id.mojom"; + +struct AXLocationChange { + // ID of the object whose location is changing. + int32 id; + + // The object's new location info. + ax.mojom.AXRelativeBounds new_location; +}; + +struct AXScrollChange { + // ID of the object whose scroll position is changing. + int32 id; + + // The object's new scroll info + int32 scroll_x; + int32 scroll_y; +}; + +struct AXLocationAndScrollUpdates { + array<AXLocationChange> location_changes; + array<AXScrollChange> scroll_changes; +};
diff --git a/ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits.cc b/ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits.cc new file mode 100644 index 0000000..1c97f29a --- /dev/null +++ b/ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits.cc
@@ -0,0 +1,46 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits.h" + +#include "ui/accessibility/ax_location_and_scroll_updates.h" +#include "ui/accessibility/mojom/ax_location_and_scroll_updates.mojom-shared.h" +#include "ui/accessibility/mojom/ax_relative_bounds_mojom_traits.h" +#include "ui/accessibility/mojom/ax_tree_update_mojom_traits.h" + +namespace mojo { + +// static +bool StructTraits<ax::mojom::AXLocationChangeDataView, ui::AXLocationChange>:: + Read(ax::mojom::AXLocationChangeDataView data, ui::AXLocationChange* out) { + out->id = data.id(); + if (!data.ReadNewLocation(&out->new_location)) { + return false; + } + return true; +} + +bool StructTraits<ax::mojom::AXScrollChangeDataView, ui::AXScrollChange>::Read( + ax::mojom::AXScrollChangeDataView data, + ui::AXScrollChange* out) { + out->id = data.id(); + out->scroll_x = data.scroll_x(); + out->scroll_y = data.scroll_y(); + return true; +} + +bool StructTraits<ax::mojom::AXLocationAndScrollUpdatesDataView, + ui::AXLocationAndScrollUpdates>:: + Read(ax::mojom::AXLocationAndScrollUpdatesDataView data, + ui::AXLocationAndScrollUpdates* out) { + if (!data.ReadLocationChanges(&out->location_changes)) { + return false; + } + if (!data.ReadScrollChanges(&out->scroll_changes)) { + return false; + } + return true; +} + +} // namespace mojo
diff --git a/ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits.h b/ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits.h new file mode 100644 index 0000000..cef2ee5 --- /dev/null +++ b/ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits.h
@@ -0,0 +1,51 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_ACCESSIBILITY_MOJOM_AX_LOCATION_AND_SCROLL_UPDATES_MOJOM_TRAITS_H_ +#define UI_ACCESSIBILITY_MOJOM_AX_LOCATION_AND_SCROLL_UPDATES_MOJOM_TRAITS_H_ + +#include "ui/accessibility/ax_location_and_scroll_updates.h" +#include "ui/accessibility/ax_updates_and_events.h" +#include "ui/accessibility/mojom/ax_location_and_scroll_updates.mojom-shared.h" + +namespace mojo { + +template <> +struct StructTraits<ax::mojom::AXLocationChangeDataView, ui::AXLocationChange> { + static int32_t id(const ui::AXLocationChange& p) { return p.id; } + static const ui::AXRelativeBounds& new_location( + const ui::AXLocationChange& p) { + return p.new_location; + } + static bool Read(ax::mojom::AXLocationChangeDataView data, + ui::AXLocationChange* out); +}; + +template <> +struct StructTraits<ax::mojom::AXScrollChangeDataView, ui::AXScrollChange> { + static int32_t id(const ui::AXScrollChange& p) { return p.id; } + static int32_t scroll_x(const ui::AXScrollChange& p) { return p.scroll_x; } + static int32_t scroll_y(const ui::AXScrollChange& p) { return p.scroll_y; } + static bool Read(ax::mojom::AXScrollChangeDataView data, + ui::AXScrollChange* out); +}; + +template <> +struct StructTraits<ax::mojom::AXLocationAndScrollUpdatesDataView, + ui::AXLocationAndScrollUpdates> { + static const std::vector<ui::AXLocationChange>& location_changes( + const ui::AXLocationAndScrollUpdates& p) { + return p.location_changes; + } + static const std::vector<ui::AXScrollChange>& scroll_changes( + const ui::AXLocationAndScrollUpdates& p) { + return p.scroll_changes; + } + static bool Read(ax::mojom::AXLocationAndScrollUpdatesDataView data, + ui::AXLocationAndScrollUpdates* out); +}; + +} // namespace mojo + +#endif // UI_ACCESSIBILITY_MOJOM_AX_LOCATION_AND_SCROLL_UPDATES_MOJOM_TRAITS_H_
diff --git a/ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits_unittest.cc b/ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits_unittest.cc new file mode 100644 index 0000000..e17dce2 --- /dev/null +++ b/ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits_unittest.cc
@@ -0,0 +1,44 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/accessibility/mojom/ax_location_and_scroll_updates_mojom_traits.h" + +#include "mojo/public/cpp/test_support/test_utils.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" +#include "ui/accessibility/ax_updates_and_events.h" +#include "ui/accessibility/mojom/ax_location_and_scroll_updates.mojom.h" + +using mojo::test::SerializeAndDeserialize; + +TEST(AXLocationAndScrollUpdatesMojomTraitsTest, LocationChangeRoundTrip) { + ui::AXRelativeBounds input_bounds; + input_bounds.offset_container_id = 111; + input_bounds.bounds = gfx::RectF(1, 2, 3, 4); + input_bounds.transform = std::make_unique<gfx::Transform>(); + input_bounds.transform->Scale(1.0, 2.0); + ui::AXLocationChange input(1, input_bounds); + + ui::AXLocationChange output; + EXPECT_TRUE( + SerializeAndDeserialize<ax::mojom::AXLocationChange>(input, output)); + EXPECT_EQ(1, output.id); + EXPECT_EQ(111, output.new_location.offset_container_id); + EXPECT_EQ(1, output.new_location.bounds.x()); + EXPECT_EQ(2, output.new_location.bounds.y()); + EXPECT_EQ(3, output.new_location.bounds.width()); + EXPECT_EQ(4, output.new_location.bounds.height()); + EXPECT_FALSE(output.new_location.transform->IsIdentity()); +} + +TEST(AXLocationAndScrollUpdatesMojomTraitsTest, ScrollChangeRoundTrip) { + ui::AXScrollChange input(7, 15, 20); + + ui::AXScrollChange output; + EXPECT_TRUE( + SerializeAndDeserialize<ax::mojom::AXScrollChange>(input, output)); + EXPECT_EQ(7, output.id); + EXPECT_EQ(15, output.scroll_x); + EXPECT_EQ(20, output.scroll_y); +}
diff --git a/ui/accessibility/mojom/ax_location_changes.mojom b/ui/accessibility/mojom/ax_location_changes.mojom deleted file mode 100644 index c63406b..0000000 --- a/ui/accessibility/mojom/ax_location_changes.mojom +++ /dev/null
@@ -1,14 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -module ax.mojom; - -import "ui/accessibility/mojom/ax_relative_bounds.mojom"; -import "ui/accessibility/mojom/ax_tree_id.mojom"; - -struct AXLocationChanges { - int32 id; - ax.mojom.AXTreeID ax_tree_id; - ax.mojom.AXRelativeBounds new_location; -}; \ No newline at end of file
diff --git a/ui/accessibility/mojom/ax_location_changes_mojom_traits.cc b/ui/accessibility/mojom/ax_location_changes_mojom_traits.cc deleted file mode 100644 index 17f61fb..0000000 --- a/ui/accessibility/mojom/ax_location_changes_mojom_traits.cc +++ /dev/null
@@ -1,26 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ui/accessibility/mojom/ax_location_changes_mojom_traits.h" - -#include "ui/accessibility/mojom/ax_relative_bounds_mojom_traits.h" -#include "ui/accessibility/mojom/ax_tree_update_mojom_traits.h" - -namespace mojo { - -// static -bool StructTraits<ax::mojom::AXLocationChangesDataView, ui::AXLocationChanges>:: - Read(ax::mojom::AXLocationChangesDataView data, - ui::AXLocationChanges* out) { - out->id = data.id(); - if (!data.ReadAxTreeId(&out->ax_tree_id)) { - return false; - } - if (!data.ReadNewLocation(&out->new_location)) { - return false; - } - return true; -} - -} // namespace mojo
diff --git a/ui/accessibility/mojom/ax_location_changes_mojom_traits.h b/ui/accessibility/mojom/ax_location_changes_mojom_traits.h deleted file mode 100644 index 22428baa..0000000 --- a/ui/accessibility/mojom/ax_location_changes_mojom_traits.h +++ /dev/null
@@ -1,30 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef UI_ACCESSIBILITY_MOJOM_AX_LOCATION_CHANGES_MOJOM_TRAITS_H_ -#define UI_ACCESSIBILITY_MOJOM_AX_LOCATION_CHANGES_MOJOM_TRAITS_H_ - -#include "ui/accessibility/ax_updates_and_events.h" -#include "ui/accessibility/mojom/ax_location_changes.mojom-shared.h" - -namespace mojo { - -template <> -struct StructTraits<ax::mojom::AXLocationChangesDataView, - ui::AXLocationChanges> { - static int32_t id(const ui::AXLocationChanges& p) { return p.id; } - static const ui::AXTreeID& ax_tree_id(const ui::AXLocationChanges& p) { - return p.ax_tree_id; - } - static const ui::AXRelativeBounds& new_location( - const ui::AXLocationChanges& p) { - return p.new_location; - } - static bool Read(ax::mojom::AXLocationChangesDataView data, - ui::AXLocationChanges* out); -}; - -} // namespace mojo - -#endif // UI_ACCESSIBILITY_MOJOM_AX_LOCATION_CHANGES_MOJOM_TRAITS_H_
diff --git a/ui/accessibility/mojom/ax_location_changes_mojom_traits_unittest.cc b/ui/accessibility/mojom/ax_location_changes_mojom_traits_unittest.cc deleted file mode 100644 index 52209b2..0000000 --- a/ui/accessibility/mojom/ax_location_changes_mojom_traits_unittest.cc +++ /dev/null
@@ -1,38 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ui/accessibility/mojom/ax_location_changes_mojom_traits.h" - -#include "mojo/public/cpp/test_support/test_utils.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "ui/accessibility/ax_updates_and_events.h" -#include "ui/accessibility/mojom/ax_location_changes.mojom.h" - -using mojo::test::SerializeAndDeserialize; - -TEST(AXLocationChangesMojomTraitsTest, RoundTrip) { - ui::AXLocationChanges input; - input.id = 1; - ui::AXTreeID input_tree_id = ui::AXTreeID::CreateNewAXTreeID(); - input.ax_tree_id = input_tree_id; - - ui::AXRelativeBounds input_bounds; - input_bounds.offset_container_id = 111; - input_bounds.bounds = gfx::RectF(1, 2, 3, 4); - input_bounds.transform = std::make_unique<gfx::Transform>(); - input_bounds.transform->Scale(1.0, 2.0); - input.new_location = input_bounds; - - ui::AXLocationChanges output; - EXPECT_TRUE( - SerializeAndDeserialize<ax::mojom::AXLocationChanges>(input, output)); - EXPECT_EQ(1, output.id); - EXPECT_EQ(input_tree_id, output.ax_tree_id); - EXPECT_EQ(111, output.new_location.offset_container_id); - EXPECT_EQ(1, output.new_location.bounds.x()); - EXPECT_EQ(2, output.new_location.bounds.y()); - EXPECT_EQ(3, output.new_location.bounds.width()); - EXPECT_EQ(4, output.new_location.bounds.height()); - EXPECT_FALSE(output.new_location.transform->IsIdentity()); -}
diff --git a/ui/accessibility/platform/browser_accessibility_manager.cc b/ui/accessibility/platform/browser_accessibility_manager.cc index 161902b5..6888e29 100644 --- a/ui/accessibility/platform/browser_accessibility_manager.cc +++ b/ui/accessibility/platform/browser_accessibility_manager.cc
@@ -647,7 +647,7 @@ void BrowserAccessibilityManager::FinalizeAccessibilityEvents() {} void BrowserAccessibilityManager::OnLocationChanges( - const std::vector<AXLocationChanges>& changes) { + const AXLocationAndScrollUpdates& changes) { TRACE_EVENT0("accessibility", is_post_load_ ? "BrowserAccessibilityManager::OnLocationChanges" @@ -655,26 +655,59 @@ SCOPED_UMA_HISTOGRAM_TIMER_MICROS( "Accessibility.Performance.BrowserAccessibilityManager::" "OnLocationChanges"); - for (auto& change : changes) { + bool can_fire_events = CanFireEvents(); + for (auto& change : changes.scroll_changes) { BrowserAccessibility* obj = GetFromID(change.id); - if (!obj) + if (!obj) { continue; + } + + AXNode* node = obj->node(); + int old_scrollx, old_scrolly; + node->GetScrollInfo(&old_scrollx, &old_scrolly); + node->SetScrollInfo(change.scroll_x, change.scroll_y); + + if (can_fire_events) { + if (change.scroll_x != old_scrollx) { + FireGeneratedEvent( + ui::AXEventGenerator::Event::SCROLL_HORIZONTAL_POSITION_CHANGED, + node); + } + if (change.scroll_y != old_scrolly) { + FireGeneratedEvent( + ui::AXEventGenerator::Event::SCROLL_VERTICAL_POSITION_CHANGED, + node); + } + } + } + + for (auto& change : changes.location_changes) { + BrowserAccessibility* obj = GetFromID(change.id); + if (!obj) { + continue; + } AXNode* node = obj->node(); node->SetLocation(change.new_location.offset_container_id, change.new_location.bounds, change.new_location.transform.get()); } + // Only send location change events when the page is not in back/forward // cache. - if (CanFireEvents()) { - SendLocationChangeEvents(changes); + if (can_fire_events && !changes.location_changes.empty()) { + SendLocationChangeEvents(changes.location_changes); } - if (!location_change_callback_for_testing_.is_null()) + + // Only send location change callback when there's actually changed locations. + // Required for tests to detect location change that's not scrolling. + if (!location_change_callback_for_testing_.is_null() && + !changes.location_changes.empty()) { location_change_callback_for_testing_.Run(); + } } void BrowserAccessibilityManager::SendLocationChangeEvents( - const std::vector<AXLocationChanges>& changes) { + const std::vector<AXLocationChange>& changes) { for (auto& change : changes) { BrowserAccessibility* obj = GetFromID(change.id); if (obj)
diff --git a/ui/accessibility/platform/browser_accessibility_manager.h b/ui/accessibility/platform/browser_accessibility_manager.h index 866c11f..54b7c63e 100644 --- a/ui/accessibility/platform/browser_accessibility_manager.h +++ b/ui/accessibility/platform/browser_accessibility_manager.h
@@ -23,6 +23,7 @@ #include "cc/base/rtree.h" #include "ui/accessibility/ax_action_data.h" #include "ui/accessibility/ax_action_handler_registry.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_node.h" #include "ui/accessibility/ax_node_data.h" #include "ui/accessibility/ax_node_id_forward.h" @@ -271,7 +272,7 @@ // Called when the renderer process updates the location of accessibility // objects. Calls SendLocationChangeEvents(), which can be overridden. - void OnLocationChanges(const std::vector<AXLocationChanges>& changes); + void OnLocationChanges(const AXLocationAndScrollUpdates& changes); // Called when a new find in page result is received. We hold on to this // information and don't activate it until the user requests it. @@ -514,7 +515,7 @@ // their location has changed. This is called by OnLocationChanges // after it's updated the internal data structure. virtual void SendLocationChangeEvents( - const std::vector<AXLocationChanges>& changes); + const std::vector<AXLocationChange>& changes); // Given the data from an atomic update, collect the nodes that need updating // assuming that this platform is one where plain text node content is
diff --git a/ui/accessibility/platform/fuchsia/browser_accessibility_manager_fuchsia_unittest.cc b/ui/accessibility/platform/fuchsia/browser_accessibility_manager_fuchsia_unittest.cc index 16cac0f8..ac7502f 100644 --- a/ui/accessibility/platform/fuchsia/browser_accessibility_manager_fuchsia_unittest.cc +++ b/ui/accessibility/platform/fuchsia/browser_accessibility_manager_fuchsia_unittest.cc
@@ -288,15 +288,11 @@ } // Send location update for node 2. - std::vector<AXLocationChanges> changes; + AXLocationAndScrollUpdates changes; AXRelativeBounds relative_bounds; relative_bounds.bounds = gfx::RectF(/*x=*/1, /*y=*/2, /*width=*/3, /*height=*/4); - AXLocationChanges change; - change.id = 2; - change.ax_tree_id = tree_id; - change.new_location = relative_bounds; - changes.push_back(change); + changes.location_changes.emplace_back(2, relative_bounds); manager_->OnLocationChanges(std::move(changes)); {
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn index 07dd433c..8451015 100644 --- a/ui/android/BUILD.gn +++ b/ui/android/BUILD.gn
@@ -106,9 +106,12 @@ sources = [ "dummy_screen_android.cc", "dummy_screen_android.h", + "fake_modal_dialog_manager_bridge.cc", + "fake_modal_dialog_manager_bridge.h", ] deps = [ + ":ui_javatest_jni_headers", "//ui/android", "//ui/display", ] @@ -554,6 +557,7 @@ # For androidx.test.espresso.ViewInteraction "//third_party/android_deps:espresso_java", "//third_party/android_deps:material_design_java", + "//third_party/androidx:androidx_activity_activity_java", "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/androidx:androidx_appcompat_appcompat_java", "//third_party/androidx:androidx_appcompat_appcompat_resources_java", @@ -682,6 +686,7 @@ deps = [ ":android", ":java_enums_srcjar", + ":test_support", ":ui_java", ":ui_java_test_support", ":ui_javatest_jni_headers",
diff --git a/ui/android/fake_modal_dialog_manager_bridge.cc b/ui/android/fake_modal_dialog_manager_bridge.cc new file mode 100644 index 0000000..06c3f22 --- /dev/null +++ b/ui/android/fake_modal_dialog_manager_bridge.cc
@@ -0,0 +1,50 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/android/fake_modal_dialog_manager_bridge.h" + +#include "base/android/jni_android.h" +#include "ui/android/window_android.h" + +// Must come after all headers that specialize FromJniType() / ToJniType(). +#include "ui/android/ui_javatest_jni_headers/FakeModalDialogManager_jni.h" + +namespace ui { + +// static. +std::unique_ptr<FakeModalDialogManagerBridge> +FakeModalDialogManagerBridge::CreateForTab(WindowAndroid* window, + bool use_empty_java_presenter) { + JNIEnv* env = base::android::AttachCurrentThread(); + auto fake_manager = base::WrapUnique(new FakeModalDialogManagerBridge( + Java_FakeModalDialogManager_createForTab(env, use_empty_java_presenter), + window)); + window->SetModalDialogManagerForTesting(fake_manager->j_fake_manager_); + return fake_manager; +} + +FakeModalDialogManagerBridge::~FakeModalDialogManagerBridge() { + window_->SetModalDialogManagerForTesting( + base::android::ScopedJavaLocalRef<jobject>()); +} + +void FakeModalDialogManagerBridge::ClickPositiveButton() { + JNIEnv* env = base::android::AttachCurrentThread(); + Java_FakeModalDialogManager_clickPositiveButton(env, j_fake_manager_); +} + +bool FakeModalDialogManagerBridge::IsSuspend( + ModalDialogManagerBridge::ModalDialogType dialog_type) { + JNIEnv* env = base::android::AttachCurrentThread(); + return static_cast<bool>(Java_FakeModalDialogManager_isSuspended( + env, j_fake_manager_, static_cast<int>(dialog_type))); +} + +// private. +FakeModalDialogManagerBridge::FakeModalDialogManagerBridge( + base::android::ScopedJavaLocalRef<jobject> j_fake_manager, + WindowAndroid* window) + : j_fake_manager_(j_fake_manager), window_(window) {} + +} // namespace ui
diff --git a/ui/android/fake_modal_dialog_manager_bridge.h b/ui/android/fake_modal_dialog_manager_bridge.h new file mode 100644 index 0000000..fa65da0 --- /dev/null +++ b/ui/android/fake_modal_dialog_manager_bridge.h
@@ -0,0 +1,47 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_ANDROID_FAKE_MODAL_DIALOG_MANAGER_BRIDGE_H_ +#define UI_ANDROID_FAKE_MODAL_DIALOG_MANAGER_BRIDGE_H_ + +#include "base/android/scoped_java_ref.h" +#include "base/memory/raw_ptr.h" +#include "ui/android/modal_dialog_manager_bridge.h" +#include "ui/android/ui_android_export.h" + +namespace ui { + +class WindowAndroid; + +class UI_ANDROID_EXPORT FakeModalDialogManagerBridge { + public: + // `use_empty_java_presenter`, when set to true, tells + // `FakeModalDialogManager.java` to use an empty Presenter instead of a mocked + // one. An empty presenter is typically for browser tests and a mocked one is + // for unittests. + static std::unique_ptr<FakeModalDialogManagerBridge> CreateForTab( + WindowAndroid* window, + bool use_empty_java_presenter); + + FakeModalDialogManagerBridge(const FakeModalDialogManagerBridge&) = delete; + FakeModalDialogManagerBridge& operator=(const FakeModalDialogManagerBridge&) = + delete; + ~FakeModalDialogManagerBridge(); + + void ClickPositiveButton(); + + bool IsSuspend(ModalDialogManagerBridge::ModalDialogType dialog_type); + + private: + FakeModalDialogManagerBridge( + base::android::ScopedJavaLocalRef<jobject> j_fake_manager_, + WindowAndroid* window); + + const base::android::ScopedJavaLocalRef<jobject> j_fake_manager_; + const raw_ptr<WindowAndroid> window_; +}; + +} // namespace ui + +#endif // UI_ANDROID_FAKE_MODAL_DIALOG_MANAGER_BRIDGE_H_
diff --git a/ui/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java b/ui/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java index 22dbc06d..062e9c0 100644 --- a/ui/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java +++ b/ui/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java
@@ -27,6 +27,7 @@ } @Override + @SuppressWarnings("Finalize") // TODO(crbug.com/40286193): Remove in favor of destroy(). protected void finalize() throws Throwable { try { SurfaceTextureListenerJni.get()
diff --git a/ui/android/javatests/src/org/chromium/ui/test/util/MockitoHelper.java b/ui/android/javatests/src/org/chromium/ui/test/util/MockitoHelper.java index 703d9be..f5ba804d 100644 --- a/ui/android/javatests/src/org/chromium/ui/test/util/MockitoHelper.java +++ b/ui/android/javatests/src/org/chromium/ui/test/util/MockitoHelper.java
@@ -50,7 +50,7 @@ } /** When no argument is needed. */ - public static <T> Stubber doRunnable(Runnable runnable) { + public static Stubber doRunnable(Runnable runnable) { return Mockito.doAnswer( ignored -> { runnable.run();
diff --git a/ui/android/javatests/src/org/chromium/ui/test/util/modaldialog/FakeModalDialogManager.java b/ui/android/javatests/src/org/chromium/ui/test/util/modaldialog/FakeModalDialogManager.java index 779ac3c..83696519 100644 --- a/ui/android/javatests/src/org/chromium/ui/test/util/modaldialog/FakeModalDialogManager.java +++ b/ui/android/javatests/src/org/chromium/ui/test/util/modaldialog/FakeModalDialogManager.java
@@ -4,26 +4,48 @@ package org.chromium.ui.test.util.modaldialog; -import org.jni_zero.CalledByNative; +import androidx.activity.ComponentDialog; + +import org.jni_zero.CalledByNativeForTesting; import org.jni_zero.JNINamespace; import org.mockito.Mockito; +import org.chromium.base.Callback; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modaldialog.ModalDialogProperties; import org.chromium.ui.modelutil.PropertyModel; -/** A fake ModalDialogManager for use in tests involving modals. */ +/** + * A fake ModalDialogManager for use in tests involving modals. Unlike ModalDialogManager, this + * class is managed by its native `FakeModalDialogManagerBridge`. + */ @JNINamespace("ui") public class FakeModalDialogManager extends ModalDialogManager { private PropertyModel mShownDialogModel; - @CalledByNative - private static FakeModalDialogManager createForTab() { - return new FakeModalDialogManager(ModalDialogType.TAB); + @CalledByNativeForTesting + private static FakeModalDialogManager createForTab(boolean useEmptyPresenter) { + ModalDialogManager.Presenter presenter = + useEmptyPresenter + ? new ModalDialogManager.Presenter() { + @Override + protected void addDialogView( + PropertyModel model, + Callback<ComponentDialog> onDialogCreatedCallback) {} + + @Override + protected void removeDialogView(PropertyModel model) {} + } + : Mockito.mock(Presenter.class); + return new FakeModalDialogManager(presenter, ModalDialogType.TAB); } public FakeModalDialogManager(int modalDialogType) { - super(Mockito.mock(Presenter.class), modalDialogType); + this(Mockito.mock(Presenter.class), modalDialogType); + } + + public FakeModalDialogManager(ModalDialogManager.Presenter presenter, int modalDialogType) { + super(presenter, modalDialogType); } @Override @@ -37,7 +59,13 @@ mShownDialogModel = null; } - @CalledByNative + @Override + @CalledByNativeForTesting + public boolean isSuspended(@ModalDialogType int dialogType) { + return super.isSuspended(dialogType); + } + + @CalledByNativeForTesting public void clickPositiveButton() { mShownDialogModel .get(ModalDialogProperties.CONTROLLER)
diff --git a/ui/android/modal_dialog_wrapper_unittest.cc b/ui/android/modal_dialog_wrapper_unittest.cc index e3414ea..73dc75ac 100644 --- a/ui/android/modal_dialog_wrapper_unittest.cc +++ b/ui/android/modal_dialog_wrapper_unittest.cc
@@ -12,12 +12,10 @@ #include "base/memory/weak_ptr.h" #include "base/test/bind.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/android/fake_modal_dialog_manager_bridge.h" #include "ui/android/window_android.h" #include "ui/base/models/dialog_model.h" -// Must come after all headers that specialize FromJniType() / ToJniType(). -#include "ui/android/ui_javatest_jni_headers/FakeModalDialogManager_jni.h" - namespace ui { TEST(ModalDialogWrapperTest, ShowTabModal) { @@ -33,14 +31,11 @@ .SetCloseActionCallback(base::DoNothing()); auto window = ui::WindowAndroid::CreateForTesting(); - JNIEnv* env = base::android::AttachCurrentThread(); - base::android::ScopedJavaLocalRef<jobject> fake_modal_dialog_manager = - Java_FakeModalDialogManager_createForTab(env); - window->SetModalDialogManager(fake_modal_dialog_manager); + auto fake_dialog_manager = FakeModalDialogManagerBridge::CreateForTab( + window->get(), /*use_empty_java_presenter=*/false); ModalDialogWrapper::ShowTabModal(dialog_builder.Build(), window->get()); - Java_FakeModalDialogManager_clickPositiveButton(env, - fake_modal_dialog_manager); + fake_dialog_manager->ClickPositiveButton(); EXPECT_TRUE(ok_called); } @@ -57,10 +52,8 @@ base::BindLambdaForTesting([&closed]() { closed = true; })); auto window = ui::WindowAndroid::CreateForTesting(); - JNIEnv* env = base::android::AttachCurrentThread(); - base::android::ScopedJavaLocalRef<jobject> fake_modal_dialog_manager = - Java_FakeModalDialogManager_createForTab(env); - window->SetModalDialogManager(fake_modal_dialog_manager); + auto fake_dialog_manager = FakeModalDialogManagerBridge::CreateForTab( + window->get(), /*use_empty_java_presenter=*/false); ModalDialogWrapper::ShowTabModal(dialog_builder.Build(), window->get()); ModalDialogWrapper::GetDialogForTesting()->Close();
diff --git a/ui/android/window_android.cc b/ui/android/window_android.cc index c2121b3d..2eb7287 100644 --- a/ui/android/window_android.cc +++ b/ui/android/window_android.cc
@@ -277,6 +277,13 @@ GetJavaObject())); } +void WindowAndroid::SetModalDialogManagerForTesting( + base::android::ScopedJavaLocalRef<jobject> java_modal_dialog_manager) { + JNIEnv* env = base::android::AttachCurrentThread(); + ui::Java_WindowAndroid_setModalDialogManagerForTesting( + env, GetJavaObject(), java_modal_dialog_manager); +} + void WindowAndroid::SetWideColorEnabled(bool enabled) { JNIEnv* env = AttachCurrentThread(); Java_WindowAndroid_setWideColorEnabled(env, GetJavaObject(), enabled);
diff --git a/ui/android/window_android.h b/ui/android/window_android.h index 8365064..b71b956 100644 --- a/ui/android/window_android.h +++ b/ui/android/window_android.h
@@ -40,6 +40,7 @@ // WindowAndroid is also the root of a ViewAndroid tree. class UI_ANDROID_EXPORT WindowAndroid : public ViewAndroid { public: + // Intended for unittests only. class ScopedWindowAndroidForTesting { public: ScopedWindowAndroidForTesting(WindowAndroid* window); @@ -120,6 +121,10 @@ ModalDialogManagerBridge* GetModalDialogManagerBridge(); + // Intended for native browser tests. + void SetModalDialogManagerForTesting( + base::android::ScopedJavaLocalRef<jobject> java_modal_dialog_manager); + float mouse_wheel_scroll_factor() const { return mouse_wheel_scroll_factor_; } static std::unique_ptr<ScopedWindowAndroidForTesting> CreateForTesting();
diff --git a/ui/webui/resources/cr_components/history_embeddings/history_embeddings.html b/ui/webui/resources/cr_components/history_embeddings/history_embeddings.html index 7f04f9d..eb2c864 100644 --- a/ui/webui/resources/cr_components/history_embeddings/history_embeddings.html +++ b/ui/webui/resources/cr_components/history_embeddings/history_embeddings.html
@@ -281,7 +281,9 @@ <div>Source:</div> <div class="favicon" style$="background-image: [[getFavicon_(answerSource_)]]"></div> - <div class="result-url">[[answerSource_.urlForDisplay]]</div> + <div class="result-url"> + [[answerSource_.urlForDisplay]] • [[answerSource_.shortDateTime]] + </div> </a> </div>
diff --git a/ui/webui/resources/cr_components/history_embeddings/history_embeddings.mojom b/ui/webui/resources/cr_components/history_embeddings/history_embeddings.mojom index f9962422..0d2af98 100644 --- a/ui/webui/resources/cr_components/history_embeddings/history_embeddings.mojom +++ b/ui/webui/resources/cr_components/history_embeddings/history_embeddings.mojom
@@ -37,9 +37,13 @@ // The URL formatted for display. string url_for_display; - // A localized string for the last visit time for the above URL, from history. + // A localized string for how long it has been since the last visit time for + // the above URL, from history. string relative_time; + // A localized string for the last visit time for the above URL, from history. + string short_date_time; + // The last visit time for the above URL, from history. Used for removing // history item. // TODO(crbug.com/335282446): BrowsingHistoryService requires a double here.