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 12class GURL; 13 14namespace autofill { 15 16class ContentAutofillDriver; 17struct FormData; 18class FormStructure; 19 20// Driver for the requestAutocomplete flow. 21class 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