Commit 74a182b4 authored by Maria Kazinova's avatar Maria Kazinova Committed by Commit Bot

[iOS] Not setting a unique_renderer_id of a form or field if JavaScript

returned an invalid value.

Spotted a bug, that kNotSetRendererId value was treated as valid in
Objective-C part.

Bug: 1075444
Change-Id: Id81c7057075ca4388952248d3f480b504817f1dc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2238166Reviewed-by: default avatarVadym Doroshenko  <dvadym@chromium.org>
Commit-Queue: Maria Kazinova <kazinova@google.com>
Cr-Commit-Position: refs/heads/master@{#776869}
parent b20bf713
......@@ -27,6 +27,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;
......@@ -117,9 +120,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();
}
......@@ -163,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();
}
......
......@@ -841,7 +841,9 @@ __gCrWeb.fill.webFormElementToFormData = function(
try {
__gCrWeb.fill.setUniqueIDIfNeeded(formElement);
const uniqueID = Symbol.for('__gChrome~uniqueID');
form['unique_renderer_id'] = formElement[uniqueID].toString();
form['unique_renderer_id'] = isNaN(formElement[uniqueID]) ?
__gCrWeb.fill.RENDERER_ID_NOT_SET :
formElement[uniqueID].toString();
} catch (e) {
form['unique_renderer_id'] = __gCrWeb.fill.RENDERER_ID_NOT_SET;
}
......@@ -1940,7 +1942,9 @@ __gCrWeb.fill.webFormControlElementToFormField = function(
try {
const uniqueID = Symbol.for('__gChrome~uniqueID');
field['unique_renderer_id'] = element[uniqueID].toString();
field['unique_renderer_id'] = isNaN(element[uniqueID]) ?
__gCrWeb.fill.RENDERER_ID_NOT_SET :
element[uniqueID].toString();
} catch (e) {
field['unique_renderer_id'] = __gCrWeb.fill.RENDERER_ID_NOT_SET;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment