File: password_change_submission.proto

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (221 lines) | stat: -rw-r--r-- 7,347 bytes parent folder | download | duplicates (5)
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

edition = "2023";

package optimization_guide.proto;

import "components/optimization_guide/proto/features/common_quality_data.proto";

import "components/optimization_guide/proto/model_quality_metadata.proto";

option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.optimization_guide.features.proto";

option java_outer_classname = "PasswordChangeSubmissionProto";

// DO NOT EDIT THIS FILE DIRECTLY!
//
// This file is generated in g3 and then synced to Chrome. Instead, please refer to
// http://go/chrome-mqls-onboarding (Google-internal link), and then changes will
// be synced with Chrome automatically.

message PasswordChangeSubmissionLoggingData {
  PasswordChangeRequest request = 1 [features = { field_presence: EXPLICIT }];

  PasswordChangeResponse response = 2 [features = { field_presence: EXPLICIT }];

  ModelExecutionInfo model_execution_info = 3 [features = { field_presence: EXPLICIT }];

  PasswordChangeQuality quality = 4 [features = { field_presence: EXPLICIT }];
}

message PasswordChangeRequest {
  // The context of the page that the form is on.
  PageContext page_context = 1 [features = { field_presence: EXPLICIT }];

  // Step in which the APC flow is at. If this is not set, it is considered as
  // VERIFY_SUBMISSION_STEP to be backward compatible with older clients.
  FlowStep step = 2 [
    default = VERIFY_SUBMISSION_STEP,
    features = { field_presence: EXPLICIT }
  ];

  enum FlowStep {
    UNSPECIFIED_STEP = 0;

    // Before password change, use IDs [1...10]
    // Chrome wants to know if it is an actionable page and what needs to be
    // clicked to open the change password form.
    OPEN_FORM_STEP = 1;

    // Password change, use IDs [11...20]
    // Find ID of element to be clicked to submit the change password form.
    SUBMIT_FORM_STEP = 11;

    // After password change, use IDs [21...30]
    // After the form was submitted, identify if it was a successful submission
    // or not.
    VERIFY_SUBMISSION_STEP = 21;
  }
}

message PasswordChangeResponse {
  // The outcome of the form submission (Step=VERIFY_SUBMISSION_STEP).
  PasswordChangeSubmissionData outcome_data = 1 [features = { field_presence: EXPLICIT }];

  // The data of attempting to identify what to click to open a change password
  // form (Step=OPEN_FORM_STEP).
  OpenFormResponseData open_form_data = 3 [features = { field_presence: EXPLICIT }];

  // The data on attempting to identify what to click to submit the
  // change password form (Step=SUBMIT_FORM_STEP).
  SubmitFormResponseData submit_form_data = 4 [features = { field_presence: EXPLICIT }];

  // Deprecated, response is in outcome_data.
  string model_output = 2 [
    deprecated = true,
    features = { field_presence: EXPLICIT }
  ];
}

message PasswordChangeSubmissionData {
  // The outcome of the password change submission.
  PasswordChangeOutcome submission_outcome = 1 [features = { field_presence: EXPLICIT }];

  // If the submission_outcome was UNSUCCESSFUL_OUTCOME, fill this with the
  // type.
  repeated PasswordChangeErrorCase error_case = 2;

  // Value of the message that made the model come up with the outcome and error
  // case.
  string submission_outcome_message = 3 [features = { field_presence: EXPLICIT }];

  enum PasswordChangeOutcome {
    UNKNOWN_OUTCOME = 0;

    SUCCESSFUL_OUTCOME = 1;

    UNSUCCESSFUL_OUTCOME = 2;
  }

  enum PasswordChangeErrorCase {
    UNKNOWN_CASE = 0;

    // Old password filled was incorrect.
    OLD_PASSWORD_INCORRECT = 1;

    // New and confirm new passwords don't match.
    PASSWORDS_DO_NOT_MATCH = 2;

    // New password doesn't match site requirements.
    NEW_PASSWORD_INCORRECT = 3;

    // There is another type of error in the page.
    PAGE_ERROR = 4;
  }
}

message OpenFormResponseData {
  // Optional: Only filled if the page is SETTINGS_PAGE
  // The DOM node ID of the element to click to open the change pasword form.
  int32 dom_node_id_to_click = 1 [features = { field_presence: EXPLICIT }];

  // The type of page encountered after the navigation to the Change password
  // URL.
  PageType page_type = 2 [features = { field_presence: EXPLICIT }];

  enum PageType {
    // Not an actionable page to continue the flow on.
    UNSPECIFIED_PAGE = 0;

    // The landed page is a Settings Page and an extra click
    // is needed in order to reach the change password form.
    SETTINGS_PAGE = 1;

    // The landed page is a Change Password form already.
    CHANGE_PASSWORD_FORM_PAGE = 2;

    // The landed page is a Login page.
    LOG_IN_PAGE = 3;
  }
}

message SubmitFormResponseData {
  // The DOM node ID of the element to click.
  int32 dom_node_id_to_click = 1 [features = { field_presence: EXPLICIT }];
}

// Any data collected on the client outside of the model request and response.
// This includes user feedback, and metrics about feature usage.
message PasswordChangeQuality {
  // The model final status for cataloging a Successful Password Change
  // Submission.
  FinalModelStatus final_model_status = 1 [features = { field_presence: EXPLICIT }];

  // Deprecated, this is logged per step.
  int64 request_latency_ms = 2 [
    deprecated = true,
    features = { field_presence: EXPLICIT }
  ];

  // Quality data on step for opening the change password form (this step may be
  // skipped on some sites).
  StepQuality open_form = 3 [features = { field_presence: EXPLICIT }];

  // Quality data on step for submitting a change password form.
  StepQuality submit_form = 4 [features = { field_presence: EXPLICIT }];

  // Quality data on step for verifying form submission.
  StepQuality verify_submission = 5 [features = { field_presence: EXPLICIT }];

  // Domain of the page.
  string domain = 6 [features = { field_presence: EXPLICIT }];

  // Location of user
  string location = 7 [features = { field_presence: EXPLICIT }];

  // Language of the page.
  string language = 8 [features = { field_presence: EXPLICIT }];

  // Whether this is a retry flow or not.
  bool is_retry = 9 [features = { field_presence: EXPLICIT }];

  message StepQuality {
    // The status of the step.
    SubmissionStatus status = 1 [
      default = UNKNOWN_STATUS,
      features = { field_presence: EXPLICIT }
    ];

    // Time it took for server to respond to the step.
    int64 request_latency_ms = 2 [features = { field_presence: EXPLICIT }];

    enum SubmissionStatus {
      // Response is empty or unparsable.
      UNKNOWN_STATUS = 0;

      // Not actionable, could not find element to click.
      ELEMENT_NOT_FOUND = 1;

      // Actionable element found and clicked.
      ACTION_SUCCESS = 2;

      // Form was not seen after clicking on the element given by LLM.
      FORM_NOT_FOUND = 3;

      // Previous step failed and took the flow to an unexpected state. E.g. the
      // input that was given to LLM to instruct on what to click was incorrect.
      UNEXPECTED_STATE = 4;

      // Flow was interrupted. This can happen in case of OTP/user closed the
      // tacrbug.com/user canceled the flow.
      FLOW_INTERRUPTED = 5;

      // Flow failure by LLM response (e.g. Verify Submission fails with
      // UNSUCCESSFUL).
      FAILURE_STATUS = 6;
    }
  }
}