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 CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_FORM_DATA_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_FORM_DATA_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gmock/include/gmock/gmock.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "webkit/glue/password_form.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Struct used for creation of PasswordForms from static arrays of data.
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Note: This is only meant to be used in unit test.
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PasswordFormData {
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const webkit_glue::PasswordForm::Scheme scheme;
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const char* signon_realm;
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const char* origin;
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const char* action;
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const wchar_t* submit_element;
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const wchar_t* username_element;
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const wchar_t* password_element;
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const wchar_t* username_value;  // Set to NULL for a blacklist entry.
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const wchar_t* password_value;
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const bool preferred;
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const bool ssl_valid;
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const double creation_time;
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Creates and returns a new PasswordForm built from form_data. Caller is
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// responsible for deleting the object when finished with it.
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochwebkit_glue::PasswordForm* CreatePasswordFormFromData(
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const PasswordFormData& form_data);
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Checks whether two vectors of PasswordForms contain equivalent elements,
35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// regardless of order.
36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickbool ContainsSamePasswordFormsPtr(
37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    const std::vector<webkit_glue::PasswordForm*>& first,
38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    const std::vector<webkit_glue::PasswordForm*>& second);
39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickbool ContainsSamePasswordForms(
41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    std::vector<webkit_glue::PasswordForm>& first,
42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    std::vector<webkit_glue::PasswordForm>& second);
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This gmock matcher is used to check that the |arg| contains exactly the same
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// PasswordForms as |forms|, regardless of order.
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochMATCHER_P(ContainsAllPasswordForms, forms, "") {
47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  return ContainsSamePasswordFormsPtr(forms, arg);
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_FORM_DATA_H_
51