blob: c5ca1686af3ef8010923977a83c6a7a039b729ff [file] [log] [blame]
// Copyright (c) 2011 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 CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_
#define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_
#include "chrome/browser/common/cancelable_request.h"
#include "chrome/common/cancelable_task_tracker.h"
namespace autofill {
struct PasswordForm;
}
// Reads from the PasswordStore are done asynchronously on a separate
// thread. PasswordStoreConsumer provides the virtual callback method, which is
// guaranteed to be executed on this (the UI) thread. It also provides the
// CancelableRequestConsumer member, which cancels any outstanding requests upon
// destruction.
class PasswordStoreConsumer {
public:
PasswordStoreConsumer();
// Call this when the request is finished. If there are no results, call it
// anyway with an empty vector.
virtual void OnPasswordStoreRequestDone(
CancelableRequestProvider::Handle handle,
const std::vector<autofill::PasswordForm*>& result) = 0;
// The CancelableRequest framework needs both a callback (the
// PasswordStoreConsumer::OnPasswordStoreRequestDone) as well as a
// CancelableRequestConsumer. This accessor makes the API simpler for callers
// as PasswordStore can get both from the PasswordStoreConsumer.
CancelableRequestConsumerBase* cancelable_consumer() {
return &cancelable_consumer_;
}
// Called when the request is finished. If there are no results, it is called
// with an empty vector.
// Note: The implementation owns all PasswordForms in the vector.
virtual void OnGetPasswordStoreResults(
const std::vector<autofill::PasswordForm*>& results) = 0;
// Cancels the task.
CancelableTaskTracker* cancelable_task_tracker() {
return &cancelable_task_tracker_;
}
protected:
virtual ~PasswordStoreConsumer();
private:
CancelableRequestConsumer cancelable_consumer_;
CancelableTaskTracker cancelable_task_tracker_;
};
#endif // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_