#ifndef CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_TEST_H_
#define CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_TEST_H_
#include <memory>
#include <vector>
#include "base/metrics/histogram_samples.h"
#include "base/test/metrics/histogram_tester.h"
#include "chrome/test/interaction/interactive_browser_test.h"
#include "components/affiliations/core/browser/mock_affiliation_service.h"
#include "components/autofill/core/common/form_data.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "components/password_manager/core/browser/fake_form_fetcher.h"
#include "components/password_manager/core/browser/password_form.h"
#include "components/password_manager/core/browser/stub_password_manager_client.h"
#include "components/password_manager/core/browser/stub_password_manager_driver.h"
#include "components/password_manager/core/common/credential_manager_types.h"
#include "content/public/test/browser_task_environment.h"
#include "testing/gmock/include/gmock/gmock.h"
class ManagePasswordsUIController;
enum class SyncConfiguration {
kNotSyncing = 0,
kSyncing = 1,
kAccountStorageOnly = 2,
kMaxValue = kAccountStorageOnly,
};
class ManagePasswordsTest : public InteractiveBrowserTest {
public:
ManagePasswordsTest();
ManagePasswordsTest(const ManagePasswordsTest&) = delete;
ManagePasswordsTest& operator=(const ManagePasswordsTest&) = delete;
~ManagePasswordsTest() override;
void SetUpOnMainThread() override;
void TearDownOnMainThread() override;
void SetUpInProcessBrowserTestFixture() override;
void ExecuteManagePasswordsCommand();
void SetupManagingPasswords(const GURL& password_form_url = GURL());
void SetupAutomaticPassword();
void SetupPendingPassword();
void SetupAutoSignin(
std::vector<std::unique_ptr<password_manager::PasswordForm>>
local_credentials);
void SetupSafeState();
void SetupMoreToFixState();
void SetupMovingPasswords();
void ConfigurePasswordSync(SyncConfiguration configuration);
std::unique_ptr<base::HistogramSamples> GetSamples(const char* histogram);
password_manager::PasswordForm* test_form() { return &password_form_; }
ManagePasswordsUIController* GetController();
protected:
std::unique_ptr<password_manager::PasswordFormManager> CreateFormManager(
password_manager::PasswordStoreInterface* profile_store = nullptr,
password_manager::PasswordStoreInterface* account_store = nullptr);
auto CheckHistogramUniqueSample(const std::string& name,
int sample,
int expected_count) {
return Do([=, this]() {
histogram_tester_.ExpectUniqueSample(name, sample, expected_count);
});
}
private:
password_manager::PasswordForm password_form_;
password_manager::PasswordForm insecure_credential_;
base::HistogramTester histogram_tester_;
password_manager::StubPasswordManagerClient client_;
password_manager::StubPasswordManagerDriver driver_;
password_manager::FakeFormFetcher fetcher_;
base::CallbackListSubscription create_services_subscription_;
};
#endif