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