blob: 60df6d941486d6d6ffed3599b7a3366a5f29e7ce [file] [log] [blame]
// Copyright 2013 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.
#ifndef COMPONENTS_AUTOFILL_BROWSER_WALLET_FORM_FIELD_ERROR_H_
#define COMPONENTS_AUTOFILL_BROWSER_WALLET_FORM_FIELD_ERROR_H_
#include "base/strings/string16.h"
#include "components/autofill/core/browser/field_types.h"
namespace base {
class DictionaryValue;
}
namespace autofill {
namespace wallet {
// Class for representing a single Wallet server side validation error.
class FormFieldError {
public:
// The validation error returned from the server.
enum ErrorType {
UNKNOWN_ERROR,
INVALID_PHONE_NUMBER,
INVALID_POSTAL_CODE,
// Bad street address.
INVALID_ADDRESS,
// Bad CVC.
INVALID_CARD_DETAILS,
// Wallet sends this when ZIP is invalid for the given city.
INVALID_CITY,
// Catch-all for many errors. E.g., no address given, no address ID,
// invalid card number. Wallet should only send us this error for invalid
// card number.
INVALID_INSTRUMENT,
// Wallet sends this when ZIP is invalid for the given state.
INVALID_STATE,
REQUIRED_FIELD_NOT_SET,
// TODO(ahutter): Add INVALID_COUNTRY when user can select country in the
// chooser.
};
// The section of the "form" where the error occurred.
enum Location {
UNKNOWN_LOCATION,
PAYMENT_INSTRUMENT,
SHIPPING_ADDRESS,
// Currently Sugar uses the billing address as user's legal address. So any
// error in billing address will be accompanied by an error in legal
// address. The client side should map LEGAL_ADDRESS to the billing address.
// This will ensure compatibility in case Sugar starts having a separate
// legal address form.
LEGAL_ADDRESS,
};
FormFieldError(ErrorType error_type, Location location);
~FormFieldError();
ErrorType error_type() const { return error_type_; }
Location location() const { return location_; }
// Gets the appropriate field type for |location| and |error_type|.
ServerFieldType GetAutofillType() const;
// Gets a user facing error message appropriate for |location| and
// |error_type|.
base::string16 GetErrorMessage() const;
// Creates an instance of FormFieldError from the input dictionary.
static FormFieldError CreateFormFieldError(
const base::DictionaryValue& dictionary);
bool operator==(const FormFieldError& other) const;
private:
// The type of error as defined by the Wallet server.
ErrorType error_type_;
// The location of the error as defined by the Wallet server.
Location location_;
// This class is intentionally copyable and assignable.
};
} // namespace wallet
} // namespace autofill
#endif // COMPONENTS_AUTOFILL_BROWSER_WALLET_FORM_FIELD_ERROR_H_