/// <summary>
 /// Adds a filledAutofillField to the collection, indexed by all of its hints.
 /// </summary>
 /// <returns>The add.</returns>
 /// <param name="filledAutofillField">Filled autofill field.</param>
 public void Add(FilledAutofillField filledAutofillField)
 {
     string[] autofillHints = filledAutofillField.AutofillHints;
     foreach (string hint in autofillHints)
     {
         HintMap.Add(hint, filledAutofillField);
     }
 }
Пример #2
0
        public override bool Equals(object obj)
        {
            if (this == obj)
            {
                return(true);
            }
            if (obj == null || GetType() != obj.GetType())
            {
                return(false);
            }

            FilledAutofillField that = (FilledAutofillField)obj;

            if (TextValue != null ? !TextValue.Equals(that.TextValue) : that.TextValue != null)
            {
                return(false);
            }
            if (DateValue != null ? !DateValue.Equals(that.DateValue) : that.DateValue != null)
            {
                return(false);
            }
            return(ToggleValue != null?ToggleValue.Equals(that.ToggleValue) : that.ToggleValue == null);
        }
        /// <summary>
        /// Populates a Dataset.Builder with appropriate values for each AutofillId
        /// in a AutofillFieldMetadataCollection.
        ///
        /// In other words, it constructs an autofill Dataset.Builder
        /// by applying saved values (from this FilledAutofillFieldCollection)
        /// to Views specified in a AutofillFieldMetadataCollection, which represents the current
        /// page the user is on.
        /// </summary>
        /// <returns><c>true</c>, if to fields was applyed, <c>false</c> otherwise.</returns>
        /// <param name="autofillFieldMetadataCollection">Autofill field metadata collection.</param>
        /// <param name="datasetBuilder">Dataset builder.</param>
        public bool ApplyToFields(AutofillFieldMetadataCollection autofillFieldMetadataCollection,
                                  Dataset.Builder datasetBuilder)
        {
            bool          setValueAtLeastOnce = false;
            List <string> allHints            = autofillFieldMetadataCollection.AllAutofillHints;

            for (int hintIndex = 0; hintIndex < allHints.Count; hintIndex++)
            {
                string hint = allHints[hintIndex];
                List <AutofillFieldMetadata> fillableAutofillFields = autofillFieldMetadataCollection.GetFieldsForHint(hint);
                if (fillableAutofillFields == null)
                {
                    continue;
                }
                for (int autofillFieldIndex = 0; autofillFieldIndex < fillableAutofillFields.Count; autofillFieldIndex++)
                {
                    FilledAutofillField filledAutofillField = HintMap[hint];
                    if (filledAutofillField == null)
                    {
                        continue;
                    }
                    AutofillFieldMetadata autofillFieldMetadata = fillableAutofillFields[autofillFieldIndex];
                    var autofillId   = autofillFieldMetadata.AutofillId;
                    var autofillType = autofillFieldMetadata.AutofillType;
                    switch (autofillType)
                    {
                    case AutofillType.List:
                        var listValue = autofillFieldMetadata.GetAutofillOptionIndex(filledAutofillField.TextValue);
                        if (listValue != -1)
                        {
                            datasetBuilder.SetValue(autofillId, AutofillValue.ForList(listValue));
                            setValueAtLeastOnce = true;
                        }
                        break;

                    case AutofillType.Date:
                        var dateValue = filledAutofillField.DateValue;
                        datasetBuilder.SetValue(autofillId, AutofillValue.ForDate((long)dateValue));
                        setValueAtLeastOnce = true;
                        break;

                    case AutofillType.Text:
                        var textValue = filledAutofillField.TextValue;
                        if (textValue != null)
                        {
                            datasetBuilder.SetValue(autofillId, AutofillValue.ForText(textValue));
                            setValueAtLeastOnce = true;
                        }
                        break;

                    case AutofillType.Toggle:
                        var toggleValue = filledAutofillField.ToggleValue;
                        if (toggleValue != null)
                        {
                            datasetBuilder.SetValue(autofillId, AutofillValue.ForToggle(toggleValue.Value));
                            setValueAtLeastOnce = true;
                        }
                        break;

                    default:
                        Log.Warn(CommonUtil.Tag, "Invalid autofill type - " + autofillType);
                        break;
                    }
                }
            }
            return(setValueAtLeastOnce);
        }