1// Copyright (c) 2010 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#ifndef CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CHANGE_H__
6#define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CHANGE_H__
7#pragma once
8
9#include <vector>
10
11#include "webkit/glue/password_form.h"
12
13class PasswordStoreChange {
14 public:
15  enum Type {
16    ADD,
17    UPDATE,
18    REMOVE,
19  };
20
21  PasswordStoreChange(Type type, const webkit_glue::PasswordForm& form)
22      : type_(type), form_(form) {
23  }
24  virtual ~PasswordStoreChange() {}
25
26  Type type() const { return type_; }
27  const webkit_glue::PasswordForm& form() const { return form_; }
28
29  bool operator==(const PasswordStoreChange& other) const {
30    return type() == other.type() &&
31           form().signon_realm == other.form().signon_realm &&
32           form().origin == other.form().origin &&
33           form().action == other.form().action &&
34           form().submit_element == other.form().submit_element &&
35           form().username_element == other.form().username_element &&
36           form().username_value == other.form().username_value &&
37           form().password_element == other.form().password_element &&
38           form().password_value == other.form().password_value &&
39           form().old_password_element == other.form().old_password_element &&
40           form().old_password_value == other.form().old_password_value &&
41           form().ssl_valid == other.form().ssl_valid &&
42           form().preferred == other.form().preferred &&
43           form().date_created == other.form().date_created &&
44           form().blacklisted_by_user == other.form().blacklisted_by_user;
45  }
46
47 private:
48  Type type_;
49  webkit_glue::PasswordForm form_;
50};
51
52typedef std::vector<PasswordStoreChange> PasswordStoreChangeList;
53
54#endif  // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CHANGE_H_
55