1 // Copyright 2017 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 IOS_WEB_VIEW_INTERNAL_AUTOFILL_WEB_VIEW_AUTOFILL_CLIENT_IOS_H_ 6 #define IOS_WEB_VIEW_INTERNAL_AUTOFILL_WEB_VIEW_AUTOFILL_CLIENT_IOS_H_ 7 8 #include <memory> 9 #include <string> 10 #include <vector> 11 12 #include "base/macros.h" 13 #include "base/memory/weak_ptr.h" 14 #include "components/autofill/core/browser/autocomplete_history_manager.h" 15 #include "components/autofill/core/browser/autofill_client.h" 16 #include "components/autofill/core/browser/logging/log_manager.h" 17 #include "components/autofill/core/browser/payments/card_unmask_delegate.h" 18 #include "components/autofill/core/browser/payments/legal_message_line.h" 19 #include "components/autofill/core/browser/payments/strike_database.h" 20 #include "components/autofill/core/browser/personal_data_manager.h" 21 #include "components/prefs/pref_service.h" 22 #include "components/sync/driver/sync_service.h" 23 #import "ios/web/public/web_state.h" 24 #import "ios/web_view/internal/autofill/cwv_autofill_client_ios_bridge.h" 25 #include "ios/web_view/internal/web_view_browser_state.h" 26 27 namespace autofill { 28 29 // WebView implementation of AutofillClient. 30 class WebViewAutofillClientIOS : public AutofillClient { 31 public: 32 static std::unique_ptr<WebViewAutofillClientIOS> Create( 33 web::WebState* web_state, 34 ios_web_view::WebViewBrowserState* browser_state); 35 36 WebViewAutofillClientIOS( 37 const std::string& locale, 38 PrefService* pref_service, 39 PersonalDataManager* personal_data_manager, 40 AutocompleteHistoryManager* autocomplete_history_manager, 41 web::WebState* web_state, 42 signin::IdentityManager* identity_manager, 43 StrikeDatabase* strike_database, 44 syncer::SyncService* sync_service, 45 std::unique_ptr<autofill::LogManager> log_manager); 46 ~WebViewAutofillClientIOS() override; 47 48 // AutofillClient: 49 PersonalDataManager* GetPersonalDataManager() override; 50 AutocompleteHistoryManager* GetAutocompleteHistoryManager() override; 51 PrefService* GetPrefs() override; 52 syncer::SyncService* GetSyncService() override; 53 signin::IdentityManager* GetIdentityManager() override; 54 FormDataImporter* GetFormDataImporter() override; 55 payments::PaymentsClient* GetPaymentsClient() override; 56 StrikeDatabase* GetStrikeDatabase() override; 57 ukm::UkmRecorder* GetUkmRecorder() override; 58 ukm::SourceId GetUkmSourceId() override; 59 AddressNormalizer* GetAddressNormalizer() override; 60 const GURL& GetLastCommittedURL() override; 61 security_state::SecurityLevel GetSecurityLevelForUmaHistograms() override; 62 const translate::LanguageState* GetLanguageState() override; 63 void ShowAutofillSettings(bool show_credit_card_settings) override; 64 void ShowUnmaskPrompt(const CreditCard& card, 65 UnmaskCardReason reason, 66 base::WeakPtr<CardUnmaskDelegate> delegate) override; 67 void OnUnmaskVerificationResult(PaymentsRpcResult result) override; 68 void ConfirmAccountNameFixFlow( 69 base::OnceCallback<void(const base::string16&)> callback) override; 70 void ConfirmExpirationDateFixFlow( 71 const CreditCard& card, 72 base::OnceCallback<void(const base::string16&, const base::string16&)> 73 callback) override; 74 void ConfirmSaveCreditCardLocally( 75 const CreditCard& card, 76 SaveCreditCardOptions options, 77 LocalSaveCardPromptCallback callback) override; 78 void ConfirmSaveCreditCardToCloud( 79 const CreditCard& card, 80 const LegalMessageLines& legal_message_lines, 81 SaveCreditCardOptions options, 82 UploadSaveCardPromptCallback callback) override; 83 void CreditCardUploadCompleted(bool card_saved) override; 84 void ConfirmCreditCardFillAssist(const CreditCard& card, 85 base::OnceClosure callback) override; 86 bool HasCreditCardScanFeature() override; 87 void ScanCreditCard(CreditCardScanCallback callback) override; 88 void ShowAutofillPopup( 89 const AutofillClient::PopupOpenArgs& open_args, 90 base::WeakPtr<AutofillPopupDelegate> delegate) override; 91 void UpdateAutofillPopupDataListValues( 92 const std::vector<base::string16>& values, 93 const std::vector<base::string16>& labels) override; 94 base::span<const Suggestion> GetPopupSuggestions() const override; 95 void PinPopupView() override; 96 AutofillClient::PopupOpenArgs GetReopenPopupArgs() const override; 97 void UpdatePopup(const std::vector<Suggestion>& suggestions, 98 PopupType popup_type) override; 99 void HideAutofillPopup(PopupHidingReason reason) override; 100 bool IsAutocompleteEnabled() override; 101 void PropagateAutofillPredictions( 102 content::RenderFrameHost* rfh, 103 const std::vector<FormStructure*>& forms) override; 104 void DidFillOrPreviewField(const base::string16& autofilled_value, 105 const base::string16& profile_full_name) override; 106 bool IsContextSecure() override; 107 bool ShouldShowSigninPromo() override; 108 bool AreServerCardsSupported() override; 109 void ExecuteCommand(int id) override; 110 111 // RiskDataLoader: 112 void LoadRiskData( 113 base::OnceCallback<void(const std::string&)> callback) override; 114 115 LogManager* GetLogManager() const override; 116 set_bridge(id<CWVAutofillClientIOSBridge> bridge)117 void set_bridge(id<CWVAutofillClientIOSBridge> bridge) { bridge_ = bridge; } 118 119 bool IsQueryIDRelevant(int query_id) override; 120 121 private: 122 PrefService* pref_service_; 123 PersonalDataManager* personal_data_manager_; 124 AutocompleteHistoryManager* autocomplete_history_manager_; 125 web::WebState* web_state_; 126 __weak id<CWVAutofillClientIOSBridge> bridge_; 127 signin::IdentityManager* identity_manager_; 128 std::unique_ptr<payments::PaymentsClient> payments_client_; 129 std::unique_ptr<FormDataImporter> form_data_importer_; 130 StrikeDatabase* strike_database_; 131 syncer::SyncService* sync_service_ = nullptr; 132 std::unique_ptr<LogManager> log_manager_; 133 134 DISALLOW_COPY_AND_ASSIGN(WebViewAutofillClientIOS); 135 }; 136 137 } // namespace autofill 138 139 #endif // IOS_WEB_VIEW_INTERNAL_AUTOFILL_WEB_VIEW_AUTOFILL_CLIENT_IOS_H_ 140