// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/password_manager/ios/test_helpers.h"
#include "base/strings/utf_string_conversions.h"
#include "components/autofill/core/common/form_data.h"
#include "components/autofill/core/common/form_data_test_api.h"
#include "components/autofill/core/common/password_form_fill_data.h"
#include "components/password_manager/ios/account_select_fill_data.h"
#include "url/gurl.h"
using autofill::FieldRendererId;
using autofill::FormData;
using autofill::FormFieldData;
using autofill::FormRendererId;
using autofill::PasswordFormFillData;
using password_manager::FillData;
namespace test_helpers {
void SetPasswordFormFillData(const std::string& url,
const char* form_name,
uint32_t form_id,
const char* username_field,
uint32_t username_unique_id,
const char* username_value,
const char* password_field,
uint32_t password_unique_id,
const char* password_value,
const char* additional_username,
const char* additional_password,
PasswordFormFillData* form_data) {
form_data->url = GURL(url);
form_data->form_renderer_id = FormRendererId(form_id);
form_data->username_element_renderer_id = FieldRendererId(username_unique_id);
form_data->preferred_login.username_value = base::UTF8ToUTF16(username_value);
form_data->password_element_renderer_id = FieldRendererId(password_unique_id);
form_data->preferred_login.password_value = base::UTF8ToUTF16(password_value);
if (additional_username != nullptr) {
autofill::PasswordAndMetadata additional_password_data;
additional_password_data.username_value =
base::UTF8ToUTF16(additional_username);
additional_password_data.password_value =
base::UTF8ToUTF16(additional_password);
additional_password_data.realm.clear();
form_data->additional_logins.push_back(additional_password_data);
}
form_data->wait_for_username = true;
}
void SetFillData(const std::string& origin,
uint32_t form_id,
uint32_t username_field_id,
const char* username_value,
uint32_t password_field_id,
const char* password_value,
FillData* fill_data) {
DCHECK(fill_data);
fill_data->origin = GURL(origin);
fill_data->form_id = FormRendererId(form_id);
fill_data->username_element_id = FieldRendererId(username_field_id);
fill_data->username_value = base::UTF8ToUTF16(username_value);
fill_data->password_element_id = FieldRendererId(password_field_id);
fill_data->password_value = base::UTF8ToUTF16(password_value);
}
void SetFormData(const std::string& origin,
uint32_t form_id,
uint32_t username_field_id,
const char* username_value,
uint32_t password_field_id,
const char* password_value,
FormData* form_data) {
DCHECK(form_data);
form_data->set_url(GURL(origin));
form_data->set_renderer_id(FormRendererId(form_id));
FormFieldData field;
field.set_value(base::UTF8ToUTF16(username_value));
field.set_form_control_type(autofill::FormControlType::kInputText);
field.set_renderer_id(FieldRendererId(username_field_id));
test_api(*form_data).Append(field);
field.set_value(base::UTF8ToUTF16(password_value));
field.set_form_control_type(autofill::FormControlType::kInputPassword);
field.set_renderer_id(FieldRendererId(password_field_id));
test_api(*form_data).Append(field);
}
autofill::FormData MakeSimpleFormData() {
autofill::FormData form_data;
form_data.set_url(GURL("http://www.google.com/a/LoginAuth"));
form_data.set_action(GURL("http://www.google.com/a/Login"));
form_data.set_name(u"login_form");
autofill::FormFieldData field;
field.set_name(u"Username");
field.set_id_attribute(field.name());
field.set_name_attribute(field.name());
field.set_value(u"googleuser");
field.set_form_control_type(autofill::FormControlType::kInputText);
test_api(form_data).Append(field);
field.set_name(u"Passwd");
field.set_id_attribute(field.name());
field.set_name_attribute(field.name());
field.set_value(u"p4ssword");
field.set_form_control_type(autofill::FormControlType::kInputPassword);
test_api(form_data).Append(field);
return form_data;
}
} // namespace test_helpers