1 From ded11a971e690a00075c4f337fa09469b69b69a5 Mon Sep 17 00:00:00 2001
2 From: Roger Zanoni <rzanoni@igalia.com>
3 Date: Mon, 30 Oct 2023 15:03:04 -0300
4 Subject: [PATCH 25/33] [M118-fix] Avoid using
5 std::ranges::any_of/find_if/none_of/all_of
7 Those functions are available only in newer c++ standards(C++20).
8 Chromium defines those functions in base::ranges.
10 Upstream-Status: Inappropriate
11 Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
13 chrome/browser/ui/webauthn/sheet_models.cc | 2 +-
14 .../browser/webauthn/authenticator_request_dialog_model.cc | 2 +-
15 .../webauthn/chrome_authenticator_request_delegate.cc | 4 ++--
16 device/fido/get_assertion_request_handler.cc | 5 +++--
17 4 files changed, 7 insertions(+), 6 deletions(-)
19 diff --git a/chrome/browser/ui/webauthn/sheet_models.cc b/chrome/browser/ui/webauthn/sheet_models.cc
20 index e72087c22dc84..1d1999fdc49c3 100644
21 --- a/chrome/browser/ui/webauthn/sheet_models.cc
22 +++ b/chrome/browser/ui/webauthn/sheet_models.cc
23 @@ -1499,7 +1499,7 @@ AuthenticatorMultiSourcePickerSheetModel::
24 using ICloudKeychainMech =
25 AuthenticatorRequestDialogModel::Mechanism::ICloudKeychain;
26 bool has_local_passkeys =
27 - std::ranges::any_of(dialog_model->mechanisms(), [](const auto& mech) {
28 + base::ranges::any_of(dialog_model->mechanisms(), [](const auto& mech) {
29 return absl::holds_alternative<CredentialMech>(mech.type) &&
30 absl::get<CredentialMech>(mech.type).value().source !=
31 device::AuthenticatorType::kPhone;
32 diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
33 index 7695aa00f44a8..fa983ddf1a166 100644
34 --- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc
35 +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
36 @@ -495,7 +495,7 @@ void AuthenticatorRequestDialogModel::
37 // extra step. Jump to Windows instead.
38 if (base::FeatureList::IsEnabled(device::kWebAuthnNewPasskeyUI) &&
39 transport_availability_.has_win_native_api_authenticator &&
40 - std::ranges::all_of(mechanisms_, [](const auto& mech) {
41 + base::ranges::all_of(mechanisms_, [](const auto& mech) {
42 return absl::holds_alternative<Mechanism::WindowsAPI>(mech.type) ||
43 (absl::holds_alternative<Mechanism::Credential>(mech.type) &&
44 absl::get<Mechanism::Credential>(mech.type).value().source ==
45 diff --git a/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc b/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc
46 index 15773fad86902..6ddd5cba1d6f3 100644
47 --- a/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc
48 +++ b/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc
49 @@ -886,8 +886,8 @@ void ChromeAuthenticatorRequestDelegate::OnTransportAvailabilityEnumerated(
50 if (data.has_platform_authenticator_credential ==
51 device::FidoRequestHandlerBase::RecognizedCredential::
52 kHasRecognizedCredential &&
53 - std::ranges::none_of(data.recognized_credentials,
54 - IsCredentialFromPlatformAuthenticator)) {
55 + base::ranges::none_of(data.recognized_credentials,
56 + IsCredentialFromPlatformAuthenticator)) {
57 data.has_platform_authenticator_credential = device::
58 FidoRequestHandlerBase::RecognizedCredential::kNoRecognizedCredential;
60 diff --git a/device/fido/get_assertion_request_handler.cc b/device/fido/get_assertion_request_handler.cc
61 index 507cc2b46ddb6..80b6da1799c33 100644
62 --- a/device/fido/get_assertion_request_handler.cc
63 +++ b/device/fido/get_assertion_request_handler.cc
65 #include "base/functional/bind.h"
66 #include "base/json/json_writer.h"
67 #include "base/metrics/histogram_functions.h"
68 +#include "base/ranges/algorithm.h"
69 #include "base/stl_util.h"
70 #include "base/strings/string_number_conversions.h"
71 #include "base/timer/elapsed_timer.h"
72 @@ -370,7 +371,7 @@ bool AllowListOnlyHybridOrInternal(const CtapGetAssertionRequest& request) {
74 bool AllowListIncludedTransport(const CtapGetAssertionRequest& request,
75 FidoTransportProtocol transport) {
76 - return std::ranges::any_of(
77 + return base::ranges::any_of(
79 [transport](const PublicKeyCredentialDescriptor& cred) {
80 return cred.transports.empty() ||
81 @@ -441,7 +442,7 @@ void GetAssertionRequestHandler::PreselectAccount(
82 PublicKeyCredentialDescriptor credential) {
83 DCHECK(!preselected_credential_);
84 DCHECK(request_.allow_list.empty() ||
85 - std::ranges::any_of(
86 + base::ranges::any_of(
88 [&credential](const PublicKeyCredentialDescriptor& desc) {
89 return desc.id == credential.id;