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.
5 #include "components/autofill/core/common/form_data.h"
7 #include "base/pickle.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "testing/gtest/include/gtest/gtest.h"
13 TEST(FormDataTest
, SerializeAndDeserialize
) {
15 data
.name
= base::ASCIIToUTF16("name");
16 data
.method
= base::ASCIIToUTF16("POST");
17 data
.origin
= GURL("origin");
18 data
.action
= GURL("action");
19 data
.user_submitted
= true;
21 FormFieldData field_data
;
22 field_data
.label
= base::ASCIIToUTF16("label");
23 field_data
.name
= base::ASCIIToUTF16("name");
24 field_data
.value
= base::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(base::ASCIIToUTF16("First"));
35 field_data
.option_values
.push_back(base::ASCIIToUTF16("Second"));
36 field_data
.option_contents
.push_back(base::ASCIIToUTF16("First"));
37 field_data
.option_contents
.push_back(base::ASCIIToUTF16("Second"));
39 data
.fields
.push_back(field_data
);
41 // Change a few fields.
42 field_data
.max_length
= 150;
43 field_data
.option_values
.push_back(base::ASCIIToUTF16("Third"));
44 field_data
.option_contents
.push_back(base::ASCIIToUTF16("Third"));
45 data
.fields
.push_back(field_data
);
48 SerializeFormData(data
, &pickle
);
50 PickleIterator
iter(pickle
);
52 EXPECT_TRUE(DeserializeFormData(&iter
, &actual
));
54 EXPECT_EQ(actual
, data
);
57 } // namespace autofill