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 @@ ...@@ -27,6 +27,9 @@
#include "url/gurl.h" #include "url/gurl.h"
#include "url/origin.h" #include "url/origin.h"
using base::NumberToString;
using base::StringToUint;
namespace { namespace {
// The timeout for any JavaScript call in this file. // The timeout for any JavaScript call in this file.
const int64_t kJavaScriptExecutionTimeoutInSeconds = 5; const int64_t kJavaScriptExecutionTimeoutInSeconds = 5;
...@@ -117,9 +120,9 @@ bool ExtractFormData(const base::Value& form_value, ...@@ -117,9 +120,9 @@ bool ExtractFormData(const base::Value& form_value,
std::string unique_renderer_id; std::string unique_renderer_id;
form_dictionary->GetString("unique_renderer_id", &unique_renderer_id); form_dictionary->GetString("unique_renderer_id", &unique_renderer_id);
if (!unique_renderer_id.empty()) { if (!unique_renderer_id.empty() &&
base::StringToUint(unique_renderer_id, unique_renderer_id != NumberToString(kNotSetRendererID)) {
&form_data->unique_renderer_id.value()); StringToUint(unique_renderer_id, &form_data->unique_renderer_id.value());
} else { } else {
form_data->unique_renderer_id = FormRendererId(); form_data->unique_renderer_id = FormRendererId();
} }
...@@ -163,9 +166,9 @@ bool ExtractFormFieldData(const base::DictionaryValue& field, ...@@ -163,9 +166,9 @@ bool ExtractFormFieldData(const base::DictionaryValue& field,
std::string unique_renderer_id; std::string unique_renderer_id;
field.GetString("unique_renderer_id", &unique_renderer_id); field.GetString("unique_renderer_id", &unique_renderer_id);
if (!unique_renderer_id.empty()) { if (!unique_renderer_id.empty() &&
base::StringToUint(unique_renderer_id, unique_renderer_id != NumberToString(kNotSetRendererID)) {
&field_data->unique_renderer_id.value()); StringToUint(unique_renderer_id, &field_data->unique_renderer_id.value());
} else { } else {
field_data->unique_renderer_id = FieldRendererId(); field_data->unique_renderer_id = FieldRendererId();
} }
......
...@@ -841,7 +841,9 @@ __gCrWeb.fill.webFormElementToFormData = function( ...@@ -841,7 +841,9 @@ __gCrWeb.fill.webFormElementToFormData = function(
try { try {
__gCrWeb.fill.setUniqueIDIfNeeded(formElement); __gCrWeb.fill.setUniqueIDIfNeeded(formElement);
const uniqueID = Symbol.for('__gChrome~uniqueID'); 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) { } catch (e) {
form['unique_renderer_id'] = __gCrWeb.fill.RENDERER_ID_NOT_SET; form['unique_renderer_id'] = __gCrWeb.fill.RENDERER_ID_NOT_SET;
} }
...@@ -1940,7 +1942,9 @@ __gCrWeb.fill.webFormControlElementToFormField = function( ...@@ -1940,7 +1942,9 @@ __gCrWeb.fill.webFormControlElementToFormField = function(
try { try {
const uniqueID = Symbol.for('__gChrome~uniqueID'); 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) { } catch (e) {
field['unique_renderer_id'] = __gCrWeb.fill.RENDERER_ID_NOT_SET; 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