1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef WEBKIT_GLUE_FORM_FIELD_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define WEBKIT_GLUE_FORM_FIELD_H_
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <vector>
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
10a1fe9c0450e6d56112949b33ef2f7491e0cf0f60Kristian Monsen#ifdef ANDROID
11a1fe9c0450e6d56112949b33ef2f7491e0cf0f60Kristian Monsen#include "base/base_api.h"
12a1fe9c0450e6d56112949b33ef2f7491e0cf0f60Kristian Monsen#endif
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string16.h"
144ec1b5c8bfb53483c6105db0656c81740f798f10Kristian Monsen#ifndef ANDROID
1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "third_party/WebKit/Source/WebKit/chromium/public/WebFormControlElement.h"
164ec1b5c8bfb53483c6105db0656c81740f798f10Kristian Monsen#endif
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace webkit_glue {
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Stores information about a field in a form.
21a1fe9c0450e6d56112949b33ef2f7491e0cf0f60Kristian Monsenstruct
22a1fe9c0450e6d56112949b33ef2f7491e0cf0f60Kristian Monsen#ifdef ANDROID
23a1fe9c0450e6d56112949b33ef2f7491e0cf0f60Kristian MonsenBASE_API
24a1fe9c0450e6d56112949b33ef2f7491e0cf0f60Kristian Monsen#endif
25a1fe9c0450e6d56112949b33ef2f7491e0cf0f60Kristian MonsenFormField {
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  FormField();
274ec1b5c8bfb53483c6105db0656c81740f798f10Kristian Monsen#ifndef ANDROID
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit FormField(WebKit::WebFormControlElement element);
294ec1b5c8bfb53483c6105db0656c81740f798f10Kristian Monsen#endif
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  FormField(const string16& label,
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            const string16& name,
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            const string16& value,
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            const string16& form_control_type,
34201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch            int max_length,
35201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch            bool is_autofilled);
36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  virtual ~FormField();
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Equality tests for identity which does not include |value_| or |size_|.
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Use |StrictlyEqualsHack| method to test all members.
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // TODO(dhollowa): These operators need to be revised when we implement field
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // ids.
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool operator==(const FormField& field) const;
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool operator!=(const FormField& field) const;
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Test equality of all data members.
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // TODO(dhollowa): This will be removed when we implement field ids.
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool StrictlyEqualsHack(const FormField& field) const;
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  string16 label;
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  string16 name;
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  string16 value;
52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  string16 form_control_type;
53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  int max_length;
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  bool is_autofilled;
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  std::vector<string16> option_strings;
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// So we can compare FormFields with EXPECT_EQ().
59731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickstd::ostream& operator<<(std::ostream& os, const FormField& field);
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace webkit_glue
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // WEBKIT_GLUE_FORM_FIELD_H_
64