1 // Copyright (c) 2012 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 CHROME_BROWSER_UI_AUTOFILL_TAB_AUTOFILL_MANAGER_DELEGATE_H_
6 #define CHROME_BROWSER_UI_AUTOFILL_TAB_AUTOFILL_MANAGER_DELEGATE_H_
8 #include "base/callback.h"
9 #include "base/compiler_specific.h"
10 #include "base/i18n/rtl.h"
11 #include "base/memory/weak_ptr.h"
12 #include "components/autofill/core/browser/autofill_manager_delegate.h"
13 #include "content/public/browser/web_contents_observer.h"
14 #include "content/public/browser/web_contents_user_data.h"
17 struct FrameNavigateParams
;
18 struct LoadCommittedDetails
;
24 class AutofillDialogController
;
25 class AutofillPopupControllerImpl
;
28 // Chrome implementation of AutofillManagerDelegate.
29 class TabAutofillManagerDelegate
30 : public AutofillManagerDelegate
,
31 public content::WebContentsUserData
<TabAutofillManagerDelegate
>,
32 public content::WebContentsObserver
{
34 virtual ~TabAutofillManagerDelegate();
36 // Called when the tab corresponding to |this| instance is activated.
39 // AutofillManagerDelegate implementation.
40 virtual PersonalDataManager
* GetPersonalDataManager() OVERRIDE
;
41 virtual scoped_refptr
<AutofillWebDataService
>
42 GetDatabase() OVERRIDE
;
43 virtual PrefService
* GetPrefs() OVERRIDE
;
44 virtual void HideRequestAutocompleteDialog() OVERRIDE
;
45 virtual void ShowAutofillSettings() OVERRIDE
;
46 virtual void ConfirmSaveCreditCard(
47 const AutofillMetrics
& metric_logger
,
48 const base::Closure
& save_card_callback
) OVERRIDE
;
49 virtual void ShowRequestAutocompleteDialog(
51 const GURL
& source_url
,
52 const base::Callback
<void(const FormStructure
*)>& callback
) OVERRIDE
;
53 virtual void ShowAutofillPopup(
54 const gfx::RectF
& element_bounds
,
55 base::i18n::TextDirection text_direction
,
56 const std::vector
<base::string16
>& values
,
57 const std::vector
<base::string16
>& labels
,
58 const std::vector
<base::string16
>& icons
,
59 const std::vector
<int>& identifiers
,
60 base::WeakPtr
<AutofillPopupDelegate
> delegate
) OVERRIDE
;
61 virtual void UpdateAutofillPopupDataListValues(
62 const std::vector
<base::string16
>& values
,
63 const std::vector
<base::string16
>& labels
) OVERRIDE
;
64 virtual void HideAutofillPopup() OVERRIDE
;
65 virtual bool IsAutocompleteEnabled() OVERRIDE
;
66 virtual void DetectAccountCreationForms(
67 const std::vector
<autofill::FormStructure
*>& forms
) OVERRIDE
;
68 virtual void DidFillOrPreviewField(
69 const base::string16
& autofilled_value
,
70 const base::string16
& profile_full_name
) OVERRIDE
;
72 // content::WebContentsObserver implementation.
73 virtual void WebContentsDestroyed(
74 content::WebContents
* web_contents
) OVERRIDE
;
76 // Exposed for testing.
77 AutofillDialogController
* GetDialogControllerForTesting() {
78 return dialog_controller_
.get();
80 void SetDialogControllerForTesting(
81 const base::WeakPtr
<AutofillDialogController
>& dialog_controller
) {
82 dialog_controller_
= dialog_controller
;
86 explicit TabAutofillManagerDelegate(content::WebContents
* web_contents
);
87 friend class content::WebContentsUserData
<TabAutofillManagerDelegate
>;
89 content::WebContents
* const web_contents_
;
90 base::WeakPtr
<AutofillDialogController
> dialog_controller_
;
91 base::WeakPtr
<AutofillPopupControllerImpl
> popup_controller_
;
93 DISALLOW_COPY_AND_ASSIGN(TabAutofillManagerDelegate
);
96 } // namespace autofill
98 #endif // CHROME_BROWSER_UI_AUTOFILL_TAB_AUTOFILL_MANAGER_DELEGATE_H_