[go: nahoru, domu]

blob: 1da634917ce6bd1a8860c9cd6f3f9ef0681602f1 [file] [log] [blame]
// Copyright 2020 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.
#ifndef CHROME_BROWSER_SAFE_BROWSING_ANDROID_PASSWORD_REUSE_CONTROLLER_ANDROID_H_
#define CHROME_BROWSER_SAFE_BROWSING_ANDROID_PASSWORD_REUSE_CONTROLLER_ANDROID_H_
#include <memory>
#include "base/memory/raw_ptr.h"
#include "base/time/time.h"
#include "chrome/browser/safe_browsing/chrome_password_protection_service.h"
#include "content/public/browser/web_contents_observer.h"
#include "url/gurl.h"
namespace content {
class WebContents;
}
namespace ui {
class WindowAndroid;
}
namespace safe_browsing {
class PasswordReuseDialogViewAndroid;
// A self-owned class which manages |PasswordReuseDialogViewAndroid|. Created
// when password reuse modal is shown. Deleted when |CloseDialog| is called from
// Java side, or WebContents is destroyed, or password protection service is
// destroyed.
class PasswordReuseControllerAndroid
: public ChromePasswordProtectionService::Observer,
public content::WebContentsObserver {
public:
PasswordReuseControllerAndroid(content::WebContents* web_contents,
ChromePasswordProtectionService* service,
ReusedPasswordAccountType password_type,
OnWarningDone done_callback);
PasswordReuseControllerAndroid(const PasswordReuseControllerAndroid&) =
delete;
PasswordReuseControllerAndroid& operator=(
const PasswordReuseControllerAndroid&) = delete;
~PasswordReuseControllerAndroid() override;
// Called by |ChromePasswordProtectionService| when modal dialog needs to be
// shown.
void ShowDialog();
// Called by |PasswordReuseDialogViewAndroid| when the option to open the
// CheckPasswords page is selected by the user and needs to be shown.
void ShowCheckPasswords();
// Called by |PasswordReuseDialogViewAndroid| when the option to ignore the
// modal dialog is selected by the user.
void IgnoreDialog();
// Called by |PasswordReuseDialogViewAndroid| when the dialog is closed
// through some other means than the modal dialog Ignore button.
void CloseDialog();
// The following functions are called from |PasswordReuseDialogViewAndroid|,
// to get text shown on the dialog.
std::u16string GetPrimaryButtonText() const;
std::u16string GetSecondaryButtonText() const;
// Get the detailed warning text that should show in the modal warning dialog.
std::u16string GetWarningDetailText() const;
std::u16string GetTitle() const;
// ChromePasswordProtectionService::Observer:
void OnGaiaPasswordChanged() override;
void OnMarkingSiteAsLegitimate(const GURL& url) override;
void InvokeActionForTesting(WarningAction action) override;
WarningUIType GetObserverType() override;
// content::WebContentsObserver:
void WebContentsDestroyed() override;
void SetReusedPasswordAccountTypeForTesting(
ReusedPasswordAccountType password_type);
private:
std::unique_ptr<PasswordReuseDialogViewAndroid> dialog_view_;
raw_ptr<ChromePasswordProtectionService> service_;
const GURL url_;
ReusedPasswordAccountType password_type_;
raw_ptr<ui::WindowAndroid> window_android_;
OnWarningDone done_callback_;
// Records the start time when modal warning is constructed.
base::TimeTicks modal_construction_start_time_;
};
} // namespace safe_browsing
#endif // CHROME_BROWSER_SAFE_BROWSING_ANDROID_PASSWORD_REUSE_CONTROLLER_ANDROID_H_