• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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 COMPONENTS_AUTOFILL_CONTENT_BROWSER_REQUEST_AUTOCOMPLETE_MANAGER_H_
6 #define COMPONENTS_AUTOFILL_CONTENT_BROWSER_REQUEST_AUTOCOMPLETE_MANAGER_H_
7 
8 #include "base/callback_forward.h"
9 #include "base/memory/weak_ptr.h"
10 #include "components/autofill/core/browser/autofill_client.h"
11 
12 class GURL;
13 
14 namespace autofill {
15 
16 class ContentAutofillDriver;
17 struct FormData;
18 class FormStructure;
19 
20 // Driver for the requestAutocomplete flow.
21 class RequestAutocompleteManager {
22  public:
23   explicit RequestAutocompleteManager(ContentAutofillDriver* autofill_driver);
24   ~RequestAutocompleteManager();
25 
26   // Requests an interactive autocomplete UI to be shown for |frame_url| with
27   // |form|.
28   void OnRequestAutocomplete(const FormData& form, const GURL& frame_url);
29 
30   // Requests that any running interactive autocomplete be cancelled.
31   void OnCancelRequestAutocomplete();
32 
33  private:
34   // Tells the renderer that the current interactive autocomplete dialog
35   // finished with the |result| saying if it was successful or not, and
36   // |form_structure| containing the filled form data. |debug_message| will
37   // be printed to the developer console.
38   void ReturnAutocompleteResult(
39       AutofillClient::RequestAutocompleteResult result,
40       const base::string16& debug_message,
41       const FormStructure* form_structure);
42 
43   // Shows the requestAutocomplete dialog for |source_url| with data from |form|
44   // and calls |callback| once the interaction is complete.
45   void ShowRequestAutocompleteDialog(
46       const FormData& form,
47       const GURL& source_url,
48       const AutofillClient::ResultCallback& callback);
49 
50   // The autofill driver owns and outlives |this|.
51   ContentAutofillDriver* const autofill_driver_;  // weak.
52 
53   base::WeakPtrFactory<RequestAutocompleteManager> weak_ptr_factory_;
54 };
55 
56 }  // namespace autofill
57 
58 #endif  // COMPONENTS_AUTOFILL_CONTENT_BROWSER_REQUEST_AUTOCOMPLETE_MANAGER_H_
59