Home | History | Annotate | Download | only in browser
      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