diff --git a/DEPS b/DEPS index f49ee136..9a8fed4 100644 --- a/DEPS +++ b/DEPS
@@ -312,11 +312,11 @@ # 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': '5ed21229cdd96f23e833046cb6b177ee656f3967', + 'skia_revision': '7a5b34ce9bbfe214ceee101952190fc44b432944', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '4f5a631dc76e29f03342dade37470c9a0539ce5f', + 'v8_revision': '858896197cffa32f7e50bf1159718529edc1b3de', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. @@ -400,7 +400,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': '0339e4bc4757f5ac2597ca7583df9ec622f822f0', + 'devtools_frontend_revision': '1c14e2a7b5f957c71e9e1ffe11e2bd09a6769178', # 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. @@ -424,7 +424,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': '2562ad0ac0307c50c34f291d3f879eb3350c08f3', + 'dawn_revision': '67ec6b21abee630c159414ce379de2762281d23f', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -532,7 +532,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling llvm-libc # and whatever else without interference from each other. - 'compiler_rt_revision': '298fd1dc22321033fb73b4c78ad6e89979e0128c', + 'compiler_rt_revision': '23fabde38f30838cf001a28e63570136b71e0ece', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling clusterfuzz-data # and whatever else without interference from each other. @@ -1193,7 +1193,7 @@ 'packages': [ { 'package': 'chromium/chrome/android/orderfiles/arm', - 'version': 'cazruRFLVk6i7Uzvsovdqwt6VgbOcOU4Ji6d3QVNMhEC', + 'version': '3dI0bIk97EbZroZccefgABXuDXpKt5h6eBh72ejJSBIC', }, ], 'condition': 'checkout_android and non_git_source', @@ -1204,7 +1204,7 @@ 'packages': [ { 'package': 'chromium/chrome/android/orderfiles/arm64', - 'version': '8TFiQtiF-vZ1x1XYK7Mx9YkGrnswvzUVqNNpJgedD-QC', + 'version': 'x_oR72PeizUGeJ5J_X-_ORjzwnlrknOUKAefrN1KVRIC', }, ], 'condition': 'checkout_android and non_git_source', @@ -1215,7 +1215,7 @@ 'packages': [ { 'package': 'chromium/android_webview/tools/orderfiles/arm', - 'version': 'EjK4MswSRhtKwUdTPSheYynpsuhEK0dgbq26lLOQmfEC', + 'version': 'bJEl-C6xT3A3mwjub5kIk5ZK55SJNdxSCZ98Dp3YeRcC', }, ], 'condition': 'checkout_android and non_git_source', @@ -1226,7 +1226,7 @@ 'packages': [ { 'package': 'chromium/android_webview/tools/orderfiles/arm64', - 'version': 'wN2Rrxvu8pn5g9YH_bU21IyKR3-MvWgv9_LrrK5W2asC', + 'version': 'QTAIBnikq6CiEP9zgBNWhD64nmY45MvEjVDtr88VXSEC', }, ], 'condition': 'checkout_android and non_git_source', @@ -1611,7 +1611,7 @@ 'packages': [ { 'package': 'chromium/chrome/test/data/variations/cipd', - 'version': 'z8mmMbla9a6OmM6ObkIleAJDN0LTcp38hGVVvRmKFSAC', + 'version': 'RaoUO2UL-nMDqrswCRmUxMFiqOeZ3cidTFgTs0WD1w0C', }, ], 'dep_type': 'cipd', @@ -1622,7 +1622,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - '5f117309cf85351b5d6d528aac6a7a6c10a3a1e3', + '7db2a580417bce0e9be1d8539c3d94ea2b9a695d', 'condition': 'checkout_android and checkout_src_internal', }, @@ -2608,7 +2608,7 @@ Var('pdfium_git') + '/pdfium.git' + '@' + Var('pdfium_revision'), 'src/third_party/perfetto': - Var('chromium_git') + '/external/github.com/google/perfetto.git' + '@' + 'd972f3eb1be39376d6e296e0fa98e0817d56ee45', + Var('chromium_git') + '/external/github.com/google/perfetto.git' + '@' + 'efc223a2387fd7f45ccf51346af95a4ec5f59f69', 'src/base/tracing/test/data': { 'bucket': 'perfetto', @@ -2979,7 +2979,7 @@ Var('chromium_git') + '/webpagereplay.git' + '@' + Var('webpagereplay_revision'), 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '9881db6d2acd8b52c85f16ae2d1a4f4617396bbc', + Var('webrtc_git') + '/src.git' + '@' + '5e6ccdf2d66b38451bdcf254b1c3451cdbeff71d', # 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. @@ -3123,7 +3123,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'QvtER0lzp0QzSAVTe5mpS05BVQykBzueOwzW8ikQx_MC', + 'version': 'cV-xXUukgohZpKnI47CqykKr2JzWvfVcPSgU3uV5GlEC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -3134,7 +3134,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/media_app/app', - 'version': 'If-KEWohmHgm2Mbincn5wBr-X3eL2_u3R11qp5s5hm0C', + 'version': '8nOVc16PWX1vOL2FAJPm8X8Lk57BHqt0zzQIkXHR3YAC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -3167,7 +3167,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/projector_app/app', - 'version': 'UznFVx8kElPrYRIt687_xoM-_uiGNE6w0Gqrn3I7g4kC', + 'version': '_fk7DWhQrmGXlta2PCDBJHIZdZDGMJlsUFgYRmFLkN4C', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -3749,7 +3749,7 @@ 'src/ios_internal': { 'url': Var('chrome_git') + '/chrome/ios_internal.git' + '@' + - '59b076414e3e5ec964fa7cb0a7fbb44e005f626b', + 'ac8e3955b71b12b6cebf395c38bfc3503da5234a', 'condition': 'checkout_ios and checkout_src_internal', },
diff --git a/ash/app_list/views/search_result_view.cc b/ash/app_list/views/search_result_view.cc index 19b5309..838034a 100644 --- a/ash/app_list/views/search_result_view.cc +++ b/ash/app_list/views/search_result_view.cc
@@ -1286,7 +1286,6 @@ } void SearchResultView::Layout(PassKey) { - // TODO(crbug.com/40220083) add test coverage for search result view layout. gfx::Rect rect(GetContentsBounds()); if (rect.IsEmpty()) { return;
diff --git a/ash/capture_mode/capture_mode_controller.cc b/ash/capture_mode/capture_mode_controller.cc index 8c942307..ea631e2 100644 --- a/ash/capture_mode/capture_mode_controller.cc +++ b/ash/capture_mode/capture_mode_controller.cc
@@ -222,7 +222,6 @@ base::FilePath SelectFilePathForCapturedFile( const base::FilePath& current_path, const base::FilePath& fallback_path) { - // TODO(b/323146997): Revisit the behavior if enforced by policy. if (base::PathExists(current_path.DirName())) return current_path; DCHECK(base::PathExists(fallback_path.DirName()));
diff --git a/ash/capture_mode/capture_mode_session_focus_cycler.h b/ash/capture_mode/capture_mode_session_focus_cycler.h index d2708b7..2b8af09 100644 --- a/ash/capture_mode/capture_mode_session_focus_cycler.h +++ b/ash/capture_mode/capture_mode_session_focus_cycler.h
@@ -39,8 +39,6 @@ public: // The different groups which can receive focus during a capture mode session. // A group may have multiple items which can receive focus. - // TODO(crbug.com/40170806): Investigate removing the groups concept and - // having one flat list. enum class FocusGroup { kNone = 0, // The buttons to select the capture type and source on the capture bar. @@ -118,10 +116,6 @@ HighlightableView(); virtual ~HighlightableView(); - // TODO(crbug.com/40170806): This can result in multiple of these objects - // thinking they have focus if CaptureModeSessionFocusCycler does not call - // PseudoFocus or PseudoBlur properly. Investigate if there is a better - // approach. bool has_focus_ = false; private:
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc index c6bec84..d565012ebe 100644 --- a/base/metrics/field_trial.cc +++ b/base/metrics/field_trial.cc
@@ -631,7 +631,7 @@ std::string_view trial_name; std::string_view group_name; bool is_overridden; - if (subtle::NoBarrier_Load(&entry->activated) && + if (entry->activated.load(std::memory_order_relaxed) && entry->GetState(trial_name, group_name, is_overridden)) { result.emplace(trial_name); } @@ -954,8 +954,9 @@ DCHECK(new_entry) << "Failed to allocate a new entry, likely because the allocator is " "full. Consider increasing kFieldTrialAllocationSize."; - subtle::NoBarrier_Store(&new_entry->activated, - subtle::NoBarrier_Load(&prev_entry->activated)); + new_entry->activated.store( + prev_entry->activated.load(std::memory_order_relaxed), + std::memory_order_relaxed); new_entry->pickle_size = pickle.size(); // TODO(lawrencewu): Modify base::Pickle to be able to write over a section @@ -1070,7 +1071,7 @@ FieldTrial* trial = CreateFieldTrial( trial_name, group_name, /*is_low_anonymity=*/false, is_overridden); trial->ref_ = mem_iter.GetAsReference(entry); - if (subtle::NoBarrier_Load(&entry->activated)) { + if (entry->activated.load(std::memory_order_relaxed)) { // Mark the trial as "used" and notify observers, if any. // This is useful to ensure that field trials created in child // processes are properly reported in crash reports. @@ -1153,7 +1154,7 @@ internal::FieldTrialEntry* entry = allocator->GetAsObject<internal::FieldTrialEntry>(ref); - subtle::NoBarrier_Store(&entry->activated, trial_state.activated); + entry->activated.store(trial_state.activated, std::memory_order_relaxed); entry->pickle_size = pickle.size(); // TODO(lawrencewu): Modify base::Pickle to be able to write over a section in @@ -1185,7 +1186,7 @@ // hit from the child re-synchronizing activation state. internal::FieldTrialEntry* entry = allocator->GetAsObject<internal::FieldTrialEntry>(ref); - subtle::NoBarrier_Store(&entry->activated, 1); + entry->activated.store(true, std::memory_order_relaxed); } }
diff --git a/base/metrics/field_trial_entry.h b/base/metrics/field_trial_entry.h index 5e53110..bf72c81 100644 --- a/base/metrics/field_trial_entry.h +++ b/base/metrics/field_trial_entry.h
@@ -8,12 +8,12 @@ #include <stddef.h> #include <stdint.h> +#include <atomic> #include <map> #include <string> #include <string_view> #include <vector> -#include "base/atomicops.h" #include "base/base_export.h" #include "base/compiler_specific.h" #include "base/metrics/persistent_memory_allocator.h" @@ -47,11 +47,8 @@ } // Whether or not this field trial is activated. This is really just a - // boolean but using a 32 bit value for portability reasons. It should be - // accessed via NoBarrier_Load()/NoBarrier_Store() to prevent the compiler - // from doing unexpected optimizations because it thinks that only one - // thread is accessing the memory location. - subtle::Atomic32 activated; + // boolean but using a 32 bit value for portability reasons. + std::atomic<uint32_t> activated; // On e.g. x86, alignof(uint64_t) is 4. Ensure consistent size and // alignment of `pickle_size` across platforms. This can be considered
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1 index c0552ea1..e97a02a 100644 --- a/build/fuchsia/linux_internal.sdk.sha1 +++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@ -29.20251025.102.1 +30.20251101.102.1
diff --git a/chrome/browser/ash/attestation/enrollment_id_upload_manager.cc b/chrome/browser/ash/attestation/enrollment_id_upload_manager.cc index 824ee30..401ae5b 100644 --- a/chrome/browser/ash/attestation/enrollment_id_upload_manager.cc +++ b/chrome/browser/ash/attestation/enrollment_id_upload_manager.cc
@@ -187,7 +187,7 @@ const std::string& enrollment_id, policy::CloudPolicyClient::Result result) { const std::string printable_enrollment_id = - base::ToLowerASCII(base::HexEncode(enrollment_id)); + base::HexEncodeLower(enrollment_id); if (!result.IsSuccess()) { LOG(ERROR) << "Failed to upload Enrollment Identifier \""
diff --git a/chrome/browser/ash/drive/drive_integration_service.cc b/chrome/browser/ash/drive/drive_integration_service.cc index e86a3f3f..8f03640 100644 --- a/chrome/browser/ash/drive/drive_integration_service.cc +++ b/chrome/browser/ash/drive/drive_integration_service.cc
@@ -524,7 +524,7 @@ hasher.Update(GetProfileSalt()); hasher.Update("-"); hasher.Update(GetAccountId().GetAccountIdKey()); - return base::ToLowerASCII(base::HexEncode(hasher.Finish())); + return base::HexEncodeLower(hasher.Finish()); } bool IsMetricsCollectionEnabled() override {
diff --git a/chrome/browser/ash/drive/drivefs_test_support.cc b/chrome/browser/ash/drive/drivefs_test_support.cc index f9abb1fa..0cebf5b 100644 --- a/chrome/browser/ash/drive/drivefs_test_support.cc +++ b/chrome/browser/ash/drive/drivefs_test_support.cc
@@ -47,7 +47,7 @@ md5.Update(FakeDriveFsHelper::kPredefinedProfileSalt); md5.Update("-"); md5.Update(user->GetAccountId().GetAccountIdKey()); - return base::ToLowerASCII(base::HexEncode(md5.Finish())); + return base::HexEncodeLower(md5.Finish()); })); } FakeDriveFsHelper::~FakeDriveFsHelper() = default;
diff --git a/chrome/browser/ash/policy/reporting/install_event_log_util.cc b/chrome/browser/ash/policy/reporting/install_event_log_util.cc index b3a4035..1640c404 100644 --- a/chrome/browser/ash/policy/reporting/install_event_log_util.cc +++ b/chrome/browser/ash/policy/reporting/install_event_log_util.cc
@@ -79,7 +79,7 @@ crypto::obsolete::Md5 hasher = MakeMd5HasherForPolicyEventId(); hasher.Update(base::as_byte_span(*event_json)); hasher.Update(base::as_byte_span(*context_json)); - return base::ToLowerASCII(base::HexEncode(hasher.Finish())); + return base::HexEncodeLower(hasher.Finish()); } } // namespace
diff --git a/chrome/browser/ash/printing/enterprise/enterprise_printers_provider.cc b/chrome/browser/ash/printing/enterprise/enterprise_printers_provider.cc index 59f31ab..bf018e8 100644 --- a/chrome/browser/ash/printing/enterprise/enterprise_printers_provider.cc +++ b/chrome/browser/ash/printing/enterprise/enterprise_printers_provider.cc
@@ -37,7 +37,7 @@ namespace printing { std::string PolicyPrinterId(const std::string& json) { - return base::ToLowerASCII(base::HexEncode(crypto::obsolete::Md5::Hash(json))); + return base::HexEncodeLower(crypto::obsolete::Md5::Hash(json)); } } // namespace printing
diff --git a/chrome/browser/ash/printing/server_printers_fetcher.cc b/chrome/browser/ash/printing/server_printers_fetcher.cc index a1cab58..0bb7df8 100644 --- a/chrome/browser/ash/printing/server_printers_fetcher.cc +++ b/chrome/browser/ash/printing/server_printers_fetcher.cc
@@ -38,8 +38,7 @@ // Not in namespace {} so it can be friended by crypto/obsolete/md5. std::string ServerPrinterId(const std::string& url) { - return "server-" + - base::ToLowerASCII(base::HexEncode(crypto::obsolete::Md5::Hash(url))); + return "server-" + base::HexEncodeLower(crypto::obsolete::Md5::Hash(url)); } } // namespace printing
diff --git a/chrome/browser/ash/printing/usb_printer_util.cc b/chrome/browser/ash/printing/usb_printer_util.cc index 1f300c9..18c5962 100644 --- a/chrome/browser/ash/printing/usb_printer_util.cc +++ b/chrome/browser/ash/printing/usb_printer_util.cc
@@ -227,8 +227,7 @@ md5.Update(GetManufacturerName(device_info)); md5.Update(GetProductName(device_info)); Md5UpdateString16(md5, GetSerialNumber(device_info)); - return base::StringPrintf("usb-%s", - base::ToLowerASCII(base::HexEncode(md5.Finish()))); + return base::StringPrintf("usb-%s", base::HexEncodeLower(md5.Finish())); } // Creates a mojom filter which can be used to identify a basic USB printer.
diff --git a/chrome/browser/ash/printing/zeroconf_printer_detector.cc b/chrome/browser/ash/printing/zeroconf_printer_detector.cc index d118b8c..f031029e 100644 --- a/chrome/browser/ash/printing/zeroconf_printer_detector.cc +++ b/chrome/browser/ash/printing/zeroconf_printer_detector.cc
@@ -155,8 +155,7 @@ md5.Update(metadata.usb_MDL); md5.Update(metadata.ty); md5.Update(metadata.rp); - return base::StringPrintf("zeroconf-%s", - base::ToLowerASCII(base::HexEncode(md5.Finish()))); + return base::StringPrintf("zeroconf-%s", base::HexEncodeLower(md5.Finish())); } // Attempt to fill |detected_printer| using the information in
diff --git a/chrome/browser/ash/smb_client/smbfs_share.cc b/chrome/browser/ash/smb_client/smbfs_share.cc index 38332dd1..681e301 100644 --- a/chrome/browser/ash/smb_client/smbfs_share.cc +++ b/chrome/browser/ash/smb_client/smbfs_share.cc
@@ -312,7 +312,7 @@ std::string SmbFsShare::GenerateStableMountId() const { const auto input = GenerateStableMountIdInput(); - return base::ToLowerASCII(base::HexEncode(crypto::hash::Sha256(input))); + return base::HexEncodeLower(crypto::hash::Sha256(input)); } std::string SmbFsShare::GenerateStableMountIdInput() const {
diff --git a/chrome/browser/ash/system_web_apps/system_web_app_manager.cc b/chrome/browser/ash/system_web_apps/system_web_app_manager.cc index 957d0cd..7969c919 100644 --- a/chrome/browser/ash/system_web_apps/system_web_app_manager.cc +++ b/chrome/browser/ash/system_web_apps/system_web_app_manager.cc
@@ -199,7 +199,8 @@ install_options.add_to_search = delegate.ShouldShowInSearchAndShelf(); install_options.add_to_management = false; install_options.is_disabled = is_disabled; - install_options.force_reinstall = force_update; + install_options.force_reinstall = + force_update || delegate.ShouldForceReinstall(); install_options.uninstall_and_replace = delegate.GetAppIdsToUninstallAndReplace(); install_options.system_app_type = type;
diff --git a/chrome/browser/ash/system_web_apps/system_web_app_manager_unittest.cc b/chrome/browser/ash/system_web_apps/system_web_app_manager_unittest.cc index 01447cd7..204b056 100644 --- a/chrome/browser/ash/system_web_apps/system_web_app_manager_unittest.cc +++ b/chrome/browser/ash/system_web_apps/system_web_app_manager_unittest.cc
@@ -49,6 +49,7 @@ #include "components/webapps/browser/installable/installable_metrics.h" #include "content/public/test/test_utils.h" #include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" #include "ui/base/idle/idle.h" #include "ui/base/idle/scoped_set_idle_state.h" #include "url/gurl.h" @@ -268,7 +269,25 @@ EXPECT_TRUE(IsInstalled(AppUrl3())); } -TEST_F(SystemWebAppManagerTest, AlwaysUpdate) { +class SystemWebAppManagerInstallationTest + : public SystemWebAppManagerTest, + public testing::WithParamInterface<bool> { + protected: + std::unique_ptr<UnittestingSystemAppDelegate> CreateSystemAppDelegate( + SystemWebAppType type, + const std::string& name, + const GURL& url, + web_app::WebAppInstallInfoFactory info_factory) { + auto system_app_delegate = std::make_unique<UnittestingSystemAppDelegate>( + type, name, url, info_factory); + system_app_delegate->SetShouldForceReinstall(ShouldForceReinstall()); + return system_app_delegate; + } + + bool ShouldForceReinstall() const { return GetParam(); } +}; + +TEST_P(SystemWebAppManagerInstallationTest, AlwaysUpdate) { system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kAlwaysUpdate); @@ -276,9 +295,9 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); } system_web_app_manager().set_current_version(base::Version("1.0.0.0")); @@ -293,9 +312,9 @@ system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); system_apps.emplace(SystemWebAppType::CAMERA, std::make_unique<UnittestingSystemAppDelegate>( SystemWebAppType::CAMERA, kCameraAppInternalName, @@ -305,10 +324,11 @@ // This one returns because on_apps_synchronized runs immediately. StartAndWaitForAppsToSynchronize(); EXPECT_TRUE(IsInstalled(AppUrl1())); + EXPECT_TRUE(WasReinstalled(AppUrl1())); EXPECT_TRUE(IsInstalled(AppUrl2())); } -TEST_F(SystemWebAppManagerTest, UpdateOnVersionChange) { +TEST_P(SystemWebAppManagerInstallationTest, UpdateOnVersionChange) { system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); @@ -316,9 +336,9 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); system_web_app_manager().set_current_version(base::Version("1.0.0.0")); } @@ -330,14 +350,14 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); // Create another app. The version hasn't changed, but we should immediately // install anyway, as if a user flipped a chrome://flag. The first app won't // force reinstall. system_apps.emplace(SystemWebAppType::CAMERA, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::CAMERA, kCameraAppInternalName, AppUrl2(), GetApp2WebAppInfoFactory())); @@ -345,6 +365,7 @@ } StartAndWaitForAppsToSynchronize(); EXPECT_TRUE(IsInstalled(AppUrl1())); + EXPECT_EQ(WasReinstalled(AppUrl1()), ShouldForceReinstall()); EXPECT_TRUE(IsInstalled(AppUrl2())); // Bump the version number, and an update will trigger, and force @@ -352,6 +373,7 @@ system_web_app_manager().set_current_version(base::Version("2.0.0.0")); StartAndWaitForAppsToSynchronize(); EXPECT_TRUE(IsInstalled(AppUrl1())); + EXPECT_TRUE(WasReinstalled(AppUrl1())); EXPECT_TRUE(IsInstalled(AppUrl2())); EXPECT_TRUE(IsVersionCorrect(base::Version("2.0.0.0"))); @@ -361,12 +383,12 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl3(), base::BindRepeating(&GetWebAppInstallInfo, AppUrl3()))); system_apps.emplace(SystemWebAppType::CAMERA, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::CAMERA, kCameraAppInternalName, AppUrl2(), GetApp2WebAppInfoFactory())); @@ -379,7 +401,8 @@ EXPECT_TRUE(IsInstalled(AppUrl3())); } -TEST_F(SystemWebAppManagerTest, UpdateOnVersionChangeEvenIfIconsBroken) { +TEST_P(SystemWebAppManagerInstallationTest, + UpdateOnVersionChangeEvenIfIconsBroken) { system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); @@ -387,9 +410,9 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); } system_web_app_manager().set_current_version(base::Version("1.0.0.0")); @@ -407,12 +430,15 @@ system_web_app_manager().set_current_version(base::Version("1.0.0.1")); StartAndWaitForAppsToSynchronize(); EXPECT_TRUE(IsInstalled(AppUrl1())); + EXPECT_TRUE(WasReinstalled(AppUrl1())); EXPECT_TRUE(IsVersionCorrect(base::Version("1.0.0.1"))); } -TEST_F(SystemWebAppManagerTest, RetryBrokenIcons) { +TEST_P(SystemWebAppManagerInstallationTest, RetryBrokenIcons) { // We don't want to force reinstall by default, we want to check that we - // correctly set to force reinstall when icons are broken. + // correctly set to force reinstall when icons are broken. The only exception + // to this is if the app decides to override the app update policy and force a + // reinstall. system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); @@ -420,9 +446,9 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); } @@ -437,7 +463,7 @@ // Icons not broken. system_web_app_manager().set_icons_are_broken(false); StartAndWaitForAppsToSynchronize(); - EXPECT_FALSE(WasReinstalled(AppUrl1())); + EXPECT_EQ(WasReinstalled(AppUrl1()), ShouldForceReinstall()); } { @@ -448,7 +474,7 @@ } } -TEST_F(SystemWebAppManagerTest, AbortOnExceedRetryLimit) { +TEST_P(SystemWebAppManagerInstallationTest, AbortOnExceedRetryLimit) { base::HistogramTester histograms; // We don't want to force reinstall by default, we want to check that we @@ -460,9 +486,9 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); system_web_app_manager().set_icons_are_broken(true); } @@ -506,13 +532,13 @@ } } -TEST_F(SystemWebAppManagerTest, UpdateOnLocaleChange) { +TEST_P(SystemWebAppManagerInstallationTest, UpdateOnLocaleChange) { system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); SystemWebAppDelegateMap system_apps; system_apps.emplace(SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); @@ -533,16 +559,21 @@ provider().registrar_unsafe().GetAppLatestInstallTime( GetAppIdFromInstallUrl(AppUrl1())); - // Do not reinstall because locale is not changed. + // Do not reinstall if the locale does not change unless the app overrides the + // app update policy. StartAndWaitForAppsToSynchronize(); EXPECT_TRUE(IsInstalled(AppUrl1())); base::Time retry_time_post_synchronize = provider().registrar_unsafe().GetAppLatestInstallTime( GetAppIdFromInstallUrl(AppUrl1())); - EXPECT_EQ(last_retry_time, retry_time_post_synchronize); + if (ShouldForceReinstall()) { + EXPECT_NE(last_retry_time, retry_time_post_synchronize); + } else { + EXPECT_EQ(last_retry_time, retry_time_post_synchronize); + } } -TEST_F(SystemWebAppManagerTest, InstallResultHistogram) { +TEST_P(SystemWebAppManagerInstallationTest, InstallResultHistogram) { base::HistogramTester histograms; const std::string settings_app_install_result_histogram = std::string(SystemWebAppManager::kInstallResultHistogramName) + ".Apps." + @@ -562,9 +593,9 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); histograms.ExpectTotalCount( @@ -597,11 +628,11 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetNullWebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetNullWebAppInfoFactory())); system_apps.emplace(SystemWebAppType::CAMERA, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::CAMERA, kCameraAppInternalName, AppUrl2(), GetNullWebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); @@ -627,9 +658,9 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); histograms.ExpectTotalCount( @@ -668,19 +699,19 @@ } } -TEST_F(SystemWebAppManagerTest, +TEST_P(SystemWebAppManagerInstallationTest, InstallDurationHistogram_ExcludeNonForceInstall) { base::HistogramTester histograms; SystemWebAppDelegateMap system_apps; system_apps.emplace(SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), GetApp1WebAppInfoFactory())); - system_apps.emplace(SystemWebAppType::CAMERA, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::CAMERA, kCameraAppInternalName, - AppUrl2(), GetApp2WebAppInfoFactory())); + system_apps.emplace( + SystemWebAppType::CAMERA, + CreateSystemAppDelegate(SystemWebAppType::CAMERA, kCameraAppInternalName, + AppUrl2(), GetApp2WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); @@ -704,13 +735,13 @@ } } -TEST_F(SystemWebAppManagerTest, AbandonFailedInstalls) { +TEST_P(SystemWebAppManagerInstallationTest, AbandonFailedInstalls) { system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); SystemWebAppDelegateMap system_apps; system_apps.emplace(SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); @@ -778,13 +809,13 @@ } // Same test, but for locale change. -TEST_F(SystemWebAppManagerTest, AbandonFailedInstallsLocaleChange) { +TEST_P(SystemWebAppManagerInstallationTest, AbandonFailedInstallsLocaleChange) { system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); SystemWebAppDelegateMap system_apps; system_apps.emplace(SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), GetApp1WebAppInfoFactory())); @@ -852,14 +883,14 @@ EXPECT_TRUE(WasReinstalled(AppUrl1())); } -TEST_F(SystemWebAppManagerTest, SucceedsAfterOneRetry) { +TEST_P(SystemWebAppManagerInstallationTest, SucceedsAfterOneRetry) { system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); // Set up and install a baseline SystemWebAppDelegateMap system_apps; system_apps.emplace(SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), GetApp1WebAppInfoFactory())); @@ -922,14 +953,14 @@ EXPECT_TRUE(IsVersionCorrect(base::Version("3.0.0.0"))); } -TEST_F(SystemWebAppManagerTest, ForceReinstallFeature) { +TEST_P(SystemWebAppManagerInstallationTest, ForceReinstallFeature) { system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); // Register a test system app. SystemWebAppDelegateMap system_apps; system_apps.emplace(SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( + CreateSystemAppDelegate( SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), GetApp1WebAppInfoFactory())); @@ -953,7 +984,7 @@ } } -TEST_F(SystemWebAppManagerTest, IsSWABeforeSync) { +TEST_P(SystemWebAppManagerInstallationTest, IsSWABeforeSync) { system_web_app_manager().SetUpdatePolicy( SystemWebAppManager::UpdatePolicy::kOnVersionChange); @@ -962,9 +993,9 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); system_web_app_manager().SetSystemAppsForTesting(std::move(system_apps)); } system_web_app_manager().set_current_version(base::Version("1.0.0.0")); @@ -980,9 +1011,9 @@ SystemWebAppDelegateMap system_apps; system_apps.emplace( SystemWebAppType::SETTINGS, - std::make_unique<UnittestingSystemAppDelegate>( - SystemWebAppType::SETTINGS, kSettingsAppInternalName, AppUrl1(), - GetApp1WebAppInfoFactory())); + CreateSystemAppDelegate(SystemWebAppType::SETTINGS, + kSettingsAppInternalName, AppUrl1(), + GetApp1WebAppInfoFactory())); unsynced_system_web_app_manager->SetSystemAppsForTesting( std::move(system_apps)); } @@ -991,6 +1022,10 @@ web_app::GenerateAppId(/*manifest_id=*/std::nullopt, AppUrl1()))); } +INSTANTIATE_TEST_SUITE_P(SystemWebAppManagerInstallationTests, + SystemWebAppManagerInstallationTest, + testing::Bool()); + class TimerSystemAppDelegate : public UnittestingSystemAppDelegate { public: TimerSystemAppDelegate(SystemWebAppType type,
diff --git a/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_installation.cc b/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_installation.cc index 089cd4f..6dc7960d 100644 --- a/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_installation.cc +++ b/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_installation.cc
@@ -106,6 +106,10 @@ return info_factory_.Run(); } +bool UnittestingSystemAppDelegate::ShouldForceReinstall() const { + return should_force_reinstall_; +} + std::vector<std::string> UnittestingSystemAppDelegate::GetAppIdsToUninstallAndReplace() const { return uninstall_and_replace_; @@ -209,6 +213,10 @@ return should_animate_theme_changes_; } +void UnittestingSystemAppDelegate::SetShouldForceReinstall(bool value) { + should_force_reinstall_ = value; +} + void UnittestingSystemAppDelegate::SetAppIdsToUninstallAndReplace( const std::vector<webapps::AppId>& ids) { uninstall_and_replace_ = ids;
diff --git a/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_installation.h b/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_installation.h index f8d5a63..f71bde0 100644 --- a/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_installation.h +++ b/chrome/browser/ash/system_web_apps/test_support/test_system_web_app_installation.h
@@ -42,7 +42,7 @@ const apps::AppLaunchParams&)>; std::unique_ptr<web_app::WebAppInstallInfo> GetWebAppInfo() const override; - + bool ShouldForceReinstall() const override; std::vector<std::string> GetAppIdsToUninstallAndReplace() const override; gfx::Size GetMinimumWindowSize() const override; BrowserDelegate* GetWindowForLaunch(Profile* profile, @@ -73,6 +73,7 @@ bool IsUrlInSystemAppScope(const GURL& url) const override; bool UseSystemThemeColor() const override; bool ShouldAnimateThemeChanges() const override; + void SetShouldForceReinstall(bool); void SetAppIdsToUninstallAndReplace(const std::vector<webapps::AppId>&); void SetMinimumWindowSize(const gfx::Size&); void SetShouldReuseExistingWindow(bool); @@ -102,6 +103,7 @@ web_app::WebAppInstallInfoFactory info_factory_; std::vector<webapps::AppId> uninstall_and_replace_; gfx::Size minimum_window_size_; + bool should_force_reinstall_ = false; bool single_window_ = true; bool show_new_window_menu_option_ = false; bool include_launch_directory_ = false;
diff --git a/chrome/browser/component_updater/metadata_table_chromeos.cc b/chrome/browser/component_updater/metadata_table_chromeos.cc index 6135151b..29a0b6a 100644 --- a/chrome/browser/component_updater/metadata_table_chromeos.cc +++ b/chrome/browser/component_updater/metadata_table_chromeos.cc
@@ -60,8 +60,8 @@ // The result is converted to lowercase to stay compatible with // CryptoLib::HexEncodeToBuffer(). std::string HashUsername(std::string_view username) { - return base::ToLowerASCII(base::HexEncode( - base::SHA1Hash(base::as_byte_span(base::ToLowerASCII(username))))); + return base::HexEncodeLower( + base::SHA1Hash(base::as_byte_span(base::ToLowerASCII(username)))); } const std::string& GetRequiredStringFromDict(const base::Value& dict,
diff --git a/chrome/browser/device_identity/chromeos/token_encryptor.cc b/chrome/browser/device_identity/chromeos/token_encryptor.cc index 93eedc10..943b0e5 100644 --- a/chrome/browser/device_identity/chromeos/token_encryptor.cc +++ b/chrome/browser/device_identity/chromeos/token_encryptor.cc
@@ -59,8 +59,7 @@ // Return a concatenation of the nonce (counter) and the encrypted data, both // hex-encoded. - return base::ToLowerASCII(base::HexEncode(nonce) + - base::HexEncode(ciphertext)); + return base::HexEncodeLower(nonce) + base::HexEncodeLower(ciphertext); } std::string CryptohomeTokenEncryptor::DecryptWithSystemSalt( @@ -99,8 +98,8 @@ return token; } - return base::ToLowerASCII(base::HexEncode( - crypto::aes_ctr::Encrypt(key_, nonce_, base::as_byte_span(token)))); + return base::HexEncodeLower( + crypto::aes_ctr::Encrypt(key_, nonce_, base::as_byte_span(token))); } std::string CryptohomeTokenEncryptor::WeakDecryptWithSystemSalt(
diff --git a/chrome/browser/devtools/devtools_file_helper.cc b/chrome/browser/devtools/devtools_file_helper.cc index d665f3c..12582bb 100644 --- a/chrome/browser/devtools/devtools_file_helper.cc +++ b/chrome/browser/devtools/devtools_file_helper.cc
@@ -44,7 +44,7 @@ namespace devtools { std::string Md5OfUrlAsHexForDevTools(std::string_view url) { - return base::ToLowerASCII(base::HexEncode(crypto::obsolete::Md5::Hash(url))); + return base::HexEncodeLower(crypto::obsolete::Md5::Hash(url)); } } // namespace devtools
diff --git a/chrome/browser/extensions/api/certificate_provider/certificate_provider_apitest.cc b/chrome/browser/extensions/api/certificate_provider/certificate_provider_apitest.cc index bfee768..1209f581 100644 --- a/chrome/browser/extensions/api/certificate_provider/certificate_provider_apitest.cc +++ b/chrome/browser/extensions/api/certificate_provider/certificate_provider_apitest.cc
@@ -168,7 +168,7 @@ } std::string GetCertFingerprint1(const net::X509Certificate& cert) { - return base::ToLowerASCII(base::HexEncode(base::SHA1Hash(cert.cert_span()))); + return base::HexEncodeLower(base::SHA1Hash(cert.cert_span())); } // Generates a gtest failure whenever extension JS reports failure.
diff --git a/chrome/browser/extensions/api/image_writer_private/operation.cc b/chrome/browser/extensions/api/image_writer_private/operation.cc index 999c44e3..f097080 100644 --- a/chrome/browser/extensions/api/image_writer_private/operation.cc +++ b/chrome/browser/extensions/api/image_writer_private/operation.cc
@@ -305,7 +305,7 @@ if (read_size == 0) { // Nothing to read, we are done. - std::move(callback).Run(base::ToLowerASCII(base::HexEncode(md5.Finish()))); + std::move(callback).Run(base::HexEncodeLower(md5.Finish())); } else { int64_t offset = base::checked_cast<int64_t>(bytes_processed); auto target = base::span(buffer).first(read_size);
diff --git a/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc b/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc index 1da1e641..75bb7fea 100644 --- a/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc +++ b/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc
@@ -207,8 +207,8 @@ TEST_F(ImageWriterWriteFromUrlOperationTest, VerifyFile) { auto buffer = base::HeapArray<uint8_t>::Uninit(kTestFileSize); base::ReadFile(test_utils_.GetImagePath(), buffer); - std::string expected_hash = base::ToLowerASCII( - base::HexEncode(crypto::obsolete::Md5::HashForTesting(buffer.as_span()))); + std::string expected_hash = base::HexEncodeLower( + crypto::obsolete::Md5::HashForTesting(buffer.as_span())); scoped_refptr<WriteFromUrlOperationForTest> operation = CreateOperation(GURL(""), expected_hash);
diff --git a/chrome/browser/extensions/updater/local_extension_cache_unittest.cc b/chrome/browser/extensions/updater/local_extension_cache_unittest.cc index af6c0e5..f2e4747 100644 --- a/chrome/browser/extensions/updater/local_extension_cache_unittest.cc +++ b/chrome/browser/extensions/updater/local_extension_cache_unittest.cc
@@ -84,8 +84,8 @@ const base::Time& timestamp, base::FilePath* filename) { std::string data(size, 0); - const std::string hex_hash = base::ToLowerASCII( - base::HexEncode(crypto::hash::Sha256(base::as_byte_span(data)))); + const std::string hex_hash = + base::HexEncodeLower(crypto::hash::Sha256(base::as_byte_span(data))); const base::FilePath file = GetExtensionFileName(dir, id, version, hex_hash);
diff --git a/chrome/browser/glic/browser_ui/glic_border_view_interactive_uitest.cc b/chrome/browser/glic/browser_ui/glic_border_view_interactive_uitest.cc index 81822f6..14a425f 100644 --- a/chrome/browser/glic/browser_ui/glic_border_view_interactive_uitest.cc +++ b/chrome/browser/glic/browser_ui/glic_border_view_interactive_uitest.cc
@@ -209,8 +209,9 @@ class GlicBorderViewUiTest : public test::InteractiveGlicTest { public: GlicBorderViewUiTest() { - // Toggling this feature is only possible via command line. - features_.InitFromCommandLine("UiGpuRasterization", ""); + // Toggling UiGpuRasterization is only possible via command line. + features_.InitFromCommandLine("UiGpuRasterization", + "GlicForceSimplifiedBorder"); } ~GlicBorderViewUiTest() override = default;
diff --git a/chrome/browser/glic/browser_ui/glic_tab_underline_view_interactive_uitest.cc b/chrome/browser/glic/browser_ui/glic_tab_underline_view_interactive_uitest.cc index 8749b37..e75b168 100644 --- a/chrome/browser/glic/browser_ui/glic_tab_underline_view_interactive_uitest.cc +++ b/chrome/browser/glic/browser_ui/glic_tab_underline_view_interactive_uitest.cc
@@ -169,7 +169,8 @@ const std::string enabled_features = base::StrCat({multitab_feature_name, ",", underline_feature_name, ",", "UiGpuRasterization"}); - features_.InitFromCommandLine(enabled_features, /*disable_features=*/""); + features_.InitFromCommandLine( + enabled_features, /*disable_features=*/"GlicForceSimplifiedBorder"); } ~GlicTabUnderlineViewUiTest() override = default;
diff --git a/chrome/browser/media/router/discovery/discovery_network_monitor.cc b/chrome/browser/media/router/discovery/discovery_network_monitor.cc index 28553f8..4d88084 100644 --- a/chrome/browser/media/router/discovery/discovery_network_monitor.cc +++ b/chrome/browser/media/router/discovery/discovery_network_monitor.cc
@@ -40,8 +40,7 @@ combined_ids = combined_ids + "!" + network_info.network_id; } - return base::ToLowerASCII( - base::HexEncode(crypto::hash::Sha256(combined_ids))); + return base::HexEncodeLower(crypto::hash::Sha256(combined_ids)); } } // namespace
diff --git a/chrome/browser/permissions/permission_request_manager_browsertest.cc b/chrome/browser/permissions/permission_request_manager_browsertest.cc index 997af8c..b52e892 100644 --- a/chrome/browser/permissions/permission_request_manager_browsertest.cc +++ b/chrome/browser/permissions/permission_request_manager_browsertest.cc
@@ -1608,18 +1608,15 @@ permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); // Request notification permission. - content::WebContents* web_contents = - browser()->tab_strip_model()->GetActiveWebContents(); - permissions::PermissionRequestObserver observer(web_contents); - ASSERT_TRUE(content::ExecJs(web_contents, R"( - new Promise(resolve => { - Notification.requestPermission().then(function (permission) { - resolve(permission); - }); - }) - )", - content::EXECUTE_SCRIPT_NO_USER_GESTURE)); - observer.Wait(); + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kNotifications, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); EXPECT_EQ(1, bubble_factory()->show_count()); // Close the tab. @@ -1647,18 +1644,15 @@ permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); // Request notification permission. - content::WebContents* web_contents = - browser()->tab_strip_model()->GetActiveWebContents(); - permissions::PermissionRequestObserver observer(web_contents); - ASSERT_TRUE(content::ExecJs(web_contents, R"( - new Promise(resolve => { - Notification.requestPermission().then(function (permission) { - resolve(permission); - }); - }) - )", - content::EXECUTE_SCRIPT_NO_USER_GESTURE)); - observer.Wait(); + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kNotifications, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); EXPECT_EQ(1, bubble_factory()->show_count()); // Navigate away. @@ -1751,6 +1745,330 @@ "Permissions.PredictionService.Geolocation.PostPromptSessionDuration", 1); } +IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, + PostPromptSessionDuration_10s_Notifications) { + ASSERT_TRUE(embedded_test_server()->Start()); + base::HistogramTester histogram_tester; + const GURL kInitialURL = + embedded_test_server()->GetURL("/permissions/killswitch_tester.html"); + + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), kInitialURL)); + bubble_factory()->set_response_type( + permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); + + // Request notification permission. + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kNotifications, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); + GetPermissionRequestManager() + ->set_notification_request_first_display_time_for_testing( + base::TimeTicks::Now() - base::Seconds(5)); + + // Close the tab. + browser()->tab_strip_model()->CloseWebContentsAt( + browser()->tab_strip_model()->active_index(), + TabCloseTypes::CLOSE_USER_GESTURE); + + // Histogram should be recorded. + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications." + "PostPromptSessionDuration10s", + 1); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications.PostPromptSessionDuration", + 1); +} + +IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, + PostPromptSessionDuration_10s_Geolocation) { + ASSERT_TRUE(embedded_test_server()->Start()); + base::HistogramTester histogram_tester; + const GURL kInitialURL = + embedded_test_server()->GetURL("/permissions/killswitch_tester.html"); + + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), kInitialURL)); + bubble_factory()->set_response_type( + permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); + + // Request geolocation permission. + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kGeolocation, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); + GetPermissionRequestManager() + ->set_geolocation_request_first_display_time_for_testing( + base::TimeTicks::Now() - base::Seconds(5)); + + // Close the tab. + browser()->tab_strip_model()->CloseWebContentsAt( + browser()->tab_strip_model()->active_index(), + TabCloseTypes::CLOSE_USER_GESTURE); + + // Histogram should be recorded. + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Geolocation.PostPromptSessionDuration10s", + 1); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Geolocation.PostPromptSessionDuration", 1); +} + +IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, + PostPromptSessionDuration_1m_Notifications) { + ASSERT_TRUE(embedded_test_server()->Start()); + base::HistogramTester histogram_tester; + const GURL kInitialURL = + embedded_test_server()->GetURL("/permissions/killswitch_tester.html"); + + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), kInitialURL)); + bubble_factory()->set_response_type( + permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); + + // Request notification permission. + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kNotifications, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); + GetPermissionRequestManager() + ->set_notification_request_first_display_time_for_testing( + base::TimeTicks::Now() - base::Seconds(30)); + + // Close the tab. + browser()->tab_strip_model()->CloseWebContentsAt( + browser()->tab_strip_model()->active_index(), + TabCloseTypes::CLOSE_USER_GESTURE); + + // Histogram should be recorded. + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications." + "PostPromptSessionDuration10s", + 0); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications.PostPromptSessionDuration1m", + 1); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications.PostPromptSessionDuration", + 1); +} + +IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, + PostPromptSessionDuration_Notifications_Over1m) { + ASSERT_TRUE(embedded_test_server()->Start()); + base::HistogramTester histogram_tester; + const GURL kInitialURL = + embedded_test_server()->GetURL("/permissions/killswitch_tester.html"); + + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), kInitialURL)); + bubble_factory()->set_response_type( + permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); + + // Request notification permission. + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kNotifications, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); + GetPermissionRequestManager() + ->set_notification_request_first_display_time_for_testing( + base::TimeTicks::Now() - base::Seconds(70)); + + // Close the tab. + browser()->tab_strip_model()->CloseWebContentsAt( + browser()->tab_strip_model()->active_index(), + TabCloseTypes::CLOSE_USER_GESTURE); + + // Histogram should be recorded. + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications." + "PostPromptSessionDuration10s", + 0); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications.PostPromptSessionDuration1m", + 0); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications.PostPromptSessionDuration", + 1); +} + +IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, + PostPromptSessionDuration_1m_Geolocation) { + ASSERT_TRUE(embedded_test_server()->Start()); + base::HistogramTester histogram_tester; + const GURL kInitialURL = + embedded_test_server()->GetURL("/permissions/killswitch_tester.html"); + + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), kInitialURL)); + bubble_factory()->set_response_type( + permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); + + // Request geolocation permission. + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kGeolocation, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); + GetPermissionRequestManager() + ->set_geolocation_request_first_display_time_for_testing( + base::TimeTicks::Now() - base::Seconds(30)); + + // Close the tab. + browser()->tab_strip_model()->CloseWebContentsAt( + browser()->tab_strip_model()->active_index(), + TabCloseTypes::CLOSE_USER_GESTURE); + + // Histogram should be recorded. + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Geolocation.PostPromptSessionDuration10s", + 0); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Geolocation.PostPromptSessionDuration1m", + 1); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Geolocation.PostPromptSessionDuration", 1); +} + +IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, + PostPromptSessionDuration_Geolocation_Over1m) { + ASSERT_TRUE(embedded_test_server()->Start()); + base::HistogramTester histogram_tester; + const GURL kInitialURL = + embedded_test_server()->GetURL("/permissions/killswitch_tester.html"); + + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), kInitialURL)); + bubble_factory()->set_response_type( + permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); + + // Request geolocation permission. + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kGeolocation, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); + GetPermissionRequestManager() + ->set_geolocation_request_first_display_time_for_testing( + base::TimeTicks::Now() - base::Seconds(70)); + + // Close the tab. + browser()->tab_strip_model()->CloseWebContentsAt( + browser()->tab_strip_model()->active_index(), + TabCloseTypes::CLOSE_USER_GESTURE); + + // Histogram should be recorded. + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Geolocation.PostPromptSessionDuration10s", + 0); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Geolocation.PostPromptSessionDuration1m", + 0); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Geolocation.PostPromptSessionDuration", 1); +} + +IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, + PostPromptSessionDuration_5m_Notifications) { + ASSERT_TRUE(embedded_test_server()->Start()); + base::HistogramTester histogram_tester; + const GURL kInitialURL = + embedded_test_server()->GetURL("/permissions/killswitch_tester.html"); + + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), kInitialURL)); + bubble_factory()->set_response_type( + permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); + + // Request notification permission. + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kNotifications, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); + GetPermissionRequestManager() + ->set_notification_request_first_display_time_for_testing( + base::TimeTicks::Now() - base::Minutes(3)); + + // Close the tab. + browser()->tab_strip_model()->CloseWebContentsAt( + browser()->tab_strip_model()->active_index(), + TabCloseTypes::CLOSE_USER_GESTURE); + + // Histogram should be recorded. + histogram_tester.ExpectUniqueSample( + "Permissions.PredictionService.Notifications.PostPromptSessionDuration5m", + base::Minutes(3).InMilliseconds(), 1); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications.PostPromptSessionDuration", + 1); +} + +IN_PROC_BROWSER_TEST_F(PermissionRequestManagerBrowserTest, + PostPromptSessionDuration_5m_Geolocation) { + ASSERT_TRUE(embedded_test_server()->Start()); + base::HistogramTester histogram_tester; + const GURL kInitialURL = + embedded_test_server()->GetURL("/permissions/killswitch_tester.html"); + + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), kInitialURL)); + bubble_factory()->set_response_type( + permissions::PermissionRequestManager::AutoResponseType::ACCEPT_ALL); + + // Request notification permission. + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + auto request_supported = std::make_unique<permissions::MockPermissionRequest>( + kInitialURL, permissions::RequestType::kGeolocation, + permissions::PermissionRequestGestureType::GESTURE, + /*request_state=*/nullptr); + GetPermissionRequestManager()->AddRequest(web_contents->GetPrimaryMainFrame(), + std::move(request_supported)); + + bubble_factory()->WaitForPermissionBubble(); + GetPermissionRequestManager() + ->set_notification_request_first_display_time_for_testing( + base::TimeTicks::Now() - base::Minutes(3)); + + // Close the tab. + browser()->tab_strip_model()->CloseWebContentsAt( + browser()->tab_strip_model()->active_index(), + TabCloseTypes::CLOSE_USER_GESTURE); + + // Histogram should be recorded. + histogram_tester.ExpectUniqueSample( + "Permissions.PredictionService.Notifications.PostPromptSessionDuration5m", + base::Minutes(3).InMilliseconds(), 1); + histogram_tester.ExpectTotalCount( + "Permissions.PredictionService.Notifications.PostPromptSessionDuration", + 1); +} + class PermissionRequestManagerApproximateLocationBrowserTest : public PermissionRequestManagerBrowserTestBase { base::test::ScopedFeatureList scoped_feature_list_ =
diff --git a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc index f7b2971..0a17afd 100644 --- a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc +++ b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc
@@ -84,7 +84,7 @@ std::sort(enabled_extensions_.begin(), enabled_extensions_.end()); // Choose a random ID for this snapshot and store it. - guid_ = base::ToLowerASCII(base::HexEncode(crypto::RandBytesAsArray<16>())); + guid_ = base::HexEncodeLower(crypto::RandBytesAsArray<16>()); } ResettableSettingsSnapshot::~ResettableSettingsSnapshot() {
diff --git a/chrome/browser/safe_browsing/threat_details_unittest.cc b/chrome/browser/safe_browsing/threat_details_unittest.cc index bdc49eb..00a669297 100644 --- a/chrome/browser/safe_browsing/threat_details_unittest.cc +++ b/chrome/browser/safe_browsing/threat_details_unittest.cc
@@ -72,8 +72,8 @@ namespace { std::string ComputeMd5(std::string_view data) { - return base::ToLowerASCII(base::HexEncode( - crypto::obsolete::Md5::HashForTesting(base::as_byte_span(data)))); + return base::HexEncodeLower( + crypto::obsolete::Md5::HashForTesting(base::as_byte_span(data))); } // Mixture of HTTP and HTTPS. No special treatment for HTTPS.
diff --git a/chrome/browser/shell_integration_mac_unittest.mm b/chrome/browser/shell_integration_mac_unittest.mm index dc79229..29ce73df 100644 --- a/chrome/browser/shell_integration_mac_unittest.mm +++ b/chrome/browser/shell_integration_mac_unittest.mm
@@ -10,46 +10,34 @@ #include "components/version_info/channel.h" #include "testing/gtest/include/gtest/gtest.h" +#if BUILDFLAG(GOOGLE_CHROME_BRANDING) +#include "chrome/test/base/scoped_channel_override.h" +#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) + namespace shell_integration { #if BUILDFLAG(GOOGLE_CHROME_BRANDING) -// A test fixture that allows for overriding the channel on macOS. -class ShellIntegrationMacTest : public testing::Test { - public: - ShellIntegrationMacTest() = default; - protected: - class ScopedChannelOverrider { - public: - explicit ScopedChannelOverrider(version_info::Channel channel) - : original_channel_(chrome::GetChannel()) { - chrome::SetChannelForTesting(channel); - } - ~ScopedChannelOverrider() { - chrome::SetChannelForTesting(original_channel_); - } - - private: - version_info::Channel original_channel_; - }; -}; - -TEST_F(ShellIntegrationMacTest, GetDirectLaunchUrlScheme) { +TEST(ShellIntegrationMacTest, GetDirectLaunchUrlScheme) { // Test each channel on Mac. { - ScopedChannelOverrider stable(version_info::Channel::STABLE); + chrome::ScopedChannelOverride stable( + chrome::ScopedChannelOverride::Channel::kStable); EXPECT_EQ("google-chrome", GetDirectLaunchUrlScheme()); } { - ScopedChannelOverrider beta(version_info::Channel::BETA); + chrome::ScopedChannelOverride beta( + chrome::ScopedChannelOverride::Channel::kBeta); EXPECT_EQ("google-chrome-beta", GetDirectLaunchUrlScheme()); } { - ScopedChannelOverrider dev(version_info::Channel::DEV); + chrome::ScopedChannelOverride dev( + chrome::ScopedChannelOverride::Channel::kDev); EXPECT_EQ("google-chrome-dev", GetDirectLaunchUrlScheme()); } { - ScopedChannelOverrider canary(version_info::Channel::CANARY); + chrome::ScopedChannelOverride canary( + chrome::ScopedChannelOverride::Channel::kCanary); EXPECT_EQ("google-chrome-canary", GetDirectLaunchUrlScheme()); } }
diff --git a/chrome/browser/shortcuts/shortcut_creator_linux.cc b/chrome/browser/shortcuts/shortcut_creator_linux.cc index 0a73cd1..0470c3c 100644 --- a/chrome/browser/shortcuts/shortcut_creator_linux.cc +++ b/chrome/browser/shortcuts/shortcut_creator_linux.cc
@@ -39,8 +39,7 @@ namespace { base::SafeBaseName GenerateIconFilename(const GURL& url) { - std::string url_hash = - base::ToLowerASCII(base::HexEncode(crypto::hash::Sha256(url.spec()))); + std::string url_hash = base::HexEncodeLower(crypto::hash::Sha256(url.spec())); std::optional<base::SafeBaseName> base_name = base::SafeBaseName::Create(base::StrCat({"shortcut-", url_hash, ".png"})); CHECK(base_name);
diff --git a/chrome/browser/spellchecker/spellcheck_custom_dictionary.cc b/chrome/browser/spellchecker/spellcheck_custom_dictionary.cc index 0f35e19..de95adb 100644 --- a/chrome/browser/spellchecker/spellcheck_custom_dictionary.cc +++ b/chrome/browser/spellchecker/spellcheck_custom_dictionary.cc
@@ -39,7 +39,7 @@ namespace spellcheck { std::string Md5AsHexForDictionaryChecksum(std::string_view data) { - return base::ToLowerASCII(base::HexEncode(crypto::obsolete::Md5::Hash(data))); + return base::HexEncodeLower(crypto::obsolete::Md5::Hash(data)); } } // namespace spellcheck
diff --git a/chrome/browser/sync/test/integration/single_client_webauthn_credentials_sync_test.cc b/chrome/browser/sync/test/integration/single_client_webauthn_credentials_sync_test.cc index 5a9ede0..cd1728b 100644 --- a/chrome/browser/sync/test/integration/single_client_webauthn_credentials_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_webauthn_credentials_sync_test.cc
@@ -967,8 +967,8 @@ sync_pb::WebauthnCredentialSpecifics specifics3 = NewPasskey(); expected_sync_ids.push_back(specifics3.sync_id()); fake_server_->InjectEntity(CreateEntityWithCustomClientTagHash( - /*client_tag_hash=*/base::ToLowerASCII( - base::HexEncode(base::as_byte_span(specifics3.sync_id()))), + /*client_tag_hash=*/ + base::HexEncodeLower(base::as_byte_span(specifics3.sync_id())), specifics3)); } @@ -1033,8 +1033,8 @@ sync_pb::WebauthnCredentialSpecifics specifics3 = NewPasskey(); expected_sync_ids.push_back(specifics3.sync_id()); fake_server_->InjectEntity(CreateEntityWithCustomClientTagHash( - /*client_tag_hash=*/base::ToLowerASCII( - base::HexEncode(base::as_byte_span(specifics3.sync_id()))), + /*client_tag_hash=*/ + base::HexEncodeLower(base::as_byte_span(specifics3.sync_id())), specifics3)); }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionController.java index e884992..ad74d4f 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionController.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionController.java
@@ -665,7 +665,7 @@ // top. We restrict its position and height to allow scrolling and avoid rendering // offscreen. int windowHeight = mWindowAndroid.getDisplay().getDisplayHeight(); - int maxHeight = windowHeight - keyboardHeight; + int maxHeight = windowHeight - keyboardHeight - statusBarHeight; mControlContainer.setMaxHeight(maxHeight); int maxTranslation = -(windowHeight - layer.getHeight() - statusBarHeight);
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionControllerTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionControllerTest.java index e071154..fdf16bad 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionControllerTest.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarPositionControllerTest.java
@@ -1107,7 +1107,7 @@ doReturn(430).when(mDisplayAndroid).getDisplayHeight(); mKeyboardHeightSupplier.set(401); verify(mControlContainerView).setTranslationY(-(430f - TOOLBAR_HEIGHT - statusBarHeight)); - verify(mControlContainer, atLeast(1)).setMaxHeight(30); + verify(mControlContainer, atLeast(1)).setMaxHeight(20); } @Test
diff --git a/chrome/browser/ui/ash/wallpaper/wallpaper_controller_client_impl.cc b/chrome/browser/ui/ash/wallpaper/wallpaper_controller_client_impl.cc index 7b2dff02..8508c6a 100644 --- a/chrome/browser/ui/ash/wallpaper/wallpaper_controller_client_impl.cc +++ b/chrome/browser/ui/ash/wallpaper/wallpaper_controller_client_impl.cc
@@ -124,7 +124,7 @@ // presumably meant to lowercase the input string before hashing, but it did // not. base::Extend(data, base::as_byte_span(files_id_unhashed)); - return base::ToLowerASCII(base::HexEncode(base::SHA1Hash(data))); + return base::HexEncodeLower(base::SHA1Hash(data)); } // Returns true if wallpaper files id can be returned successfully.
diff --git a/chrome/browser/ui/webui/certificate_manager/client_cert_sources_writable_unittest.cc b/chrome/browser/ui/webui/certificate_manager/client_cert_sources_writable_unittest.cc index 9cf56514..610b1ac 100644 --- a/chrome/browser/ui/webui/certificate_manager/client_cert_sources_writable_unittest.cc +++ b/chrome/browser/ui/webui/certificate_manager/client_cert_sources_writable_unittest.cc
@@ -85,7 +85,7 @@ } std::string HexHash(base::span<const uint8_t> data) { - return base::ToLowerASCII(base::HexEncode(crypto::SHA256Hash(data))); + return base::HexEncodeLower(crypto::SHA256Hash(data)); } class FakeCertificateManagerPage
diff --git a/chrome/browser/ui/webui/certificate_manager/user_cert_sources_unittest.cc b/chrome/browser/ui/webui/certificate_manager/user_cert_sources_unittest.cc index 6033984..336d4f56 100644 --- a/chrome/browser/ui/webui/certificate_manager/user_cert_sources_unittest.cc +++ b/chrome/browser/ui/webui/certificate_manager/user_cert_sources_unittest.cc
@@ -128,13 +128,11 @@ ASSERT_EQ(infos.size(), 2u); EXPECT_EQ(infos[0]->sha256hash_hex, - base::ToLowerASCII( - base::HexEncode(net::X509Certificate::CalculateFingerprint256( - test_cert_1->cert_buffer())))); + base::HexEncodeLower(net::X509Certificate::CalculateFingerprint256( + test_cert_1->cert_buffer()))); EXPECT_EQ(infos[1]->sha256hash_hex, - base::ToLowerASCII( - base::HexEncode(net::X509Certificate::CalculateFingerprint256( - test_cert_2->cert_buffer())))); + base::HexEncodeLower(net::X509Certificate::CalculateFingerprint256( + test_cert_2->cert_buffer()))); } TEST_F(UserCertSourcesUnitTest, TestImportCertificate) { @@ -318,11 +316,11 @@ base::test::TestFuture<certificate_manager::mojom::ActionResultPtr> delete_future; - source.DeleteCertificate("", - base::ToLowerASCII(base::HexEncode( - net::X509Certificate::CalculateFingerprint256( - test_cert_1->cert_buffer()))), - delete_future.GetCallback()); + source.DeleteCertificate( + "", + base::HexEncodeLower(net::X509Certificate::CalculateFingerprint256( + test_cert_1->cert_buffer())), + delete_future.GetCallback()); certificate_manager::mojom::ActionResultPtr delete_result = delete_future.Take(); ASSERT_TRUE(delete_result); @@ -332,9 +330,8 @@ GetAllCertsFromDB(); ASSERT_EQ(remaining_certs.size(), 1u); EXPECT_EQ(remaining_certs[0].sha256hash_hex, - base::ToLowerASCII( - base::HexEncode(net::X509Certificate::CalculateFingerprint256( - test_cert_2->cert_buffer())))); + base::HexEncodeLower(net::X509Certificate::CalculateFingerprint256( + test_cert_2->cert_buffer()))); EXPECT_TRUE(fake_page->metadata_update_called()); } @@ -364,11 +361,11 @@ base::test::TestFuture<certificate_manager::mojom::ActionResultPtr> delete_future; - source.DeleteCertificate("", - base::ToLowerASCII(base::HexEncode( - net::X509Certificate::CalculateFingerprint256( - test_cert_1->cert_buffer()))), - delete_future.GetCallback()); + source.DeleteCertificate( + "", + base::HexEncodeLower(net::X509Certificate::CalculateFingerprint256( + test_cert_1->cert_buffer())), + delete_future.GetCallback()); certificate_manager::mojom::ActionResultPtr delete_result = delete_future.Take(); EXPECT_TRUE(delete_result.is_null()); @@ -408,11 +405,11 @@ static_cast<int>(CACertificateManagementPermission::kNone)); base::test::TestFuture<certificate_manager::mojom::ActionResultPtr> delete_future; - source.DeleteCertificate("", - base::ToLowerASCII(base::HexEncode( - net::X509Certificate::CalculateFingerprint256( - test_cert_1->cert_buffer()))), - delete_future.GetCallback()); + source.DeleteCertificate( + "", + base::HexEncodeLower(net::X509Certificate::CalculateFingerprint256( + test_cert_1->cert_buffer())), + delete_future.GetCallback()); certificate_manager::mojom::ActionResultPtr delete_result = delete_future.Take(); EXPECT_TRUE(delete_result->is_error());
diff --git a/chrome/browser/ui/webui/connectors_internals/device_trust_utils.cc b/chrome/browser/ui/webui/connectors_internals/device_trust_utils.cc index b4922fba..ac0b065a 100644 --- a/chrome/browser/ui/webui/connectors_internals/device_trust_utils.cc +++ b/chrome/browser/ui/webui/connectors_internals/device_trust_utils.cc
@@ -165,9 +165,8 @@ } return connectors_internals::mojom::CertificateMetadata::New( - base::ToLowerASCII(base::HexEncode(certificate->serial_number())), - base::ToLowerASCII( - base::HexEncode(certificate->CalculateChainFingerprint256())), + base::HexEncodeLower(certificate->serial_number()), + base::HexEncodeLower(certificate->CalculateChainFingerprint256()), base::UnlocalizedTimeFormatWithPattern(certificate->valid_start(), "MMM d, yyyy"), base::UnlocalizedTimeFormatWithPattern(certificate->valid_expiry(),
diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc index 496c9cb..1b62745 100644 --- a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc +++ b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
@@ -507,7 +507,7 @@ dict.Set("expiration", base::NumberToString(item->expiration.InSeconds())); dict.Set("last_used_time", base::TimeFormatHTTP(item->last_used_time)); dict.Set("size", base::NumberToString(item->size)); - dict.Set("hash", base::ToLowerASCII(base::HexEncode(item->hash))); + dict.Set("hash", base::HexEncodeLower(item->hash)); dict_list.Append(std::move(dict)); } AllowJavascript();
diff --git a/chrome/browser/web_applications/os_integration/web_app_uninstallation_via_os_settings_registration_win.cc b/chrome/browser/web_applications/os_integration/web_app_uninstallation_via_os_settings_registration_win.cc index 7f4b0946..8c72949 100644 --- a/chrome/browser/web_applications/os_integration/web_app_uninstallation_via_os_settings_registration_win.cc +++ b/chrome/browser/web_applications/os_integration/web_app_uninstallation_via_os_settings_registration_win.cc
@@ -30,8 +30,8 @@ // Deliberately not in namespace{} so it can be friended by // crypto::obsolete::Md5. std::wstring Md5AsHexForUninstall(const std::wstring& key) { - return base::ASCIIToWide(base::ToLowerASCII( - base::HexEncode(crypto::obsolete::Md5::Hash(base::as_byte_span(key))))); + return base::ASCIIToWide(base::HexEncodeLower( + crypto::obsolete::Md5::Hash(base::as_byte_span(key)))); } } // namespace internals
diff --git a/chrome/build/android-arm32.pgo.txt b/chrome/build/android-arm32.pgo.txt index c094d1dd..cde71f2 100644 --- a/chrome/build/android-arm32.pgo.txt +++ b/chrome/build/android-arm32.pgo.txt
@@ -1 +1 @@ -chrome-android32-main-1761976497-06cead0a5728a9a7ac90f3241746256a493ef7e5-93e6fae7c4b463985d5c02e215f15c78aeeeed63.profdata +chrome-android32-main-1762041312-169e4a909a97a2bf47ba27f27d6606cb834ea489-00b822863d8d0c0d2b9bd92a9e886e1eac7c763c.profdata
diff --git a/chrome/build/android-desktop-x64.pgo.txt b/chrome/build/android-desktop-x64.pgo.txt index 185f9637..a652ff07 100644 --- a/chrome/build/android-desktop-x64.pgo.txt +++ b/chrome/build/android-desktop-x64.pgo.txt
@@ -1 +1 @@ -chrome-android-desktop-x64-main-1761976497-036f396c9995ce36cfce11b449301b33dabfe97c-93e6fae7c4b463985d5c02e215f15c78aeeeed63.profdata +chrome-android-desktop-x64-main-1762041312-c59a2ec1ffac2635f5609371ff20faee92d8ac0c-00b822863d8d0c0d2b9bd92a9e886e1eac7c763c.profdata
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index f3eb8cd..ce1f201 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1761976497-dc60266066e070954e26b78cc7785003a5e1cc75-93e6fae7c4b463985d5c02e215f15c78aeeeed63.profdata +chrome-linux-main-1762041312-0dccdf69e3c6357233b5450a32b97f987744076b-00b822863d8d0c0d2b9bd92a9e886e1eac7c763c.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 492e5c8..9659003 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1761983958-5e03c5a0d7bb060540613c6a0e6dd24fa64fe9fa-47ed8db11bbf739df7173496d6d2b0bddbdf459d.profdata +chrome-mac-arm-main-1762048720-864305bfd18ac008b08ba50e281e63e2f166b4d4-b8bc17f084467c881f507f344067d23574c087e9.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 56a3624..a4034aa1 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1761976497-e823362955ef1b61399670d5e9d1b39a4a1440e7-93e6fae7c4b463985d5c02e215f15c78aeeeed63.profdata +chrome-mac-main-1762041312-02ca7022e969a8d5bcf13ef37882ee4287b9b2b5-00b822863d8d0c0d2b9bd92a9e886e1eac7c763c.profdata
diff --git a/chrome/build/win-arm64.pgo.txt b/chrome/build/win-arm64.pgo.txt index 6c2aa1a..04950a8 100644 --- a/chrome/build/win-arm64.pgo.txt +++ b/chrome/build/win-arm64.pgo.txt
@@ -1 +1 @@ -chrome-win-arm64-main-1761976497-afb524a9a5d2de5987bb2a3b6540280426454b11-93e6fae7c4b463985d5c02e215f15c78aeeeed63.profdata +chrome-win-arm64-main-1762041312-f7915c6e4e4b019b6b1f21f2151b0ae5c616e22a-00b822863d8d0c0d2b9bd92a9e886e1eac7c763c.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index c3302c2..eedccaa 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1761965856-758e3977fe0b43baa9a0cdda8c149165caf83dab-2987de5ff09a2a23141136d97738db3352e750aa.profdata +chrome-win32-main-1762030690-aa3708947e8c5ff6a995acec42785c7ac31f7b81-59588e33a36c4bf65d0a34536eb9cada56fb3dff.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index d702de89..961aa30 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1761944367-95c52c745e2c49b3877eaf1a09028fee6f18337b-1ba3748204ff41e43ff2920b24fa594f45a7edb2.profdata +chrome-win64-main-1762030690-f25f4dcf0d393ce5f5afae9c10ca95d672c33403-59588e33a36c4bf65d0a34536eb9cada56fb3dff.profdata
diff --git a/chrome/test/chromedriver/chrome_launcher.cc b/chrome/test/chromedriver/chrome_launcher.cc index acedd65..da2a4227 100644 --- a/chrome/test/chromedriver/chrome_launcher.cc +++ b/chrome/test/chromedriver/chrome_launcher.cc
@@ -1052,7 +1052,7 @@ std::string GenerateExtensionId(std::string_view input) { auto hash = crypto::hash::Sha256(input); auto hash_first16 = base::span<uint8_t>(hash).first<16>(); - std::string output = base::ToLowerASCII(base::HexEncode(hash_first16)); + std::string output = base::HexEncodeLower(hash_first16); ConvertHexadecimalToIDAlphabet(output); return output; }
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM index bbefd02..661d2e5 100644 --- a/chromeos/CHROMEOS_LKGM +++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@ -16469.0.0-1072828 \ No newline at end of file +16470.0.0-1072847 \ No newline at end of file
diff --git a/chromeos/ash/experiences/system_web_apps/types/system_web_app_delegate.cc b/chromeos/ash/experiences/system_web_apps/types/system_web_app_delegate.cc index d08581d..2146cef 100644 --- a/chromeos/ash/experiences/system_web_apps/types/system_web_app_delegate.cc +++ b/chromeos/ash/experiences/system_web_apps/types/system_web_app_delegate.cc
@@ -32,6 +32,10 @@ SystemWebAppDelegate::~SystemWebAppDelegate() = default; +bool SystemWebAppDelegate::ShouldForceReinstall() const { + return false; +} + std::vector<std::string> SystemWebAppDelegate::GetAppIdsToUninstallAndReplace() const { return {};
diff --git a/chromeos/ash/experiences/system_web_apps/types/system_web_app_delegate.h b/chromeos/ash/experiences/system_web_apps/types/system_web_app_delegate.h index f4d82be..9d5d6c6 100644 --- a/chromeos/ash/experiences/system_web_apps/types/system_web_app_delegate.h +++ b/chromeos/ash/experiences/system_web_apps/types/system_web_app_delegate.h
@@ -77,6 +77,11 @@ // Returns a WebAppInstallInfo struct to complete installation. virtual std::unique_ptr<web_app::WebAppInstallInfo> GetWebAppInfo() const = 0; + // Decides whether the `SystemWebAppManager` should override its default app + // update policy and trigger a force reinstall on system start. If false is + // returned, the default app update policy is applied. + virtual bool ShouldForceReinstall() const; + // Returns a vector of AppIDs. Each app_id (a string id) may correspond to any // ChromeOS app: ChromeApp, WebApp, Arc++ etc. The apps specified will have // their data migrated to this System App.
diff --git a/clank b/clank index 5f11730..7db2a58 160000 --- a/clank +++ b/clank
@@ -1 +1 @@ -Subproject commit 5f117309cf85351b5d6d528aac6a7a6c10a3a1e3 +Subproject commit 7db2a580417bce0e9be1d8539c3d94ea2b9a695d
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json index 4a0c618..c48b1011 100644 --- a/components/certificate_transparency/data/log_list.json +++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@ { - "version": "74.11", - "log_list_timestamp": "2025-10-31T12:53:08Z", + "version": "74.12", + "log_list_timestamp": "2025-11-01T12:53:38Z", "operators": [ { "name": "Google",
diff --git a/components/permissions/permission_request_manager.h b/components/permissions/permission_request_manager.h index a5c6d08..38f3cd71 100644 --- a/components/permissions/permission_request_manager.h +++ b/components/permissions/permission_request_manager.h
@@ -247,6 +247,16 @@ current_request_first_display_time_ = time; } + void set_notification_request_first_display_time_for_testing( + base::TimeTicks time) { + notification_request_first_display_time_ = time; + } + + void set_geolocation_request_first_display_time_for_testing( + base::TimeTicks time) { + geolocation_request_first_display_time_ = time; + } + std::optional<PermissionUiSelector::PredictionGrantLikelihood> prediction_grant_likelihood_for_testing() const { return prediction_grant_likelihood_;
diff --git a/components/permissions/permission_uma_util.cc b/components/permissions/permission_uma_util.cc index 924aca5..87259376 100644 --- a/components/permissions/permission_uma_util.cc +++ b/components/permissions/permission_uma_util.cc
@@ -2459,11 +2459,34 @@ base::TimeDelta duration = base::TimeTicks::Now() - request_first_display_time; + std::string permission_string = + PermissionUtil::GetPermissionString(permission); + + // Record the original histogram for up to 1 hour. base::UmaHistogramLongTimes100( - base::StrCat({"Permissions.PredictionService.", - PermissionUtil::GetPermissionString(permission), + base::StrCat({"Permissions.PredictionService.", permission_string, ".PostPromptSessionDuration"}), duration); + + // UmaHistogramCustomTimes(name, sample, Milliseconds(1), Hours(1), 100); + + // Record finer-grained histograms for the first minute. + if (duration <= base::Seconds(10)) { + base::UmaHistogramCustomTimes( + base::StrCat({"Permissions.PredictionService.", permission_string, + ".PostPromptSessionDuration10s"}), + duration, base::Milliseconds(1), base::Milliseconds(10), 10); + } else if (duration <= base::Minutes(1)) { + base::UmaHistogramCustomTimes( + base::StrCat({"Permissions.PredictionService.", permission_string, + ".PostPromptSessionDuration1m"}), + duration, base::Milliseconds(11), base::Minutes(1), 25); + } else if (duration <= base::Minutes(5)) { + base::UmaHistogramCustomTimes( + base::StrCat({"Permissions.PredictionService.", permission_string, + ".PostPromptSessionDuration5m"}), + duration, base::Minutes(1), base::Minutes(5), 15); + } } } // namespace permissions
diff --git a/content/browser/background_fetch/storage/get_initialization_data_task.h b/content/browser/background_fetch/storage/get_initialization_data_task.h index d926904..6380c803 100644 --- a/content/browser/background_fetch/storage/get_initialization_data_task.h +++ b/content/browser/background_fetch/storage/get_initialization_data_task.h
@@ -14,7 +14,6 @@ #include "base/memory/scoped_refptr.h" #include "content/browser/background_fetch/background_fetch_registration_id.h" #include "content/browser/background_fetch/storage/database_task.h" -#include "content/browser/service_worker/service_worker_info.h" #include "content/common/background_fetch/background_fetch_types.h" #include "content/common/content_export.h" #include "net/base/isolation_info.h"
diff --git a/content/browser/cookie_store/cookie_store_manager.cc b/content/browser/cookie_store/cookie_store_manager.cc index 3b514fc..19ea418 100644 --- a/content/browser/cookie_store/cookie_store_manager.cc +++ b/content/browser/cookie_store/cookie_store_manager.cc
@@ -13,6 +13,7 @@ #include "content/browser/cookie_store/cookie_change_subscriptions.pb.h" #include "content/browser/renderer_host/render_frame_host_impl.h" #include "content/browser/service_worker/service_worker_context_wrapper.h" +#include "content/browser/service_worker/service_worker_info.h" #include "content/browser/service_worker/service_worker_metrics.h" #include "content/browser/service_worker/service_worker_registration.h" #include "content/browser/service_worker/service_worker_version.h"
diff --git a/content/browser/indexed_db/indexed_db_internals_ui.cc b/content/browser/indexed_db/indexed_db_internals_ui.cc index c430c677..a9e68b9 100644 --- a/content/browser/indexed_db/indexed_db_internals_ui.cc +++ b/content/browser/indexed_db/indexed_db_internals_ui.cc
@@ -26,6 +26,7 @@ #include "content/browser/indexed_db/indexed_db_internals.mojom-forward.h" #include "content/browser/indexed_db/indexed_db_internals.mojom.h" #include "content/browser/renderer_host/render_frame_host_impl.h" +#include "content/browser/service_worker/service_worker_info.h" #include "content/browser/worker_host/shared_worker_service_impl.h" #include "content/grit/indexed_db_resources.h" #include "content/grit/indexed_db_resources_map.h"
diff --git a/content/browser/renderer_host/code_cache_host_impl.h b/content/browser/renderer_host/code_cache_host_impl.h index 8b0faa8..9a8b3ab 100644 --- a/content/browser/renderer_host/code_cache_host_impl.h +++ b/content/browser/renderer_host/code_cache_host_impl.h
@@ -12,13 +12,14 @@ #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "build/build_config.h" -#include "components/services/storage/public/mojom/cache_storage_control.mojom.h" +#include "components/services/storage/public/mojom/cache_storage_control.mojom-forward.h" #include "content/common/content_export.h" #include "mojo/public/cpp/base/big_buffer.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/receiver_set.h" #include "mojo/public/cpp/bindings/unique_receiver_set.h" -#include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom.h" +#include "net/base/network_isolation_key.h" +#include "third_party/blink/public/common/storage_key/storage_key.h" #include "third_party/blink/public/mojom/loader/code_cache.mojom.h" class GURL;
diff --git a/content/browser/service_worker/service_worker_context_core_observer.h b/content/browser/service_worker/service_worker_context_core_observer.h index 069f7fe6..ea6f4fc 100644 --- a/content/browser/service_worker/service_worker_context_core_observer.h +++ b/content/browser/service_worker/service_worker_context_core_observer.h
@@ -11,7 +11,6 @@ #include "base/functional/callback.h" #include "base/time/time.h" -#include "content/browser/service_worker/service_worker_info.h" #include "content/browser/service_worker/service_worker_version.h" #include "content/public/browser/global_routing_id.h" #include "content/public/browser/service_worker_context_observer.h" @@ -29,6 +28,7 @@ struct ConsoleMessage; struct ServiceWorkerRegistrationInformation; +struct ServiceWorkerVersionInfo; class ServiceWorkerContextCoreObserver { public:
diff --git a/content/browser/service_worker/service_worker_identifiability_metrics.cc b/content/browser/service_worker/service_worker_identifiability_metrics.cc index 17389ce..dbe9393 100644 --- a/content/browser/service_worker/service_worker_identifiability_metrics.cc +++ b/content/browser/service_worker/service_worker_identifiability_metrics.cc
@@ -5,6 +5,7 @@ #include "content/browser/service_worker/service_worker_identifiability_metrics.h" #include "base/containers/contains.h" +#include "content/browser/service_worker/service_worker_info.h" #include "content/public/browser/worker_type.h" #include "services/metrics/public/cpp/delegating_ukm_recorder.h" #include "services/metrics/public/cpp/ukm_builders.h"
diff --git a/content/browser/service_worker/service_worker_identifiability_metrics.h b/content/browser/service_worker/service_worker_identifiability_metrics.h index eea290e25..6db0eaa 100644 --- a/content/browser/service_worker/service_worker_identifiability_metrics.h +++ b/content/browser/service_worker/service_worker_identifiability_metrics.h
@@ -11,12 +11,13 @@ #include <set> #include "content/browser/service_worker/service_worker_context_core_observer.h" -#include "content/browser/service_worker/service_worker_info.h" #include "services/metrics/public/cpp/ukm_source_id.h" #include "third_party/blink/public/mojom/service_worker/service_worker_client.mojom.h" namespace content { +struct ServiceWorkerVersionInfo; + struct VersionIdentifiabilityInfo { VersionIdentifiabilityInfo() = default; VersionIdentifiabilityInfo(ukm::SourceId ukm_source_id, const GURL& origin)
diff --git a/content/browser/service_worker/service_worker_main_resource_loader_unittest.cc b/content/browser/service_worker/service_worker_main_resource_loader_unittest.cc index 256bbaf..fb8c143 100644 --- a/content/browser/service_worker/service_worker_main_resource_loader_unittest.cc +++ b/content/browser/service_worker/service_worker_main_resource_loader_unittest.cc
@@ -17,6 +17,7 @@ #include "base/test/scoped_feature_list.h" #include "base/time/time.h" #include "base/timer/elapsed_timer.h" +#include "components/services/storage/public/mojom/cache_storage_control.mojom.h" #include "content/browser/loader/navigation_loader_interceptor.h" #include "content/browser/loader/response_head_update_params.h" #include "content/browser/service_worker/embedded_worker_test_helper.h"
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc index 90ac673..315ab51d5 100644 --- a/content/browser/service_worker/service_worker_version.cc +++ b/content/browser/service_worker/service_worker_version.cc
@@ -33,6 +33,7 @@ #include "base/time/default_tick_clock.h" #include "base/trace_event/trace_event.h" #include "base/uuid.h" +#include "components/services/storage/public/mojom/cache_storage_control.mojom.h" #include "components/services/storage/public/mojom/service_worker_database.mojom-forward.h" #include "content/browser/bad_message.h" #include "content/browser/child_process_security_policy_impl.h"
diff --git a/content/browser/service_worker/test_service_worker_observer.cc b/content/browser/service_worker/test_service_worker_observer.cc index 52f3d77..e4e6ebc 100644 --- a/content/browser/service_worker/test_service_worker_observer.cc +++ b/content/browser/service_worker/test_service_worker_observer.cc
@@ -9,6 +9,7 @@ #include "base/run_loop.h" #include "base/test/test_simple_task_runner.h" #include "content/browser/service_worker/service_worker_context_wrapper.h" +#include "content/browser/service_worker/service_worker_info.h" namespace content {
diff --git a/content/browser/worker_host/shared_worker_host.h b/content/browser/worker_host/shared_worker_host.h index 7803905..e5270e6 100644 --- a/content/browser/worker_host/shared_worker_host.h +++ b/content/browser/worker_host/shared_worker_host.h
@@ -36,6 +36,7 @@ #include "services/device/public/cpp/compute_pressure/buildflags.h" #include "services/metrics/public/cpp/ukm_source_id.h" #include "services/network/public/cpp/cross_origin_embedder_policy.h" +#include "services/network/public/mojom/client_security_state.mojom.h" #include "services/network/public/mojom/url_loader_factory.mojom-forward.h" #include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/public/mojom/blob/blob_url_store.mojom-forward.h"
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 1a285d4..bc66a60a 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 @@ -122bda87810c0337dd42879fedff887591f9b16a \ No newline at end of file +40f49817fb6a8e675b9e1955cd270dd44f6a4b0c \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios_asan.zip.sha1 b/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios_asan.zip.sha1 index 92b4235a..866e336 100644 --- a/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios_asan.zip.sha1
@@ -1 +1 @@ -2816fb020bc4cac17cf7ae160dcfb0ef61b31918 \ No newline at end of file +f9eba55946f213b9b477a8fd5dce53e5b8be40ee \ 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 37335f15..303220e 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 @@ -89af5c2a2a92e157dc69bd566537ec1f192f685e \ No newline at end of file +291d57e5a713343500bf31f88ff4ff3c4e5d9a14 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios_asan.zip.sha1 b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios_asan.zip.sha1 index 33e23ca..fb1b568 100644 --- a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios_asan.zip.sha1
@@ -1 +1 @@ -27b80ad0005ca42414ca1393a21401043d51156d \ No newline at end of file +d2598be8c7ffafb7cbe7ed52b332ce2ec5a9064f \ 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 856da708e..f41ab77 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 @@ -02fcdfd4347352af51974beb7adee707275a947f \ No newline at end of file +b2ac599b11e7cce0eb53ce78afe9fb3ebc179e3c \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios_asan.zip.sha1 b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios_asan.zip.sha1 index 635da75..1f8d971 100644 --- a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios_asan.zip.sha1
@@ -1 +1 @@ -e73965ef9a37b0044882f3dddb5eceb09db60f34 \ No newline at end of file +36c966906cce7ef5014235f2b8b34eb0281e7332 \ 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 9134573..96d35866 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 @@ -1d275f4117516be66e4b695d2bc3406ebf6104f2 \ No newline at end of file +fdf546c3aa1b7c4d8949e2e3a8d78bf9c10b0050 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios_asan.zip.sha1 index b627597..0801c06 100644 --- a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -d711c9f9188709d43caec62387418461cfcbdb95 \ No newline at end of file +b7b1a731b318842f30db60a57b827fde291a5f92 \ 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 67380276..84504bc 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 @@ -a49a957ac59fc8265f0b4a0033a9438414f588e2 \ No newline at end of file +dded48f59edb71b98eeb4411c83bb1efd4e22a6b \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator_asan.zip.sha1 index 53a98d86..d7b32d4 100644 --- a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -c6ba5b70a958e5ca1cc319cc2f9aa2225dfa1ad2 \ No newline at end of file +800a5365da727a06435d5d6ebab37d9b2bc176f2 \ 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 6ea3454c..1c3ada6 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 @@ -78c98bec5b98595f48b4e27f1585c4a2ed926625 \ No newline at end of file +267b0fc7f1c56802ff2c0414ed6378652f402008 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios_asan.zip.sha1 index 5d930a2..f5c07e4 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -54b31cbf2ab6a7a66f06768e14bec36fddb5a075 \ No newline at end of file +bdd646c9ba43803a152eb3173668afcad0c76e3f \ 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 80762a6..f9cbf8b 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 @@ -b77e540f2b9cb48112880dcca780c3a02e16688b \ No newline at end of file +9a8d8df2f742862884c5ce6f7915a7fc8894c74e \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator_asan.zip.sha1 index 96c9040..30396e16 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -ea24611d5d442cd785c79aac3dd72ec913a34f20 \ No newline at end of file +817f515b89a3fc6ca3f5c8d5f1c8eebe34b44fdc \ 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 39395950..cacc025 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 @@ -db5f0b3ec0bd7e5157ca31f910a2d3e35bb58e26 \ No newline at end of file +e5bd159e89580b1e705ed10d6e18660fbb832055 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios_asan.zip.sha1 index c065950..8ea3187d 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -bd31ee793aa51c2057f1c5e06ca4d816d05882c9 \ No newline at end of file +468da8beb21696f417c6042ee5c230ee9c4d9e8f \ 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 650ef1dc4..0ac6fdf 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 @@ -64cbda6ad58761f3ed2d79fab50b2e3510bd60fc \ No newline at end of file +324c714f7da2cbd86e9251b0573beac1ca24f660 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator_asan.zip.sha1 index 3accf05..5bb3c1bd 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -8de71e1b17e2c7c10eb43eb2b0202a4f6159f670 \ No newline at end of file +f9910e1d7fef85153b7238a11d80e95da08c5647 \ 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 d462b27..c23a7f9 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 @@ -4b8c1efe670ecc67783b538e2ffd821e93b8c0d9 \ No newline at end of file +34a54267531bc23bc7c76415cff7f768859d92e1 \ 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 5117a10a..0824c9a 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 @@ -330d9cc8ac67d6b04dec31f2d867a129cecdae1a \ No newline at end of file +5b33acb3a466a5fb3d1e9f82e7296a467aeb8601 \ 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 9b0c00a..603c4e0 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 @@ -dd501e9c7bc9f52c817e5bf6471e7412ffff5de5 \ No newline at end of file +5cbe51600d491133d02038e82a72569b0e87b265 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios_asan.zip.sha1 index 34aa70d..fba39a41 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -e9e09abf6bd885599e2f31f8091e8751f1dafe2b \ No newline at end of file +47cf91b3c66ad40011114151cde9505c46ebca1c \ 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 1bd4dc7..caa5f0b 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 @@ -b3520676d913a10a9584c23ab344a6770972df9f \ No newline at end of file +5900a21123b17161b89fc980bfc7e129c32ffed3 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator_asan.zip.sha1 index d5811795..4211d59 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -2903eb720ab1cda61d43f9c60f7548e57b6045b6 \ No newline at end of file +1643c1d6032cef656a86cb9d99d9c6cf440c9963 \ 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 dfa3c32..8f8208f 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 @@ -0c71ad32636a7cc1c924a4998d5c6e2c812e8571 \ No newline at end of file +34cb29a885fe759fe24a84f8897c083e8bfe9472 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios_asan.zip.sha1 index 9955f79..789e669 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -d94d2991d64caab772b6d14d3271ad46db48ada4 \ No newline at end of file +57b370a833a0a3eeedd0151f9ada59ff54a38007 \ 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 0a9d98ed..8c45d0c 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 @@ -bb091231417d8ff0ed057848294125b5ce78dc5b \ No newline at end of file +b2ae655e91367885ac42429472f49027919c1f47 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator_asan.zip.sha1 index 1a9a93b..1bcff931 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -e723f17b7582943186e927de0c28cd8e0ffcf36d \ No newline at end of file +4b204268cc2f91d49eb2bfd416385e7edd264695 \ No newline at end of file
diff --git a/ios_internal b/ios_internal index 59b0764..ac8e395 160000 --- a/ios_internal +++ b/ios_internal
@@ -1 +1 @@ -Subproject commit 59b076414e3e5ec964fa7cb0a7fbb44e005f626b +Subproject commit ac8e3955b71b12b6cebf395c38bfc3503da5234a
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins index 8bd2d843..554337c1 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: 2025-10-31 12:53 UTC +# Last updated: 2025-11-01 12:53 UTC PinsListTimestamp -1761915188 +1762001618 TestSPKI sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/net/http/transport_security_state_static_pins.json b/net/http/transport_security_state_static_pins.json index 27282c8..45f640d 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: 2025-10-31 12:53 UTC +// Last updated: 2025-11-01 12:53 UTC // { "pinsets": [
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index ac71901..da70e988 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -11483,6 +11483,23 @@ ] } ], + "GlicForceSimplifiedBorder": [ + { + "platforms": [ + "mac", + "windows", + "linux" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "GlicForceSimplifiedBorder" + ] + } + ] + } + ], "GlicFreWarming": [ { "platforms": [
diff --git a/third_party/blink/renderer/core/css/document_style_environment_variables.cc b/third_party/blink/renderer/core/css/document_style_environment_variables.cc index 5c3304d3..81afcef7 100644 --- a/third_party/blink/renderer/core/css/document_style_environment_variables.cc +++ b/third_party/blink/renderer/core/css/document_style_environment_variables.cc
@@ -55,10 +55,8 @@ StyleEnvironmentVariables& parent, Document& document) : StyleEnvironmentVariables(parent), document_(&document) { - if (RuntimeEnabledFeatures::CSSPreferredTextScaleEnabled()) { - SetPreferredTextScale( - document_->GetSettings()->GetAccessibilityFontScaleFactor()); - } + SetPreferredTextScale( + document_->GetSettings()->GetAccessibilityFontScaleFactor()); } void DocumentStyleEnvironmentVariables::RecordVariableUsage(
diff --git a/third_party/blink/renderer/core/css/style_environment_variables.cc b/third_party/blink/renderer/core/css/style_environment_variables.cc index 0da04b7e..cbfe3edf 100644 --- a/third_party/blink/renderer/core/css/style_environment_variables.cc +++ b/third_party/blink/renderer/core/css/style_environment_variables.cc
@@ -49,9 +49,7 @@ instance->SetVariable(UADefinedVariable::kKeyboardInsetHeight, kKeyboardInsetDefault); - if (RuntimeEnabledFeatures::CSSPreferredTextScaleEnabled()) { - instance->SetVariable(UADefinedVariable::kPreferredTextScale, "1"); - } + instance->SetVariable(UADefinedVariable::kPreferredTextScale, "1"); } } // namespace.
diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc index 98af8e34..9689843 100644 --- a/third_party/blink/renderer/core/page/page.cc +++ b/third_party/blink/renderer/core/page/page.cc
@@ -1079,9 +1079,7 @@ } break; case ChangeType::kFontScaleFactor: - if (!RuntimeEnabledFeatures::CSSPreferredTextScaleEnabled()) { - break; - } + for (Frame* frame = MainFrame(); frame; frame = frame->Tree().TraverseNext()) { LocalFrame* local_frame = DynamicTo<LocalFrame>(frame);
diff --git a/third_party/blink/renderer/modules/media_capabilities/media_capabilities_test.cc b/third_party/blink/renderer/modules/media_capabilities/media_capabilities_test.cc index 10f7ba7..a9bb53f 100644 --- a/third_party/blink/renderer/modules/media_capabilities/media_capabilities_test.cc +++ b/third_party/blink/renderer/modules/media_capabilities/media_capabilities_test.cc
@@ -46,6 +46,7 @@ #include "third_party/blink/renderer/platform/testing/task_environment.h" #include "third_party/blink/renderer/platform/testing/testing_platform_support.h" #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/text/string_view.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" #include "third_party/blink/renderer/platform/wtf/wtf_size_t.h" @@ -70,7 +71,7 @@ receiver_.Bind( mojo::PendingReceiver<media::mojom::blink::VideoDecodePerfHistory>( std::move(handle))); - receiver_.set_disconnect_handler(base::BindOnce( + receiver_.set_disconnect_handler(blink::BindOnce( &MockPerfHistoryService::OnConnectionError, base::Unretained(this))); } @@ -93,8 +94,8 @@ mojo::PendingReceiver<media::mojom::blink::WebrtcVideoPerfHistory>( std::move(handle))); receiver_.set_disconnect_handler( - base::BindOnce(&MockWebrtcPerfHistoryService::OnConnectionError, - base::Unretained(this))); + blink::BindOnce(&MockWebrtcPerfHistoryService::OnConnectionError, + base::Unretained(this))); } void OnConnectionError() { receiver_.reset(); } @@ -120,7 +121,7 @@ receiver_.Bind( mojo::PendingReceiver<media::mojom::blink::MediaMetricsProvider>( std::move(handle))); - receiver_.set_disconnect_handler(base::BindOnce( + receiver_.set_disconnect_handler(blink::BindOnce( &FakeMediaMetricsProvider::OnConnectionError, base::Unretained(this))); }
diff --git a/third_party/blink/renderer/modules/mediacapturefromelement/canvas_capture_handler.cc b/third_party/blink/renderer/modules/mediacapturefromelement/canvas_capture_handler.cc index a5035bc..a44d45d 100644 --- a/third_party/blink/renderer/modules/mediacapturefromelement/canvas_capture_handler.cc +++ b/third_party/blink/renderer/modules/mediacapturefromelement/canvas_capture_handler.cc
@@ -308,12 +308,13 @@ DCHECK_CALLED_ON_VALID_THREAD(main_render_thread_checker_); DCHECK_EQ(pending_send_new_frame_calls_, 0u); if (last_frame_ && delegate_) { - io_task_runner_->PostTask( - FROM_HERE, - base::BindOnce(&CanvasCaptureHandler::CanvasCaptureHandlerDelegate:: - SendNewFrameOnIOThread, - delegate_->GetWeakPtrForIOThread(), last_frame_, - base::TimeTicks::Now())); + PostCrossThreadTask( + *io_task_runner_, FROM_HERE, + CrossThreadBindOnce( + &CanvasCaptureHandler::CanvasCaptureHandlerDelegate:: + SendNewFrameOnIOThread, + delegate_->GetWeakPtrForIOThread(), last_frame_, + base::TimeTicks::Now())); } deferred_request_refresh_frame_ = false; }
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc index 33e0b47b..72609340 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc
@@ -1340,7 +1340,7 @@ protected: static base::OnceClosure AsClosure(CaptureVersionCb& cb) { - return base::BindOnce(&CaptureVersionCb::Call, base::Unretained(&cb)); + return blink::BindOnce(&CaptureVersionCb::Call, base::Unretained(&cb)); } static scoped_refptr<media::VideoFrame> MakeFrame(
diff --git a/third_party/blink/renderer/modules/mediastream/web_media_player_ms.cc b/third_party/blink/renderer/modules/mediastream/web_media_player_ms.cc index 1b2ff56f..48b8dc2 100644 --- a/third_party/blink/renderer/modules/mediastream/web_media_player_ms.cc +++ b/third_party/blink/renderer/modules/mediastream/web_media_player_ms.cc
@@ -63,6 +63,7 @@ #include "third_party/blink/renderer/platform/timer.h" #include "third_party/blink/renderer/platform/wtf/cross_thread_copier_media.h" #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" // Put this macro in a scope to prevent `client_` from being GC'd. // This is important for any method that might be called from anywhere @@ -245,15 +246,13 @@ // |gpu_memory_buffer_pool_| deletion is going to be posted to // |media_task_runner_|. base::Unretained() usage is fine since // |gpu_memory_buffer_pool_| outlives the task. - // - // TODO(crbug.com/964947): Converting this to PostCrossThreadTask requires - // re-binding a CrossThreadOnceFunction instance. - media_task_runner_->PostTask( - FROM_HERE, - base::BindOnce( + PostCrossThreadTask( + *media_task_runner_, FROM_HERE, + CrossThreadBindOnce( &media::GpuMemoryBufferVideoFramePool::MaybeCreateHardwareFrame, - base::Unretained(gpu_memory_buffer_pool_.get()), std::move(frame), - base::BindPostTaskToCurrentDefault(base::BindOnce( + CrossThreadUnretained(gpu_memory_buffer_pool_.get()), + std::move(frame), + base::BindPostTaskToCurrentDefault(blink::BindOnce( &FrameDeliverer::EnqueueFrame, weak_factory_for_pool_.GetWeakPtr(), original_frame_id)))); } @@ -1494,7 +1493,7 @@ } compositor_->SetOnFramePresentedCallback( - base::BindPostTaskToCurrentDefault(base::BindOnce( + base::BindPostTaskToCurrentDefault(blink::BindOnce( &WebMediaPlayerMS::OnNewFramePresentedCallback, weak_this_))); compositor_->SetForceBeginFrames(true);
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 973b8fbf..121c6f7 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1505,10 +1505,6 @@ name: "CSSPositionStickyStaticScrollPosition", status: "test", }, - { - name: "CSSPreferredTextScale", - status: "stable", - }, // https://drafts.csswg.org/css-values-5/#progress // progress() {
diff --git a/third_party/blink/renderer/platform/wtf/cross_thread_copier_media.h b/third_party/blink/renderer/platform/wtf/cross_thread_copier_media.h index a80f05a..d240ad39 100644 --- a/third_party/blink/renderer/platform/wtf/cross_thread_copier_media.h +++ b/third_party/blink/renderer/platform/wtf/cross_thread_copier_media.h
@@ -31,6 +31,8 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_CROSS_THREAD_COPIER_MEDIA_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_CROSS_THREAD_COPIER_MEDIA_H_ +#include "base/functional/callback.h" +#include "base/memory/scoped_refptr.h" #include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/renderer/platform/wtf/cross_thread_copier_base.h" #include "third_party/blink/renderer/platform/wtf/cross_thread_copier_std.h" @@ -111,6 +113,14 @@ STATIC_ONLY(CrossThreadCopier); }; +template <> +struct CrossThreadCopier< + base::OnceCallback<void(scoped_refptr<media::VideoFrame>)>> + : public CrossThreadCopierByValuePassThrough< + base::OnceCallback<void(scoped_refptr<media::VideoFrame>)>> { + STATIC_ONLY(CrossThreadCopier); +}; + } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_CROSS_THREAD_COPIER_MEDIA_H_
diff --git a/third_party/compiler-rt/src b/third_party/compiler-rt/src index 298fd1d..23fabde 160000 --- a/third_party/compiler-rt/src +++ b/third_party/compiler-rt/src
@@ -1 +1 @@ -Subproject commit 298fd1dc22321033fb73b4c78ad6e89979e0128c +Subproject commit 23fabde38f30838cf001a28e63570136b71e0ece
diff --git a/third_party/dawn b/third_party/dawn index 2562ad0..67ec6b21 160000 --- a/third_party/dawn +++ b/third_party/dawn
@@ -1 +1 @@ -Subproject commit 2562ad0ac0307c50c34f291d3f879eb3350c08f3 +Subproject commit 67ec6b21abee630c159414ce379de2762281d23f
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src index 0339e4b..1c14e2a 160000 --- a/third_party/devtools-frontend/src +++ b/third_party/devtools-frontend/src
@@ -1 +1 @@ -Subproject commit 0339e4bc4757f5ac2597ca7583df9ec622f822f0 +Subproject commit 1c14e2a7b5f957c71e9e1ffe11e2bd09a6769178
diff --git a/third_party/perfetto b/third_party/perfetto index d972f3e..efc223a 160000 --- a/third_party/perfetto +++ b/third_party/perfetto
@@ -1 +1 @@ -Subproject commit d972f3eb1be39376d6e296e0fa98e0817d56ee45 +Subproject commit efc223a2387fd7f45ccf51346af95a4ec5f59f69
diff --git a/third_party/rust/chromium_crates_io/patches/temporal_rs/0001-Constrain-durations-proactively-before-passing-to-IC.patch b/third_party/rust/chromium_crates_io/patches/temporal_rs/0001-Constrain-durations-proactively-before-passing-to-IC.patch new file mode 100644 index 0000000..70cc276 --- /dev/null +++ b/third_party/rust/chromium_crates_io/patches/temporal_rs/0001-Constrain-durations-proactively-before-passing-to-IC.patch
@@ -0,0 +1,116 @@ +From 450f0bf62bade57f077d2ece410746eb7be73747 Mon Sep 17 00:00:00 2001 +From: Manish Goregaokar <manishearth@google.com> +Date: Sat, 1 Nov 2025 18:40:29 +0000 +Subject: [PATCH] Constrain durations proactively before passing to ICU4X + +This uplifts https://github.com/boa-dev/temporal/pull/615. It ought to +prevent debug assertions and pathologically slow behavior when +attempting to do date arithmetic with very large durations. These +durations are too large to produce a valid in-range date anyway, so we +can proactively error when we see them. + +Change-Id: Id2426776556b4451335b7d0f775b43b3c5b92ac7 +--- + .../src/builtins/compiled/duration/tests.rs | 21 +++++++++- + .../src/builtins/core/calendar.rs | 39 +++++++++++++++++++ + 2 files changed, 59 insertions(+), 1 deletion(-) + +diff --git a/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/compiled/duration/tests.rs b/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/compiled/duration/tests.rs +index 72ae0e4a1f67b..0b6acac85cb18 100644 +--- a/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/compiled/duration/tests.rs ++++ b/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/compiled/duration/tests.rs +@@ -1,7 +1,8 @@ + use crate::{ + duration::DateDuration, + options::{ +- OffsetDisambiguation, RelativeTo, RoundingIncrement, RoundingMode, RoundingOptions, Unit, ++ OffsetDisambiguation, Overflow, RelativeTo, RoundingIncrement, RoundingMode, ++ RoundingOptions, Unit, + }, + partial::PartialDuration, + Calendar, PlainDate, TimeZone, ZonedDateTime, +@@ -626,6 +627,24 @@ fn add_normalized_time_duration_out_of_range() { + assert!(err.is_err()) + } + ++#[test] ++fn add_large_durations() { ++ // Testcases found by fuzzing <https://github.com/unicode-org/icu4x/pull/7206> ++ let base = PlainDate::new(2000, 1, 1, Calendar::from_str("dangi").unwrap()).unwrap(); ++ ++ let test_duration = Duration::from(DateDuration::new(4294901760, 256, 0, 0).unwrap()); ++ assert!(base.add(&test_duration, Some(Overflow::Constrain)).is_err()); ++ ++ let test_duration = Duration::from(DateDuration::new(0, 1281, 0, 8589934592).unwrap()); ++ assert!(base.add(&test_duration, Some(Overflow::Constrain)).is_err()); ++ ++ let test_duration = Duration::from(DateDuration::new(2046820352, 0, 0, 0).unwrap()); ++ assert!(base.add(&test_duration, Some(Overflow::Constrain)).is_err()); ++ ++ let test_duration = Duration::from(DateDuration::new(0, 0, 2516582400, 0).unwrap()); ++ assert!(base.add(&test_duration, Some(Overflow::Constrain)).is_err()); ++} ++ + #[test] + fn test_rounding_boundaries() { + let relative_to = PlainDate::new(2000, 1, 1, Calendar::default()).unwrap(); +diff --git a/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/core/calendar.rs b/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/core/calendar.rs +index d1508eee29c8d..d4b55eb74529e 100644 +--- a/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/core/calendar.rs ++++ b/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/core/calendar.rs +@@ -250,6 +250,43 @@ impl<'a> TryFrom<&'a CalendarFields> for DateFields<'a> { + Ok(this) + } + } ++ ++/// See <https://github.com/unicode-org/icu4x/issues/7207> ++/// ++/// We don't want to trigger any pathological or panicky testcases in ICU4X. ++/// ++/// To aid in that, we early constrain date durations to things that have no hope of producing a datetime ++/// that is within Temporal range. ++fn early_constrain_date_duration(duration: &IcuDateDuration) -> Result<(), TemporalError> { ++ // Temporal range is -271821-04-20 to +275760-09-13 ++ // This is (roughly) the maximum year duration that can exist for ISO ++ const TEMPORAL_MAX_ISO_YEAR_DURATION: u32 = 275760 + 271821; ++ // Double it. No calendar has years that are half the size of ISO years. ++ const YEAR_DURATION: u32 = 2 * TEMPORAL_MAX_ISO_YEAR_DURATION; ++ // Assume every year is a leap year, calculate a month range ++ const MONTH_DURATION: u32 = YEAR_DURATION * 13; ++ // Our longest year is 390 days ++ const DAY_DURATION: u32 = YEAR_DURATION * 390; ++ const WEEK_DURATION: u32 = DAY_DURATION / 7; ++ ++ let err = Err(TemporalError::range().with_enum(ErrorMessage::IntermediateDateTimeOutOfRange)); ++ ++ if duration.years > YEAR_DURATION { ++ return err; ++ } ++ if duration.months > MONTH_DURATION { ++ return err; ++ } ++ if duration.weeks > WEEK_DURATION { ++ return err; ++ } ++ if duration.days > DAY_DURATION.into() { ++ return err; ++ } ++ ++ Ok(()) ++} ++ + // ==== Public `CalendarSlot` methods ==== + + impl Calendar { +@@ -437,6 +474,8 @@ impl Calendar { + weeks: u32::try_from(duration.weeks.abs()).map_err(|_| invalid)?, + days: u64::try_from(duration.days.abs()).map_err(|_| invalid)?, + }; ++ ++ early_constrain_date_duration(&duration)?; + let mut options = DateAddOptions::default(); + options.overflow = Some(overflow.into()); + let calendar_date = self.0.from_iso(*date.to_icu4x().inner()); +-- +2.51.1.930.gacf6e81ea2-goog +
diff --git a/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/compiled/duration/tests.rs b/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/compiled/duration/tests.rs index 72ae0e4..0b6acac8 100644 --- a/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/compiled/duration/tests.rs +++ b/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/compiled/duration/tests.rs
@@ -1,7 +1,8 @@ use crate::{ duration::DateDuration, options::{ - OffsetDisambiguation, RelativeTo, RoundingIncrement, RoundingMode, RoundingOptions, Unit, + OffsetDisambiguation, Overflow, RelativeTo, RoundingIncrement, RoundingMode, + RoundingOptions, Unit, }, partial::PartialDuration, Calendar, PlainDate, TimeZone, ZonedDateTime, @@ -627,6 +628,24 @@ } #[test] +fn add_large_durations() { + // Testcases found by fuzzing <https://github.com/unicode-org/icu4x/pull/7206> + let base = PlainDate::new(2000, 1, 1, Calendar::from_str("dangi").unwrap()).unwrap(); + + let test_duration = Duration::from(DateDuration::new(4294901760, 256, 0, 0).unwrap()); + assert!(base.add(&test_duration, Some(Overflow::Constrain)).is_err()); + + let test_duration = Duration::from(DateDuration::new(0, 1281, 0, 8589934592).unwrap()); + assert!(base.add(&test_duration, Some(Overflow::Constrain)).is_err()); + + let test_duration = Duration::from(DateDuration::new(2046820352, 0, 0, 0).unwrap()); + assert!(base.add(&test_duration, Some(Overflow::Constrain)).is_err()); + + let test_duration = Duration::from(DateDuration::new(0, 0, 2516582400, 0).unwrap()); + assert!(base.add(&test_duration, Some(Overflow::Constrain)).is_err()); +} + +#[test] fn test_rounding_boundaries() { let relative_to = PlainDate::new(2000, 1, 1, Calendar::default()).unwrap();
diff --git a/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/core/calendar.rs b/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/core/calendar.rs index d1508eee..d4b55eb7 100644 --- a/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/core/calendar.rs +++ b/third_party/rust/chromium_crates_io/vendor/temporal_rs-v0_1/src/builtins/core/calendar.rs
@@ -250,6 +250,43 @@ Ok(this) } } + +/// See <https://github.com/unicode-org/icu4x/issues/7207> +/// +/// We don't want to trigger any pathological or panicky testcases in ICU4X. +/// +/// To aid in that, we early constrain date durations to things that have no hope of producing a datetime +/// that is within Temporal range. +fn early_constrain_date_duration(duration: &IcuDateDuration) -> Result<(), TemporalError> { + // Temporal range is -271821-04-20 to +275760-09-13 + // This is (roughly) the maximum year duration that can exist for ISO + const TEMPORAL_MAX_ISO_YEAR_DURATION: u32 = 275760 + 271821; + // Double it. No calendar has years that are half the size of ISO years. + const YEAR_DURATION: u32 = 2 * TEMPORAL_MAX_ISO_YEAR_DURATION; + // Assume every year is a leap year, calculate a month range + const MONTH_DURATION: u32 = YEAR_DURATION * 13; + // Our longest year is 390 days + const DAY_DURATION: u32 = YEAR_DURATION * 390; + const WEEK_DURATION: u32 = DAY_DURATION / 7; + + let err = Err(TemporalError::range().with_enum(ErrorMessage::IntermediateDateTimeOutOfRange)); + + if duration.years > YEAR_DURATION { + return err; + } + if duration.months > MONTH_DURATION { + return err; + } + if duration.weeks > WEEK_DURATION { + return err; + } + if duration.days > DAY_DURATION.into() { + return err; + } + + Ok(()) +} + // ==== Public `CalendarSlot` methods ==== impl Calendar { @@ -437,6 +474,8 @@ weeks: u32::try_from(duration.weeks.abs()).map_err(|_| invalid)?, days: u64::try_from(duration.days.abs()).map_err(|_| invalid)?, }; + + early_constrain_date_duration(&duration)?; let mut options = DateAddOptions::default(); options.overflow = Some(overflow.into()); let calendar_date = self.0.from_iso(*date.to_icu4x().inner());
diff --git a/third_party/skia b/third_party/skia index 5ed21229..7a5b34c 160000 --- a/third_party/skia +++ b/third_party/skia
@@ -1 +1 @@ -Subproject commit 5ed21229cdd96f23e833046cb6b177ee656f3967 +Subproject commit 7a5b34ce9bbfe214ceee101952190fc44b432944
diff --git a/third_party/webrtc b/third_party/webrtc index 9881db6..5e6ccdf 160000 --- a/third_party/webrtc +++ b/third_party/webrtc
@@ -1 +1 @@ -Subproject commit 9881db6d2acd8b52c85f16ae2d1a4f4617396bbc +Subproject commit 5e6ccdf2d66b38451bdcf254b1c3451cdbeff71d
diff --git a/tools/metrics/histograms/metadata/permissions/histograms.xml b/tools/metrics/histograms/metadata/permissions/histograms.xml index 7e8a9487..7c2635a7 100644 --- a/tools/metrics/histograms/metadata/permissions/histograms.xml +++ b/tools/metrics/histograms/metadata/permissions/histograms.xml
@@ -1116,6 +1116,47 @@ <token key="PermissionType" variants="CpssSupportedTypes"/> </histogram> +<histogram + name="Permissions.PredictionService.{PermissionType}.PostPromptSessionDuration10s" + units="ms" expires_after="2026-10-27"> + <owner>elklm@chromium.org</owner> + <owner>src/components/permissions/PERMISSIONS_OWNERS</owner> + <summary> + Records the duration of the browsing session up to 10 seconds on a given + origin after a Notifications or Geolocation permission prompt has been + displayed and until the tab is closed or a cross-origin navigation occurs. + </summary> + <token key="PermissionType" variants="CpssSupportedTypes"/> +</histogram> + +<histogram + name="Permissions.PredictionService.{PermissionType}.PostPromptSessionDuration1m" + units="ms" expires_after="2026-10-27"> + <owner>elklm@chromium.org</owner> + <owner>src/components/permissions/PERMISSIONS_OWNERS</owner> + <summary> + Records the duration of the browsing session between 11 seconds and 1 minute + on a given origin after a Notifications or Geolocation permission prompt has + been displayed and until the tab is closed or a cross-origin navigation + occurs. + </summary> + <token key="PermissionType" variants="CpssSupportedTypes"/> +</histogram> + +<histogram + name="Permissions.PredictionService.{PermissionType}.PostPromptSessionDuration5m" + units="ms" expires_after="2026-10-27"> + <owner>elklm@chromium.org</owner> + <owner>src/components/permissions/PERMISSIONS_OWNERS</owner> + <summary> + Records the duration of the browsing session between 1 minute and 5 minutes + on a given origin after a Notifications or Geolocation permission prompt has + been displayed and until the tab is closed or a cross-origin navigation + occurs. + </summary> + <token key="PermissionType" variants="CpssSupportedTypes"/> +</histogram> + <histogram name="Permissions.PredictionService.{PermissionType}{Gesture}" enum="PermissionRequestLikelihood" expires_after="2026-09-30"> <owner>elklm@chromium.org</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 73ad456c..e385482 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,8 +5,8 @@ "full_remote_path": "perfetto-luci-artifacts/v52.0/linux-arm64/trace_processor_shell" }, "win": { - "hash": "a4664a47b90d0abc272a40a0c1fe4d0ac8e7d3d8", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/d972f3eb1be39376d6e296e0fa98e0817d56ee45/trace_processor_shell.exe" + "hash": "ced6756b3eade9b0e59768e2863b94fa17420fbd", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/efc223a2387fd7f45ccf51346af95a4ec5f59f69/trace_processor_shell.exe" }, "linux_arm": { "hash": "46d798c1864490cbb2ee053d6eda436184470e69", @@ -22,7 +22,7 @@ }, "linux": { "hash": "ee16e387fead87383d2c66a04c574976bc1c58ab", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/d972f3eb1be39376d6e296e0fa98e0817d56ee45/trace_processor_shell" + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/efc223a2387fd7f45ccf51346af95a4ec5f59f69/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/v8 b/v8 index 4f5a631..8588961 160000 --- a/v8 +++ b/v8
@@ -1 +1 @@ -Subproject commit 4f5a631dc76e29f03342dade37470c9a0539ce5f +Subproject commit 858896197cffa32f7e50bf1159718529edc1b3de