Upstream version 5.34.92.0
[platform/framework/web/crosswalk.git] / src / components / autofill / content / browser / request_autocomplete_manager.h
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_