| // Copyright 2018 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 COMPONENTS_AUTOFILL_CORE_BROWSER_PASSWORD_REQUIREMENTS_SPEC_FETCHER_H_ |
| #define COMPONENTS_AUTOFILL_CORE_BROWSER_PASSWORD_REQUIREMENTS_SPEC_FETCHER_H_ |
| |
| #include "base/callback.h" |
| #include "url/gurl.h" |
| |
| namespace autofill { |
| |
| class PasswordRequirementsSpec; |
| |
| // Fetches PasswordRequirementsSpec for a specific origin. |
| class PasswordRequirementsSpecFetcher { |
| public: |
| using FetchCallback = |
| base::OnceCallback<void(const PasswordRequirementsSpec&)>; |
| |
| virtual ~PasswordRequirementsSpecFetcher() = default; |
| |
| // Fetches a configuration for |origin|. |
| // |
| // |origin| references the origin in the PasswordForm for which rules need to |
| // be fetched. |
| // |
| // The |callback| must remain valid until called back, but this class may be |
| // destroyed before the |callback| has been triggered. |
| // |
| // Fetch() may be called multiple times concurrently. Requests are batched |
| // if possible. |
| // |
| // If the network request fails or times out, the callback receives an empty |
| // spec. |
| virtual void Fetch(GURL origin, FetchCallback callback) = 0; |
| }; |
| |
| } // namespace autofill |
| |
| #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_PASSWORD_REQUIREMENTS_SPEC_FETCHER_H_ |