1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_AUTOFILL_IOS_FORM_UTIL_FORM_ACTIVITY_PARAMS_H_
#define COMPONENTS_AUTOFILL_IOS_FORM_UTIL_FORM_ACTIVITY_PARAMS_H_
#import <set>
#import <string>
#import "base/values.h"
#import "components/autofill/core/common/unique_ids.h"
namespace web {
class ScriptMessage;
} // namespace web
namespace autofill {
// HTML password field type. The "password" field type does not explicitly mean
// that the field contains a password, it means that the field obfuscates its
// information instead of showing it plainly.
constexpr char kObfuscatedFieldType[] = "password";
// Wraps information about form activity.
struct BaseFormActivityParams {
BaseFormActivityParams();
BaseFormActivityParams(const BaseFormActivityParams& other);
virtual ~BaseFormActivityParams();
// Comparison operator for the BaseFormActivityParams structure.
bool operator==(const BaseFormActivityParams&) const;
// Reads data from a message into a BaseFormActivityParams object.
// Returns whether reading the information from the message was successful.
//
// It is expected that the input message contains the fields:
// "frameID": ID of the associated WebFrame object (maps to frame_id)
static bool FromMessage(const web::ScriptMessage& message,
const base::Value::Dict** message_body,
BaseFormActivityParams* params);
std::string frame_id;
// |is_main_frame| is true when the activity was registered in the main frame.
bool is_main_frame = false;
};
std::ostream& operator<<(std::ostream& buffer,
const BaseFormActivityParams& form);
// Wraps information about event happening on an input field.
// Example HTML
// <form name="np" id="np1" action="https://example.com/" method="post">
// <input type="text" name="name" id="password_name"><br>
// <input type="password" name="password" id="password_field"><br>
// <input type="reset" value="Reset">
// <input type="submit" value="Submit" id="password_submit">
// </form>
// A tap on the password field will produce
// form_name: "np"
// field_identifier: "password_field"
// field_renderer_id: will be the numeric ID generated for the field
// field_type: "password"
// type: "focus"
// value: "LouisLane" (assuming that was the password typed)
// has_user_gesture: true
// input_missing: false
struct FormActivityParams : public BaseFormActivityParams {
FormActivityParams();
FormActivityParams(const FormActivityParams& other);
~FormActivityParams() override;
// Comparison operator for FormActivityParams structure. Includes
// BaseFormActivityParams structure comparison.
bool operator==(const FormActivityParams& params) const;
// Reads data from a message into a FormActivityParams object.
// Returns whether reading the information from the message was successful.
//
// It is expected that the input message contains the fields:
// "formName": name of the current form (maps to form_name)
// "formRendererID": id of the current form (maps to form_renderer_id)
// "fieldIdentifier" : name of the current field (maps to field_identifier)
// "field_renderer_id" : id of the current field (maps to field_renderer_id)
// "fieldType" : type of the field (maps to field_type)
// "type" : type of the event (maps to type)
// "value" : value of the field (maps to value)
// "hasUserGesture": whether the event is trusted (maps to has_user_gesture)
// + all fields mentioned for BaseFormActivityParams::FromMessage() above.
static bool FromMessage(const web::ScriptMessage& message,
FormActivityParams* params);
std::string form_name;
FormRendererId form_renderer_id;
// Generated by __gCrWeb.form.getFieldIdentifier in form.ts.
std::string field_identifier;
// Generated by __gCrWeb.fill.getUniqueID in fill.ts.
FieldRendererId field_renderer_id;
std::string field_type;
std::string value;
std::string type;
// |input_missing| is set to true if at least one of the members above isn't
// set.
bool input_missing = false;
// |has_user_gesture| is true when the activity was registered as a result of
// a user action, and not by an event created and dispatched by JavaScript.
bool has_user_gesture = false;
};
std::ostream& operator<<(std::ostream& buffer, const FormActivityParams& form);
// Wraps information about the form removal.
struct FormRemovalParams : public BaseFormActivityParams {
FormRemovalParams();
FormRemovalParams(const FormRemovalParams& other);
~FormRemovalParams() override;
// Renderer ids of removed forms;
std::set<FormRendererId> removed_forms;
// Renderer ids of removed unowned fields.
std::set<FieldRendererId> removed_unowned_fields;
static bool FromMessage(const web::ScriptMessage& message,
FormRemovalParams* params);
};
} // namespace autofill
#endif // COMPONENTS_AUTOFILL_IOS_FORM_UTIL_FORM_ACTIVITY_PARAMS_H_
|