form_data_unittest.cc revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/autofill/core/common/form_data.h"
6
7#include "base/pickle.h"
8#include "base/strings/utf_string_conversions.h"
9#include "testing/gtest/include/gtest/gtest.h"
10
11namespace autofill {
12
13TEST(FormDataTest, SerializeAndDeserialize) {
14  FormData data;
15  data.name = ASCIIToUTF16("name");
16  data.method = ASCIIToUTF16("POST");
17  data.origin = GURL("origin");
18  data.action = GURL("action");
19  data.user_submitted = true;
20
21  FormFieldData field_data;
22  field_data.label = ASCIIToUTF16("label");
23  field_data.name = ASCIIToUTF16("name");
24  field_data.value = ASCIIToUTF16("value");
25  field_data.form_control_type = "password";
26  field_data.autocomplete_attribute = "off";
27  field_data.max_length = 200;
28  field_data.is_autofilled = true;
29  field_data.is_checked = true;
30  field_data.is_checkable = true;
31  field_data.is_focusable = true;
32  field_data.should_autocomplete = false;
33  field_data.text_direction = base::i18n::RIGHT_TO_LEFT;
34  field_data.option_values.push_back(ASCIIToUTF16("First"));
35  field_data.option_values.push_back(ASCIIToUTF16("Second"));
36  field_data.option_contents.push_back(ASCIIToUTF16("First"));
37  field_data.option_contents.push_back(ASCIIToUTF16("Second"));
38
39  data.fields.push_back(field_data);
40
41  // Change a few fields.
42  field_data.max_length = 150;
43  field_data.option_values.push_back(ASCIIToUTF16("Third"));
44  field_data.option_contents.push_back(ASCIIToUTF16("Third"));
45  data.fields.push_back(field_data);
46
47  Pickle pickle;
48  SerializeFormData(data, &pickle);
49
50  PickleIterator iter(pickle);
51  FormData actual;
52  EXPECT_TRUE(DeserializeFormData(&iter, &actual));
53
54  EXPECT_EQ(actual, data);
55}
56
57}  // namespace autofill
58