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;
}
}
}
|