blob: 19f8f88b7698d6c15226c02e8daf13b84eeb1c7e [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/password_manager/touch_to_fill_controller.h"
#include <utility>
#include "base/logging.h"
#include "chrome/browser/touch_to_fill/touch_to_fill_view.h"
#include "components/password_manager/core/browser/android_affiliation/affiliation_utils.h"
#include "components/password_manager/core/browser/origin_credential_store.h"
#include "components/password_manager/core/browser/password_manager_driver.h"
#include "components/password_manager/core/browser/password_manager_metrics_util.h"
#include "components/url_formatter/elide_url.h"
#include "content/public/browser/web_contents.h"
using password_manager::CredentialPair;
using password_manager::PasswordManagerDriver;
namespace {
void OnCredentialSelected(base::WeakPtr<PasswordManagerDriver> driver,
const CredentialPair& credential) {
if (!driver)
return;
password_manager::metrics_util::LogFilledCredentialIsFromAndroidApp(
password_manager::IsValidAndroidFacetURI(credential.origin_url.spec()));
driver->FillSuggestion(credential.username, credential.password);
}
} // namespace
TouchToFillController::TouchToFillController(content::WebContents* web_contents)
: web_contents_(web_contents) {}
TouchToFillController::~TouchToFillController() = default;
void TouchToFillController::Show(base::span<const CredentialPair> credentials,
base::WeakPtr<PasswordManagerDriver> driver) {
if (!view_)
view_ = TouchToFillViewFactory::Create(this);
view_->Show(url_formatter::FormatUrlForSecurityDisplay(
driver->GetLastCommittedURL(),
url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC),
credentials,
base::BindOnce(OnCredentialSelected, std::move(driver)));
}
gfx::NativeView TouchToFillController::GetNativeView() {
return web_contents_->GetNativeView();
}