diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/components/autofill/ios/browser | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/autofill/ios/browser')
6 files changed, 28 insertions, 60 deletions
diff --git a/chromium/components/autofill/ios/browser/autofill_agent.mm b/chromium/components/autofill/ios/browser/autofill_agent.mm index fceb06e2fda..fafe880b37e 100644 --- a/chromium/components/autofill/ios/browser/autofill_agent.mm +++ b/chromium/components/autofill/ios/browser/autofill_agent.mm @@ -187,8 +187,7 @@ void GetFormField(autofill::FormFieldData* field, _prefObserverBridge->ObserveChangesForPreference( autofill::prefs::kAutofillProfileEnabled, &_prefChangeRegistrar); - _jsAutofillManager = [[JsAutofillManager alloc] - initWithReceiver:_webState->GetJSInjectionReceiver()]; + _jsAutofillManager = [[JsAutofillManager alloc] init]; } return self; } diff --git a/chromium/components/autofill/ios/browser/autofill_util.h b/chromium/components/autofill/ios/browser/autofill_util.h index 7065abd8203..8c4f61538ee 100644 --- a/chromium/components/autofill/ios/browser/autofill_util.h +++ b/chromium/components/autofill/ios/browser/autofill_util.h @@ -72,7 +72,6 @@ bool ExtractFormFieldData(const base::DictionaryValue& field, void ExecuteJavaScriptFunction(const std::string& name, const std::vector<base::Value>& parameters, web::WebFrame* frame, - CRWJSInjectionReceiver* js_injection_receiver, base::OnceCallback<void(NSString*)> callback); } // namespace autofill diff --git a/chromium/components/autofill/ios/browser/autofill_util.mm b/chromium/components/autofill/ios/browser/autofill_util.mm index 8e14a554ba2..af140f29505 100644 --- a/chromium/components/autofill/ios/browser/autofill_util.mm +++ b/chromium/components/autofill/ios/browser/autofill_util.mm @@ -19,7 +19,6 @@ #include "components/autofill/core/common/autofill_util.h" #include "components/autofill/core/common/form_data.h" #include "components/autofill/core/common/form_field_data.h" -#import "ios/web/public/deprecated/crw_js_injection_receiver.h" #import "ios/web/public/navigation/navigation_item.h" #import "ios/web/public/navigation/navigation_manager.h" #include "ios/web/public/security/ssl_status.h" @@ -27,6 +26,9 @@ #include "url/gurl.h" #include "url/origin.h" +using base::NumberToString; +using base::StringToUint; + namespace { // The timeout for any JavaScript call in this file. const int64_t kJavaScriptExecutionTimeoutInSeconds = 5; @@ -50,17 +52,11 @@ bool IsContextSecureForWebState(web::WebState* web_state) { } std::unique_ptr<base::Value> ParseJson(NSString* json_string) { - // Convert JSON string to JSON object |JSONValue|. - int error_code = 0; - std::string error_message; - std::unique_ptr<base::Value> json_value( - base::JSONReader::ReadAndReturnErrorDeprecated( - base::SysNSStringToUTF8(json_string), base::JSON_PARSE_RFC, - &error_code, &error_message)); - if (error_code) + base::Optional<base::Value> json_value = + base::JSONReader::Read(base::SysNSStringToUTF8(json_string)); + if (!json_value) return nullptr; - - return json_value; + return base::Value::ToUniquePtrValue(std::move(*json_value)); } bool ExtractFormsData(NSString* forms_json, @@ -123,9 +119,9 @@ bool ExtractFormData(const base::Value& form_value, std::string unique_renderer_id; form_dictionary->GetString("unique_renderer_id", &unique_renderer_id); - if (!unique_renderer_id.empty()) { - base::StringToUint(unique_renderer_id, - &form_data->unique_renderer_id.value()); + if (!unique_renderer_id.empty() && + unique_renderer_id != NumberToString(kNotSetRendererID)) { + StringToUint(unique_renderer_id, &form_data->unique_renderer_id.value()); } else { form_data->unique_renderer_id = FormRendererId(); } @@ -141,6 +137,7 @@ bool ExtractFormData(const base::Value& form_value, form_dictionary->GetBoolean("is_form_tag", &form_data->is_form_tag); form_dictionary->GetBoolean("is_formless_checkout", &form_data->is_formless_checkout); + form_dictionary->GetString("frame_id", &form_data->frame_id); // Field list (mandatory) is extracted. const base::ListValue* fields_list = nullptr; @@ -169,9 +166,9 @@ bool ExtractFormFieldData(const base::DictionaryValue& field, std::string unique_renderer_id; field.GetString("unique_renderer_id", &unique_renderer_id); - if (!unique_renderer_id.empty()) { - base::StringToUint(unique_renderer_id, - &field_data->unique_renderer_id.value()); + if (!unique_renderer_id.empty() && + unique_renderer_id != NumberToString(kNotSetRendererID)) { + StringToUint(unique_renderer_id, &field_data->unique_renderer_id.value()); } else { field_data->unique_renderer_id = FieldRendererId(); } @@ -233,7 +230,6 @@ bool ExtractFormFieldData(const base::DictionaryValue& field, void ExecuteJavaScriptFunction(const std::string& name, const std::vector<base::Value>& parameters, web::WebFrame* frame, - CRWJSInjectionReceiver* js_injection_receiver, base::OnceCallback<void(NSString*)> callback) { __block base::OnceCallback<void(NSString*)> cb = std::move(callback); diff --git a/chromium/components/autofill/ios/browser/js_autofill_manager.h b/chromium/components/autofill/ios/browser/js_autofill_manager.h index 15c404b9b3a..7ebd532dcd1 100644 --- a/chromium/components/autofill/ios/browser/js_autofill_manager.h +++ b/chromium/components/autofill/ios/browser/js_autofill_manager.h @@ -8,7 +8,6 @@ #include "base/ios/block_types.h" #include "base/values.h" #include "components/autofill/core/common/autofill_constants.h" -#import "ios/web/public/deprecated/crw_js_injection_receiver.h" namespace web { class WebFrame; @@ -72,12 +71,6 @@ class WebFrame; - (void)toggleTrackingUserEditedFields:(BOOL)state inFrame:(web::WebFrame*)frame; -// Designated initializer. |receiver| should not be nil. -- (instancetype)initWithReceiver:(CRWJSInjectionReceiver*)receiver - NS_DESIGNATED_INITIALIZER; - -- (instancetype)init NS_UNAVAILABLE; - @end #endif // COMPONENTS_AUTOFILL_IOS_BROWSER_JS_AUTOFILL_MANAGER_H_ diff --git a/chromium/components/autofill/ios/browser/js_autofill_manager.mm b/chromium/components/autofill/ios/browser/js_autofill_manager.mm index 13592c9ba3a..4e8f9645df4 100644 --- a/chromium/components/autofill/ios/browser/js_autofill_manager.mm +++ b/chromium/components/autofill/ios/browser/js_autofill_manager.mm @@ -12,8 +12,6 @@ #include "base/command_line.h" #include "base/feature_list.h" #include "base/format_macros.h" -#include "base/json/json_writer.h" -#include "base/json/string_escape.h" #include "base/mac/foundation_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/sys_string_conversions.h" @@ -26,19 +24,7 @@ #error "This file requires ARC support." #endif -@implementation JsAutofillManager { - // The injection receiver used to evaluate JavaScript. - __weak CRWJSInjectionReceiver* _receiver; -} - -- (instancetype)initWithReceiver:(CRWJSInjectionReceiver*)receiver { - DCHECK(receiver); - self = [super init]; - if (self) { - _receiver = receiver; - } - return self; -} +@implementation JsAutofillManager - (void)addJSDelayInFrame:(web::WebFrame*)frame { const base::CommandLine* command_line = @@ -52,7 +38,7 @@ std::vector<base::Value> parameters; parameters.push_back(base::Value(commandLineDelay)); autofill::ExecuteJavaScriptFunction( - "autofill.setDelay", parameters, frame, _receiver, + "autofill.setDelay", parameters, frame, base::OnceCallback<void(NSString*)>()); } } @@ -70,8 +56,7 @@ parameters.push_back(base::Value(static_cast<int>(requiredFieldsCount))); parameters.push_back(base::Value(restrictUnownedFieldsToFormlessCheckout)); autofill::ExecuteJavaScriptFunction("autofill.extractForms", parameters, - frame, _receiver, - base::BindOnce(completionHandler)); + frame, base::BindOnce(completionHandler)); } #pragma mark - @@ -84,7 +69,7 @@ std::vector<base::Value> parameters; parameters.push_back(std::move(*data)); autofill::ExecuteJavaScriptFunction("autofill.fillActiveFormField", - parameters, frame, _receiver, + parameters, frame, base::BindOnce(^(NSString*) { completionHandler(); })); @@ -94,7 +79,7 @@ std::vector<base::Value> parameters; parameters.push_back(base::Value(state ? 200 : 0)); autofill::ExecuteJavaScriptFunction("formHandlers.trackFormMutations", - parameters, frame, _receiver, + parameters, frame, base::OnceCallback<void(NSString*)>()); } @@ -104,7 +89,7 @@ parameters.push_back(base::Value(static_cast<bool>(state))); autofill::ExecuteJavaScriptFunction( "formHandlers.toggleTrackingUserEditedFields", parameters, frame, - _receiver, base::OnceCallback<void(NSString*)>()); + base::OnceCallback<void(NSString*)>()); } - (void)fillForm:(std::unique_ptr<base::Value>)data @@ -121,7 +106,7 @@ parameters.push_back(std::move(*data)); parameters.push_back(base::Value(fieldIdentifier)); autofill::ExecuteJavaScriptFunction("autofill.fillForm", parameters, frame, - _receiver, base::BindOnce(^(NSString*) { + base::BindOnce(^(NSString*) { completionHandler(); })); } @@ -135,7 +120,7 @@ parameters.push_back(base::Value(base::SysNSStringToUTF8(formName))); parameters.push_back(base::Value(base::SysNSStringToUTF8(fieldIdentifier))); autofill::ExecuteJavaScriptFunction("autofill.clearAutofilledFields", - parameters, frame, _receiver, + parameters, frame, base::BindOnce(^(NSString*) { completionHandler(); })); @@ -147,7 +132,7 @@ std::vector<base::Value> parameters; parameters.push_back(std::move(*data)); autofill::ExecuteJavaScriptFunction("autofill.fillPredictionData", parameters, - frame, _receiver, + frame, base::OnceCallback<void(NSString*)>()); } diff --git a/chromium/components/autofill/ios/browser/js_suggestion_manager.mm b/chromium/components/autofill/ios/browser/js_suggestion_manager.mm index e5767bba023..837546f40de 100644 --- a/chromium/components/autofill/ios/browser/js_suggestion_manager.mm +++ b/chromium/components/autofill/ios/browser/js_suggestion_manager.mm @@ -56,8 +56,7 @@ parameters.push_back(base::Value(base::SysNSStringToUTF8(fieldName))); autofill::ExecuteJavaScriptFunction( "suggestion.selectNextElement", parameters, - [self frameWithFrameID:frameID], _receiver, - base::OnceCallback<void(NSString*)>()); + [self frameWithFrameID:frameID], base::OnceCallback<void(NSString*)>()); } - (void)selectPreviousElementInFrameWithID:(NSString*)frameID { @@ -72,8 +71,7 @@ parameters.push_back(base::Value(base::SysNSStringToUTF8(fieldName))); autofill::ExecuteJavaScriptFunction( "suggestion.selectPreviousElement", parameters, - [self frameWithFrameID:frameID], _receiver, - base::OnceCallback<void(NSString*)>()); + [self frameWithFrameID:frameID], base::OnceCallback<void(NSString*)>()); } - (void)fetchPreviousAndNextElementsPresenceInFrameWithID:(NSString*)frameID @@ -98,8 +96,7 @@ parameters.push_back(base::Value(base::SysNSStringToUTF8(fieldName))); autofill::ExecuteJavaScriptFunction( "suggestion.hasPreviousNextElements", parameters, - [self frameWithFrameID:frameID], _receiver, - base::BindOnce(^(NSString* result) { + [self frameWithFrameID:frameID], base::BindOnce(^(NSString* result) { // The result maybe an empty string here due to 2 reasons: // 1) When there is an exception running the JS // 2) There is a race when the page is changing due to which @@ -127,8 +124,7 @@ std::vector<base::Value> parameters; autofill::ExecuteJavaScriptFunction( "suggestion.blurActiveElement", parameters, - [self frameWithFrameID:frameID], _receiver, - base::OnceCallback<void(NSString*)>()); + [self frameWithFrameID:frameID], base::OnceCallback<void(NSString*)>()); } - (web::WebFrame*)frameWithFrameID:(NSString*)frameID { |