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