| Index: components/password_manager/core/browser/credential_manager_pending_request_task.cc
|
| diff --git a/components/password_manager/core/browser/credential_manager_pending_request_task.cc b/components/password_manager/core/browser/credential_manager_pending_request_task.cc
|
| index cd89fb0e8944e82d0672935d01da590f1cdb4e90..6901dc02dfe65d58947965e9e1e4bc2ebd7cb0f1 100644
|
| --- a/components/password_manager/core/browser/credential_manager_pending_request_task.cc
|
| +++ b/components/password_manager/core/browser/credential_manager_pending_request_task.cc
|
| @@ -113,12 +113,12 @@ void FilterDuplicatesAndEmptyUsername(
|
| CredentialManagerPendingRequestTask::CredentialManagerPendingRequestTask(
|
| CredentialManagerPendingRequestTaskDelegate* delegate,
|
| const SendCredentialCallback& callback,
|
| - bool request_zero_click_only,
|
| + CredentialMediationRequirement mediation,
|
| bool include_passwords,
|
| const std::vector<GURL>& request_federations)
|
| : delegate_(delegate),
|
| send_callback_(callback),
|
| - zero_click_only_(request_zero_click_only),
|
| + mediation_(mediation),
|
| origin_(delegate_->GetOrigin()),
|
| include_passwords_(include_passwords) {
|
| CHECK(!delegate_->client()->DidLastPageLoadEncounterSSLErrors());
|
| @@ -149,12 +149,9 @@ void CredentialManagerPendingRequestTask::ProcessMigratedForms(
|
| void CredentialManagerPendingRequestTask::ProcessForms(
|
| std::vector<std::unique_ptr<autofill::PasswordForm>> results) {
|
| using metrics_util::LogCredentialManagerGetResult;
|
| - metrics_util::CredentialManagerGetMediation mediation_status =
|
| - zero_click_only_ ? metrics_util::CREDENTIAL_MANAGER_GET_UNMEDIATED
|
| - : metrics_util::CREDENTIAL_MANAGER_GET_MEDIATED;
|
| if (delegate_->GetOrigin() != origin_) {
|
| LogCredentialManagerGetResult(metrics_util::CREDENTIAL_MANAGER_GET_NONE,
|
| - mediation_status);
|
| + mediation_);
|
| delegate_->SendCredential(send_callback_, CredentialInfo());
|
| return;
|
| }
|
| @@ -187,13 +184,15 @@ void CredentialManagerPendingRequestTask::ProcessForms(
|
| FilterDuplicatesAndEmptyUsername(&local_results, &has_empty_username,
|
| &has_duplicates);
|
|
|
| - // We only perform zero-click sign-in when the result is completely
|
| - // unambigious. If there is one and only one entry, and zero-click is
|
| + // We only perform zero-click sign-in when it is not forbidden via the
|
| + // mediation requirement and the result is completely unambigious.
|
| + // If there is one and only one entry, and zero-click is
|
| // enabled for that entry, return it.
|
| //
|
| // Moreover, we only return such a credential if the user has opted-in via the
|
| // first-run experience.
|
| const bool can_use_autosignin =
|
| + mediation_ != CredentialMediationRequirement::kRequired &&
|
| local_results.size() == 1u && delegate_->IsZeroClickAllowed();
|
| if (can_use_autosignin && !local_results[0]->skip_zero_click &&
|
| !password_bubble_experiment::ShouldShowAutoSignInPromptFirstRunExperience(
|
| @@ -206,12 +205,12 @@ void CredentialManagerPendingRequestTask::ProcessForms(
|
| origin_);
|
| base::RecordAction(base::UserMetricsAction("CredentialManager_Autosignin"));
|
| LogCredentialManagerGetResult(
|
| - metrics_util::CREDENTIAL_MANAGER_GET_AUTOSIGNIN, mediation_status);
|
| + metrics_util::CREDENTIAL_MANAGER_GET_AUTOSIGNIN, mediation_);
|
| delegate_->SendCredential(send_callback_, info);
|
| return;
|
| }
|
|
|
| - if (zero_click_only_) {
|
| + if (mediation_ == CredentialMediationRequirement::kSilent) {
|
| metrics_util::CredentialManagerGetResult get_result;
|
| if (local_results.empty())
|
| get_result = metrics_util::CREDENTIAL_MANAGER_GET_NONE_EMPTY_STORE;
|
| @@ -231,7 +230,7 @@ void CredentialManagerPendingRequestTask::ProcessForms(
|
| std::move(local_results[0]));
|
| }
|
|
|
| - LogCredentialManagerGetResult(get_result, mediation_status);
|
| + LogCredentialManagerGetResult(get_result, mediation_);
|
| delegate_->SendCredential(send_callback_, CredentialInfo());
|
| return;
|
| }
|
| @@ -246,8 +245,7 @@ void CredentialManagerPendingRequestTask::ProcessForms(
|
|
|
| if (local_results.empty()) {
|
| LogCredentialManagerGetResult(
|
| - metrics_util::CREDENTIAL_MANAGER_GET_NONE_EMPTY_STORE,
|
| - mediation_status);
|
| + metrics_util::CREDENTIAL_MANAGER_GET_NONE_EMPTY_STORE, mediation_);
|
| delegate_->SendCredential(send_callback_, CredentialInfo());
|
| return;
|
| }
|
| @@ -258,9 +256,9 @@ void CredentialManagerPendingRequestTask::ProcessForms(
|
| std::move(local_results), origin_,
|
| base::Bind(
|
| &CredentialManagerPendingRequestTaskDelegate::SendPasswordForm,
|
| - base::Unretained(delegate_), send_callback_))) {
|
| + base::Unretained(delegate_), send_callback_, mediation_))) {
|
| LogCredentialManagerGetResult(metrics_util::CREDENTIAL_MANAGER_GET_NONE,
|
| - mediation_status);
|
| + mediation_);
|
| delegate_->SendCredential(send_callback_, CredentialInfo());
|
| }
|
| }
|
|
|