Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Unified Diff: components/autofill/core/common/form_field_data.cc

Issue 2022123002: Merge autofill::FormFieldData::is_checkable and is_checked (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/autofill/core/common/form_field_data.cc
diff --git a/components/autofill/core/common/form_field_data.cc b/components/autofill/core/common/form_field_data.cc
index dee52c7908cec94f72058b4a34edbf92bb8a70e4..fab02362cb94371b81bc9c06cbe1efdd567459f1 100644
--- a/components/autofill/core/common/form_field_data.cc
+++ b/components/autofill/core/common/form_field_data.cc
@@ -14,7 +14,7 @@ namespace {
// Increment this anytime pickle format is modified as well as provide
// deserialization routine from previous kPickleVersion format.
-const int kPickleVersion = 3;
+const int kPickleVersion = 4;
void AddVectorToPickle(std::vector<base::string16> strings,
base::Pickle* pickle) {
@@ -52,17 +52,22 @@ bool ReadAsInt(base::PickleIterator* iter, T* target_value) {
bool DeserializeCommonSection1(base::PickleIterator* iter,
vabr (Chromium) 2016/06/06 12:39:30 This is not a fault of your CL, but I'm afraid the
FormFieldData* field_data) {
- return iter->ReadString16(&field_data->label) &&
- iter->ReadString16(&field_data->name) &&
- iter->ReadString16(&field_data->value) &&
- iter->ReadString(&field_data->form_control_type) &&
- iter->ReadString(&field_data->autocomplete_attribute) &&
- iter->ReadUInt64(&field_data->max_length) &&
- iter->ReadBool(&field_data->is_autofilled) &&
- iter->ReadBool(&field_data->is_checked) &&
- iter->ReadBool(&field_data->is_checkable) &&
- iter->ReadBool(&field_data->is_focusable) &&
- iter->ReadBool(&field_data->should_autocomplete);
+ bool ret = true;
vabr (Chromium) 2016/06/06 12:39:30 nit: Please avoid abbreviations [1]. My suggestion
+ bool is_checkable = false;
+ bool is_checked = false;
+ ret = ret && iter->ReadString16(&field_data->label);
vabr (Chromium) 2016/06/06 12:39:30 nit: Repeating |ret| clutters the code. Please ini
+ ret = ret && iter->ReadString16(&field_data->name);
+ ret = ret && iter->ReadString16(&field_data->value);
+ ret = ret && iter->ReadString(&field_data->form_control_type);
+ ret = ret && iter->ReadString(&field_data->autocomplete_attribute);
+ ret = ret && iter->ReadUInt64(&field_data->max_length);
+ ret = ret && iter->ReadBool(&field_data->is_autofilled);
+ ret = ret && iter->ReadBool(&is_checked);
+ ret = ret && iter->ReadBool(&is_checkable);
+ SetCheckStatus(field_data, is_checkable, is_checked);
+ ret = ret && iter->ReadBool(&field_data->is_focusable);
+ ret = ret && iter->ReadBool(&field_data->should_autocomplete);
+ return ret;
}
bool DeserializeCommonSection2(base::PickleIterator* iter,
@@ -82,13 +87,26 @@ bool DeserializeVersion3Specific(base::PickleIterator* iter,
return iter->ReadString16(&field_data->placeholder);
}
+bool DeserializeCommonSection1Version4Specific(base::PickleIterator* iter,
+ FormFieldData* field_data) {
+ return iter->ReadString16(&field_data->label) &&
+ iter->ReadString16(&field_data->name) &&
+ iter->ReadString16(&field_data->value) &&
+ iter->ReadString(&field_data->form_control_type) &&
+ iter->ReadString(&field_data->autocomplete_attribute) &&
+ iter->ReadUInt64(&field_data->max_length) &&
+ iter->ReadBool(&field_data->is_autofilled) &&
+ ReadAsInt(iter, &field_data->check_status) &&
+ iter->ReadBool(&field_data->is_focusable) &&
+ iter->ReadBool(&field_data->should_autocomplete);
+}
+
} // namespace
FormFieldData::FormFieldData()
: max_length(0),
is_autofilled(false),
- is_checked(false),
- is_checkable(false),
+ check_status(CheckStatus::NOT_CHECKABLE),
vabr (Chromium) 2016/06/06 12:39:30 No need for CheckStatus:: because you are not usin
is_focusable(false),
should_autocomplete(true),
role(ROLE_ATTRIBUTE_OTHER),
@@ -109,7 +127,7 @@ bool FormFieldData::SameFieldAs(const FormFieldData& field) const {
placeholder == field.placeholder && max_length == field.max_length &&
// is_checked and is_autofilled counts as "value" since these change
// when we fill things in.
- is_checkable == field.is_checkable &&
+ IsCheckable(check_status) == IsCheckable(field.check_status) &&
is_focusable == field.is_focusable &&
should_autocomplete == field.should_autocomplete &&
role == field.role && text_direction == field.text_direction;
@@ -142,8 +160,8 @@ bool FormFieldData::operator<(const FormFieldData& field) const {
if (max_length < field.max_length) return true;
if (max_length > field.max_length) return false;
// Skip |is_checked| and |is_autofilled| as in SameFieldAs.
- if (is_checkable < field.is_checkable) return true;
- if (is_checkable > field.is_checkable) return false;
+ if (IsCheckable(check_status) < IsCheckable(field.check_status)) return true;
+ if (IsCheckable(check_status) > IsCheckable(field.check_status)) return false;
if (is_focusable < field.is_focusable) return true;
if (is_focusable > field.is_focusable) return false;
if (should_autocomplete < field.should_autocomplete) return true;
@@ -166,8 +184,7 @@ void SerializeFormFieldData(const FormFieldData& field_data,
pickle->WriteString(field_data.autocomplete_attribute);
pickle->WriteUInt64(field_data.max_length);
pickle->WriteBool(field_data.is_autofilled);
- pickle->WriteBool(field_data.is_checked);
- pickle->WriteBool(field_data.is_checkable);
+ pickle->WriteInt(field_data.check_status);
pickle->WriteBool(field_data.is_focusable);
pickle->WriteBool(field_data.should_autocomplete);
pickle->WriteInt(field_data.role);
@@ -214,6 +231,17 @@ bool DeserializeFormFieldData(base::PickleIterator* iter,
}
break;
}
+ case 4: {
+ if (!DeserializeCommonSection1Version4Specific(iter,
+ &temp_form_field_data) ||
+ !DeserializeVersion2Specific(iter, &temp_form_field_data) ||
+ !DeserializeCommonSection2(iter, &temp_form_field_data) ||
+ !DeserializeVersion3Specific(iter, &temp_form_field_data)) {
+ LOG(ERROR) << "Could not deserialize FormFieldData from pickle";
+ return false;
+ }
+ break;
+ }
default: {
LOG(ERROR) << "Unknown FormFieldData pickle version " << version;
return false;
@@ -224,17 +252,62 @@ bool DeserializeFormFieldData(base::PickleIterator* iter,
}
std::ostream& operator<<(std::ostream& os, const FormFieldData& field) {
+ std::string checkStatusStr;
vabr (Chromium) 2016/06/06 12:39:30 nit: Please use all-lower-case and underscores for
+ switch (field.check_status) {
+ case FormFieldData::CheckStatus::NOT_CHECKABLE:
+ checkStatusStr = "NOT_CHECKABLE";
+ break;
+ case FormFieldData::CheckStatus::CHECKABLE_BUT_UNCHECKED:
+ checkStatusStr = "CHECKABLE_BUT_UNCHECKED";
+ break;
+ case FormFieldData::CheckStatus::CHECKED:
+ checkStatusStr = "CHECKED";
+ break;
+ }
+
+ std::string roleStr;
+ switch (field.role) {
+ case FormFieldData::RoleAttribute::ROLE_ATTRIBUTE_PRESENTATION:
+ roleStr = "ROLE_ATTRIBUTE_PRESENTATION";
+ break;
+ case FormFieldData::RoleAttribute::ROLE_ATTRIBUTE_OTHER:
+ roleStr = "ROLE_ATTRIBUTE_OTHER";
+ break;
+ }
+
return os << base::UTF16ToUTF8(field.label) << " "
<< base::UTF16ToUTF8(field.name) << " "
<< base::UTF16ToUTF8(field.value) << " " << field.form_control_type
<< " " << field.autocomplete_attribute << " " << field.placeholder
<< " " << field.max_length << " "
<< (field.is_autofilled ? "true" : "false") << " "
- << (field.is_checked ? "true" : "false") << " "
- << (field.is_checkable ? "true" : "false") << " "
+ << checkStatusStr
<< (field.is_focusable ? "true" : "false") << " "
<< (field.should_autocomplete ? "true" : "false") << " "
- << field.role << " " << field.text_direction;
+ << roleStr << " " << field.text_direction;
+}
+
+bool IsCheckable(const FormFieldData::CheckStatus& check_status){
+ return check_status == FormFieldData::CheckStatus::NOT_CHECKABLE
vabr (Chromium) 2016/06/06 12:39:30 No need for the ternary operator: X == Y ? false :
+ ? false : true;
+}
+
+bool IsChecked(const FormFieldData::CheckStatus& check_status){
+ return check_status == FormFieldData::CheckStatus::CHECKED ? false : true;
vabr (Chromium) 2016/06/06 12:39:30 This returns the opposite of what it should return
+}
+
+void SetCheckStatus(FormFieldData* form_field_data, bool isCheckable,
+ bool isChecked){
+ if(isChecked == true){
vabr (Chromium) 2016/06/06 12:39:30 nit: Formatting is off, please make sure to run gi
vabr (Chromium) 2016/06/06 12:39:30 Drop " == true" (also below).
+ form_field_data->check_status = FormFieldData::CheckStatus::CHECKED;
+ }else{
+ if(isCheckable == true){
+ form_field_data->check_status =
+ FormFieldData::CheckStatus::CHECKABLE_BUT_UNCHECKED;
+ }else{
+ form_field_data->check_status = FormFieldData::CheckStatus::NOT_CHECKABLE;
+ }
+ }
}
} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698