• 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 "third_party/WebKit/public/web/WebFormElement.h"
11 
12 class GURL;
13 
14 namespace autofill {
15 
16 class AutofillDriverImpl;
17 struct FormData;
18 class FormStructure;
19 
20 // Driver for the requestAutocomplete flow.
21 class RequestAutocompleteManager {
22  public:
23   explicit RequestAutocompleteManager(AutofillDriverImpl* 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  private:
31   // Tells the renderer that the current interactive autocomplete dialog
32   // finished with the |result| saying if it was successfull or not, and
33   // |form_data| containing the filled form data.
34   void ReturnAutocompleteResult(
35       blink::WebFormElement::AutocompleteResult result,
36       const FormData& form_data);
37 
38   // Shows the requestAutocomplete dialog for |source_url| with data from |form|
39   // and calls |callback| once the interaction is complete.
40   void ShowRequestAutocompleteDialog(
41       const FormData& form,
42       const GURL& source_url,
43       const base::Callback<void(const FormStructure*)>& callback);
44 
45   // If |result| is not null, derives a FormData object from it and passes it
46   // back to the page along an |AutocompleteResultSuccess| result. Otherwise, it
47   // passes to the page an empty FormData along an
48   // |AutocompleteResultErrorCancel| result.
49   void ReturnAutocompleteData(const FormStructure* result);
50 
51   // The autofill driver owns and outlives |this|.
52   AutofillDriverImpl* const autofill_driver_;  // weak.
53 
54   base::WeakPtrFactory<RequestAutocompleteManager> weak_ptr_factory_;
55 };
56 
57 }  // namespace autofill
58 
59 #endif  // COMPONENTS_AUTOFILL_CONTENT_BROWSER_REQUEST_AUTOCOMPLETE_MANAGER_H_
60