forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
aw_autofill_client.h
141 lines (120 loc) · 5.12 KB
/
aw_autofill_client.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ANDROID_WEBVIEW_BROWSER_AW_AUTOFILL_CLIENT_H_
#define ANDROID_WEBVIEW_BROWSER_AW_AUTOFILL_CLIENT_H_
#include <memory>
#include <string>
#include <vector>
#include "base/android/jni_weak_ref.h"
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "components/autofill/core/browser/autofill_client.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service_factory.h"
#include "content/public/browser/web_contents_user_data.h"
#include "ui/android/view_android.h"
namespace autofill {
class AutofillPopupDelegate;
class CardUnmaskDelegate;
class CreditCard;
class FormStructure;
class PersonalDataManager;
class SaveCardBubbleController;
}
namespace content {
class WebContents;
}
namespace gfx {
class RectF;
}
namespace syncer {
class SyncService;
}
class PersonalDataManager;
class PrefService;
namespace android_webview {
// Manager delegate for the autofill functionality. Android webview
// supports enabling autocomplete feature for each webview instance
// (different than the browser which supports enabling/disabling for
// a profile). Since there is only one pref service for a given browser
// context, we cannot enable this feature via UserPrefs. Rather, we always
// keep the feature enabled at the pref service, and control it via
// the delegates.
class AwAutofillClient : public autofill::AutofillClient,
public content::WebContentsUserData<AwAutofillClient> {
public:
~AwAutofillClient() override;
void SetSaveFormData(bool enabled);
bool GetSaveFormData();
// AutofillClient:
autofill::PersonalDataManager* GetPersonalDataManager() override;
scoped_refptr<autofill::AutofillWebDataService> GetDatabase() override;
PrefService* GetPrefs() override;
syncer::SyncService* GetSyncService() override;
identity::IdentityManager* GetIdentityManager() override;
ukm::UkmRecorder* GetUkmRecorder() override;
autofill::AddressNormalizer* GetAddressNormalizer() override;
autofill::SaveCardBubbleController* GetSaveCardBubbleController() override;
void ShowAutofillSettings() override;
void ShowUnmaskPrompt(
const autofill::CreditCard& card,
UnmaskCardReason reason,
base::WeakPtr<autofill::CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) override;
void ConfirmSaveCreditCardLocally(const autofill::CreditCard& card,
const base::Closure& callback) override;
void ConfirmSaveCreditCardToCloud(
const autofill::CreditCard& card,
std::unique_ptr<base::DictionaryValue> legal_message,
bool should_cvc_be_requested,
const base::Closure& callback) override;
void ConfirmCreditCardFillAssist(const autofill::CreditCard& card,
const base::Closure& callback) override;
void LoadRiskData(
const base::Callback<void(const std::string&)>& callback) override;
bool HasCreditCardScanFeature() override;
void ScanCreditCard(const CreditCardScanCallback& callback) override;
void ShowAutofillPopup(
const gfx::RectF& element_bounds,
base::i18n::TextDirection text_direction,
const std::vector<autofill::Suggestion>& suggestions,
base::WeakPtr<autofill::AutofillPopupDelegate> delegate) override;
void UpdateAutofillPopupDataListValues(
const std::vector<base::string16>& values,
const std::vector<base::string16>& labels) override;
void HideAutofillPopup() override;
bool IsAutocompleteEnabled() override;
void PropagateAutofillPredictions(
content::RenderFrameHost* rfh,
const std::vector<autofill::FormStructure*>& forms) override;
void DidFillOrPreviewField(const base::string16& autofilled_value,
const base::string16& profile_full_name) override;
void DidInteractWithNonsecureCreditCardInput() override;
bool IsContextSecure() override;
bool ShouldShowSigninPromo() override;
bool IsAutofillSupported() override;
void ExecuteCommand(int id) override;
void Dismissed(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
void SuggestionSelected(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
jint position);
private:
explicit AwAutofillClient(content::WebContents* web_contents);
friend class content::WebContentsUserData<AwAutofillClient>;
void ShowAutofillPopupImpl(
const gfx::RectF& element_bounds,
bool is_rtl,
const std::vector<autofill::Suggestion>& suggestions);
// The web_contents associated with this delegate.
content::WebContents* web_contents_;
bool save_form_data_;
JavaObjectWeakGlobalRef java_ref_;
ui::ViewAndroid::ScopedAnchorView anchor_view_;
// The current Autofill query values.
std::vector<autofill::Suggestion> suggestions_;
base::WeakPtr<autofill::AutofillPopupDelegate> delegate_;
DISALLOW_COPY_AND_ASSIGN(AwAutofillClient);
};
} // namespace android_webview
#endif // ANDROID_WEBVIEW_BROWSER_AW_AUTOFILL_CLIENT_H_