15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_SYNC_TEST_INTEGRATION_PASSWORDS_HELPER_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_SYNC_TEST_INTEGRATION_PASSWORDS_HELPER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/profile_sync_service.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/sync_test.h"
1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "components/autofill/core/common/password_form.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace password_manager {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PasswordStore;
17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace passwords_helper {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Adds the login held in |form| to the password store |store|. Even though
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// logins are normally added asynchronously, this method will block until the
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// login is added.
24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid AddLogin(password_manager::PasswordStore* store,
25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch              const autofill::PasswordForm& form);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Update the data held in password store |store| with a modified |form|.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This method blocks until the operation is complete.
29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid UpdateLogin(password_manager::PasswordStore* store,
30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                 const autofill::PasswordForm& form);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Searches |store| for all logins matching a fake signon realm used only by
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// LivePasswordsSyncTest and adds the results to |matches|. Note that the
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// caller is responsible for deleting the forms added to |matches|.
35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid GetLogins(password_manager::PasswordStore* store,
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)               std::vector<autofill::PasswordForm>& matches);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Removes the login held in |form| from the password store |store|.  This
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// method blocks until the operation is complete.
40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid RemoveLogin(password_manager::PasswordStore* store,
41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                 const autofill::PasswordForm& form);
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Removes all password forms from the password store |store|.
44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid RemoveLogins(password_manager::PasswordStore* store);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sets the cryptographer's encryption passphrase for the profile at index
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |index| to |passphrase|, and passphrase type |type|.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetEncryptionPassphrase(int index,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const std::string& passphrase,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             ProfileSyncService::PassphraseType type);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sets the cryptographer's decryption passphrase for the profile at index
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |index| to |passphrase|. Returns false if the operation failed, and true
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// otherwise.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SetDecryptionPassphrase(int index, const std::string& passphrase);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Gets the password store of the profile with index |index|.
58c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochpassword_manager::PasswordStore* GetPasswordStore(int index);
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Gets the password store of the verifier profile.
61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochpassword_manager::PasswordStore* GetVerifierPasswordStore();
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns true iff the profile with index |index| contains the same password
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// forms as the verifier profile.
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ProfileContainsSamePasswordFormsAsVerifier(int index);
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns true iff the profile with index |index_a| contains the same
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// password forms as the profile with index |index_b|.
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ProfilesContainSamePasswordForms(int index_a, int index_b);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns true iff all profiles contain the same password forms as the
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// verifier profile.
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool AllProfilesContainSamePasswordFormsAsVerifier();
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns true iff all profiles contain the same password forms.
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool AllProfilesContainSamePasswordForms();
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Returns true if all profiles contain the same password forms and
79a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// it doesn't time out.
80a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochbool AwaitAllProfilesContainSamePasswordForms();
81a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Returns true if specified profile contains the same password forms as the
83010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// verifier and it doesn't time out.
84010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)bool AwaitProfileContainsSamePasswordFormsAsVerifier(int index);
85010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns the number of forms in the password store of the profile with index
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |index|.
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetPasswordCount(int index);
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns the number of forms in the password store of the verifier profile.
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetVerifierPasswordCount();
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates a test password form with a well known fake signon realm used only
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// by LivePasswordsSyncTest based on |index|.
9558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)autofill::PasswordForm CreateTestPasswordForm(int index);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace passwords_helper
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_SYNC_TEST_INTEGRATION_PASSWORDS_HELPER_H_
100