1 // Copyright (c) 2011 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_CONSUMER_H_ 6 #define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_ 7 #pragma once 8 9 #include "content/browser/cancelable_request.h" 10 11 namespace webkit_glue { 12 struct PasswordForm; 13 }; 14 15 // Reads from the PasswordStore are done asynchrously on a separate 16 // thread. PasswordStoreConsumer provides the virtual callback method, which is 17 // guaranteed to be executed on this (the UI) thread. It also provides the 18 // CancelableRequestConsumer member, which cancels any outstanding requests upon 19 // destruction. 20 class PasswordStoreConsumer { 21 public: 22 PasswordStoreConsumer(); 23 24 // Call this when the request is finished. If there are no results, call it 25 // anyway with an empty vector. 26 virtual void OnPasswordStoreRequestDone( 27 CancelableRequestProvider::Handle handle, 28 const std::vector<webkit_glue::PasswordForm*>& result) = 0; 29 30 // The CancelableRequest framework needs both a callback (the 31 // PasswordStoreConsumer::OnPasswordStoreRequestDone) as well as a 32 // CancelableRequestConsumer. This accessor makes the API simpler for callers 33 // as PasswordStore can get both from the PasswordStoreConsumer. cancelable_consumer()34 CancelableRequestConsumerBase* cancelable_consumer() { 35 return &cancelable_consumer_; 36 } 37 38 protected: 39 virtual ~PasswordStoreConsumer(); 40 41 private: 42 CancelableRequestConsumer cancelable_consumer_; 43 }; 44 45 #endif // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_ 46