File: form_activity_params.h

package info (click to toggle)
chromium 138.0.7204.183-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 6,080,960 kB
  • sloc: cpp: 34,937,079; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,954; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,811; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (131 lines) | stat: -rw-r--r-- 5,092 bytes parent folder | download | duplicates (4)
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_