1 // Copyright 2014 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.
5 #ifndef COMPONENTS_AUTOFILL_CONTENT_BROWSER_CONTENT_AUTOFILL_DRIVER_H_
6 #define COMPONENTS_AUTOFILL_CONTENT_BROWSER_CONTENT_AUTOFILL_DRIVER_H_
10 #include "base/memory/scoped_ptr.h"
11 #include "base/supports_user_data.h"
12 #include "components/autofill/content/browser/request_autocomplete_manager.h"
13 #include "components/autofill/core/browser/autofill_driver.h"
14 #include "components/autofill/core/browser/autofill_external_delegate.h"
15 #include "components/autofill/core/browser/autofill_manager.h"
16 #include "content/public/browser/web_contents_observer.h"
28 class AutofillContext
;
31 // Class that drives autofill flow in the browser process based on
32 // communication from the renderer and from the external world. There is one
33 // instance per WebContents.
34 class ContentAutofillDriver
: public AutofillDriver
,
35 public content::WebContentsObserver
,
36 public base::SupportsUserData::Data
{
38 static void CreateForWebContentsAndDelegate(
39 content::WebContents
* contents
,
40 AutofillClient
* client
,
41 const std::string
& app_locale
,
42 AutofillManager::AutofillDownloadManagerState enable_download_manager
);
43 static ContentAutofillDriver
* FromWebContents(content::WebContents
* contents
);
46 virtual bool IsOffTheRecord() const OVERRIDE
;
47 virtual net::URLRequestContextGetter
* GetURLRequestContext() OVERRIDE
;
48 virtual base::SequencedWorkerPool
* GetBlockingPool() OVERRIDE
;
49 virtual bool RendererIsAvailable() OVERRIDE
;
50 virtual void SendFormDataToRenderer(int query_id
,
51 RendererFormDataAction action
,
52 const FormData
& data
) OVERRIDE
;
53 virtual void PingRenderer() OVERRIDE
;
54 virtual void SendAutofillTypePredictionsToRenderer(
55 const std::vector
<FormStructure
*>& forms
) OVERRIDE
;
56 virtual void RendererShouldAcceptDataListSuggestion(
57 const base::string16
& value
) OVERRIDE
;
58 virtual void RendererShouldClearFilledForm() OVERRIDE
;
59 virtual void RendererShouldClearPreviewedForm() OVERRIDE
;
60 virtual void RendererShouldFillFieldWithValue(
61 const base::string16
& value
) OVERRIDE
;
62 virtual void RendererShouldPreviewFieldWithValue(
63 const base::string16
& value
) OVERRIDE
;
65 // Returns the WebContents with which this instance is associated.
66 content::WebContents
* GetWebContents();
68 AutofillExternalDelegate
* autofill_external_delegate() {
69 return &autofill_external_delegate_
;
72 AutofillManager
* autofill_manager() { return autofill_manager_
.get(); }
75 ContentAutofillDriver(
76 content::WebContents
* web_contents
,
77 AutofillClient
* client
,
78 const std::string
& app_locale
,
79 AutofillManager::AutofillDownloadManagerState enable_download_manager
);
80 virtual ~ContentAutofillDriver();
82 // content::WebContentsObserver:
83 virtual void DidNavigateMainFrame(
84 const content::LoadCommittedDetails
& details
,
85 const content::FrameNavigateParams
& params
) OVERRIDE
;
86 virtual void NavigationEntryCommitted(
87 const content::LoadCommittedDetails
& load_details
) OVERRIDE
;
88 virtual void WasHidden() OVERRIDE
;
89 virtual bool OnMessageReceived(const IPC::Message
& message
) OVERRIDE
;
91 // Sets the manager to |manager| and sets |manager|'s external delegate
92 // to |autofill_external_delegate_|. Takes ownership of |manager|.
93 void SetAutofillManager(scoped_ptr
<AutofillManager
> manager
);
96 // AutofillManager instance via which this object drives the shared Autofill
98 scoped_ptr
<AutofillManager
> autofill_manager_
;
100 // AutofillExternalDelegate instance that this object instantiates in the
101 // case where the Autofill native UI is enabled.
102 AutofillExternalDelegate autofill_external_delegate_
;
104 // Driver for the interactive autocomplete dialog.
105 RequestAutocompleteManager request_autocomplete_manager_
;
108 } // namespace autofill
110 #endif // COMPONENTS_AUTOFILL_CONTENT_BROWSER_CONTENT_AUTOFILL_DRIVER_H_