blob: 356c7b6abd798a49663a75e72548ce1c898a2161 [file] [log] [blame]
// Copyright 2018 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 "components/password_manager/core/browser/form_parsing/fuzzer/form_data_proto_producer.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "components/autofill/core/common/form_field_data.h"
#include "components/password_manager/core/browser/form_parsing/fuzzer/form_data_essentials.pb.h"
#include "url/gurl.h"
#include "url/origin.h"
using autofill::FormData;
using autofill::FormFieldData;
using base::UTF8ToUTF16;
namespace password_manager {
FormData GenerateWithProto(const ::form_data_fuzzer::Form& form_proto) {
FormData result;
result.id_attribute = UTF8ToUTF16(form_proto.id());
result.name_attribute = UTF8ToUTF16(form_proto.name());
result.is_form_tag = form_proto.is_form_tag();
result.is_formless_checkout = form_proto.is_formless_checkout();
result.name = UTF8ToUTF16(form_proto.name());
result.action = GURL(form_proto.action());
result.origin = GURL(form_proto.origin());
result.main_frame_origin =
url::Origin::Create(GURL(form_proto.main_frame_origin()));
result.fields.resize(form_proto.fields_size());
for (int i = 0; i < form_proto.fields_size(); ++i) {
const ::form_data_fuzzer::FormField& form_data_proto = form_proto.fields(i);
result.fields[i].id_attribute = UTF8ToUTF16(form_data_proto.id());
#if defined(OS_IOS)
result.fields[i].unique_id = result.fields[i].id_attribute +
base::UTF8ToUTF16("-") +
base::NumberToString16(i);
#endif
result.fields[i].name_attribute = UTF8ToUTF16(form_data_proto.name());
result.fields[i].is_focusable = form_data_proto.is_focusable();
result.fields[i].form_control_type = form_data_proto.form_control_type();
result.fields[i].autocomplete_attribute =
form_data_proto.autocomplete_attribute();
result.fields[i].label = UTF8ToUTF16(form_data_proto.label());
result.fields[i].name = UTF8ToUTF16(form_data_proto.name());
result.fields[i].value = UTF8ToUTF16(form_data_proto.value());
}
return result;
}
} // namespace password_manager