1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.service.autofill; 18 19 import android.annotation.IntDef; 20 import android.annotation.NonNull; 21 import android.annotation.Nullable; 22 import android.content.IntentSender; 23 import android.os.Bundle; 24 import android.os.Parcel; 25 import android.os.Parcelable; 26 import android.view.View; 27 import android.view.inputmethod.InlineSuggestionsRequest; 28 29 import com.android.internal.util.DataClass; 30 import com.android.internal.util.Preconditions; 31 32 import java.lang.annotation.Retention; 33 import java.lang.annotation.RetentionPolicy; 34 import java.util.ArrayList; 35 import java.util.List; 36 37 /** 38 * This class represents a request to an autofill service 39 * to interpret the screen and provide information to the system which views are 40 * interesting for saving and what are the possible ways to fill the inputs on 41 * the screen if applicable. 42 * 43 * @see AutofillService#onFillRequest(FillRequest, android.os.CancellationSignal, FillCallback) 44 */ 45 @DataClass( 46 genToString = true, 47 genHiddenConstructor = true, 48 genHiddenConstDefs = true) 49 public final class FillRequest implements Parcelable { 50 51 /** 52 * Indicates autofill was explicitly requested by the user. 53 * 54 * <p>Users typically make an explicit request to autofill a screen in two situations: 55 * <ul> 56 * <li>The app disabled autofill (using {@link View#setImportantForAutofill(int)}. 57 * <li>The service could not figure out how to autofill a screen (but the user knows the 58 * service has data for that app). 59 * </ul> 60 * 61 * <p>This flag is particularly useful for the second case. For example, the service could offer 62 * a complex UI where the user can map which screen views belong to each user data, or it could 63 * offer a simpler UI where the user picks the data for just the view used to trigger the 64 * request (that would be the view whose 65 * {@link android.app.assist.AssistStructure.ViewNode#isFocused()} method returns {@code true}). 66 * 67 * <p>An explicit autofill request is triggered when the 68 * {@link android.view.autofill.AutofillManager#requestAutofill(View)} or 69 * {@link android.view.autofill.AutofillManager#requestAutofill(View, int, android.graphics.Rect)} 70 * is called. For example, standard {@link android.widget.TextView} views show an 71 * {@code AUTOFILL} option in the overflow menu that triggers such request. 72 */ 73 public static final @RequestFlags int FLAG_MANUAL_REQUEST = 0x1; 74 75 /** 76 * Indicates this request was made using 77 * <a href="AutofillService.html#CompatibilityMode">compatibility mode</a>. 78 */ 79 public static final @RequestFlags int FLAG_COMPATIBILITY_MODE_REQUEST = 0x2; 80 81 /** 82 * Indicates the request came from a password field. 83 * 84 * (TODO: b/141703197) Temporary fix for augmented autofill showing passwords. 85 * 86 * @hide 87 */ 88 public static final @RequestFlags int FLAG_PASSWORD_INPUT_TYPE = 0x4; 89 90 /** 91 * Indicates the view was not focused. 92 * 93 * <p><b>Note:</b> Defines the flag value to 0x10, because the flag value 0x08 has been defined 94 * in {@link AutofillManager}.</p> 95 * 96 * @hide 97 */ 98 public static final @RequestFlags int FLAG_VIEW_NOT_FOCUSED = 0x10; 99 100 /** 101 * Indicates the request supports fill dialog presentation for the fields, the 102 * system will send the request when the activity just started. 103 */ 104 public static final @RequestFlags int FLAG_SUPPORTS_FILL_DIALOG = 0x40; 105 106 /** 107 * Indicates the ime is showing while request coming. 108 * @hide 109 */ 110 public static final @RequestFlags int FLAG_IME_SHOWING = 0x80; 111 112 /** 113 * Indicates whether autofill session should reset the fill dialog state. 114 * @hide 115 */ 116 public static final @RequestFlags int FLAG_RESET_FILL_DIALOG_STATE = 0x100; 117 118 /** 119 * Indicate the fill request is made for PCC detection 120 * @hide 121 */ 122 public static final @RequestFlags int FLAG_PCC_DETECTION = 0x200; 123 124 /** 125 * Indicate whether the screen has credman field 126 * @hide 127 */ 128 public static final @RequestFlags int FLAG_SCREEN_HAS_CREDMAN_FIELD = 0x400; 129 130 /** @hide */ 131 public static final int INVALID_REQUEST_ID = Integer.MIN_VALUE; 132 133 /** 134 * Gets the unique id of this request. 135 */ 136 private final int mId; 137 138 /** 139 * Gets the contexts associated with each previous fill request. 140 * 141 * <p><b>Note:</b> Starting on Android {@link android.os.Build.VERSION_CODES#Q}, it could also 142 * include contexts from requests whose {@link SaveInfo} had the 143 * {@link SaveInfo#FLAG_DELAY_SAVE} flag. 144 */ 145 private final @NonNull List<FillContext> mFillContexts; 146 147 /** 148 * Sends a list of datatypes for the Autofill Provider. 149 * 150 * If this is populated, Autofill Provider should return data 151 * for the autofill hints requested here, 152 * even though the Autofill Provider may not have detected these types. 153 * The hints would be part of HintConstants: 154 * https://developer.android.com/reference/androidx/autofill/HintConstants 155 * 156 * This is populated if the platform's field detection is enabled. 157 */ 158 private final @NonNull List<String> mHints; 159 160 /** 161 * Gets the latest client state bundle set by the service in a 162 * {@link FillResponse.Builder#setClientState(Bundle) fill response}. 163 * 164 * <p><b>Note:</b> Prior to Android {@link android.os.Build.VERSION_CODES#P}, only client state 165 * bundles set by {@link FillResponse.Builder#setClientState(Bundle)} were considered. On 166 * Android {@link android.os.Build.VERSION_CODES#P} and higher, bundles set in the result of 167 * an authenticated request through the 168 * {@link android.view.autofill.AutofillManager#EXTRA_CLIENT_STATE} extra are 169 * also considered (and take precedence when set). 170 * 171 * @return The client state. 172 */ 173 private final @Nullable Bundle mClientState; 174 175 /** 176 * Gets the flags associated with this request. 177 * 178 * @return any combination of {@link #FLAG_MANUAL_REQUEST}, 179 * {@link #FLAG_SUPPORTS_FILL_DIALOG} and 180 * {@link #FLAG_COMPATIBILITY_MODE_REQUEST}. 181 * 182 */ 183 private final @RequestFlags int mFlags; 184 185 /** 186 * Gets the {@link InlineSuggestionsRequest} associated 187 * with this request. 188 * 189 * <p>Autofill Framework will send a {@code @non-null} {@link InlineSuggestionsRequest} if 190 * currently inline suggestions are supported and can be displayed. If the Autofill service 191 * wants to show inline suggestions, they may return {@link Dataset} with valid 192 * {@link InlinePresentation}.</p> 193 * 194 * <p>The Autofill Service must set supportsInlineSuggestions in its XML to enable support 195 * for inline suggestions.</p> 196 * 197 * @return the suggestionspec 198 */ 199 private final @Nullable InlineSuggestionsRequest mInlineSuggestionsRequest; 200 201 /** 202 * Gets the {@link IntentSender} to send a delayed fill response. 203 * 204 * <p>The autofill service must first indicate that it wants to return a delayed 205 * {@link FillResponse} by setting {@link FillResponse#FLAG_DELAY_FILL} in a successful 206 * fill response. Then it can use this IntentSender to send an Intent with extra 207 * {@link AutofillService#EXTRA_FILL_RESPONSE} with the delayed response.</p> 208 * 209 * <p>Note that this may be null if a delayed fill response is not supported for 210 * this fill request.</p> 211 */ 212 private final @Nullable IntentSender mDelayedFillIntentSender; 213 onConstructed()214 private void onConstructed() { 215 Preconditions.checkCollectionElementsNotNull(mFillContexts, "contexts"); 216 Preconditions.checkCollectionElementsNotNull(mHints, "hints"); 217 } 218 219 220 221 // Code below generated by codegen v1.0.23. 222 // 223 // DO NOT MODIFY! 224 // CHECKSTYLE:OFF Generated code 225 // 226 // To regenerate run: 227 // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/service/autofill/FillRequest.java 228 // 229 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 230 // Settings > Editor > Code Style > Formatter Control 231 //@formatter:off 232 233 234 /** @hide */ 235 @IntDef(flag = true, prefix = "FLAG_", value = { 236 FLAG_MANUAL_REQUEST, 237 FLAG_COMPATIBILITY_MODE_REQUEST, 238 FLAG_PASSWORD_INPUT_TYPE, 239 FLAG_VIEW_NOT_FOCUSED, 240 FLAG_SUPPORTS_FILL_DIALOG, 241 FLAG_IME_SHOWING, 242 FLAG_RESET_FILL_DIALOG_STATE, 243 FLAG_PCC_DETECTION, 244 FLAG_SCREEN_HAS_CREDMAN_FIELD 245 }) 246 @Retention(RetentionPolicy.SOURCE) 247 @DataClass.Generated.Member 248 public @interface RequestFlags {} 249 250 /** @hide */ 251 @DataClass.Generated.Member requestFlagsToString(@equestFlags int value)252 public static String requestFlagsToString(@RequestFlags int value) { 253 return com.android.internal.util.BitUtils.flagsToString( 254 value, FillRequest::singleRequestFlagsToString); 255 } 256 257 @DataClass.Generated.Member singleRequestFlagsToString(@equestFlags int value)258 static String singleRequestFlagsToString(@RequestFlags int value) { 259 switch (value) { 260 case FLAG_MANUAL_REQUEST: 261 return "FLAG_MANUAL_REQUEST"; 262 case FLAG_COMPATIBILITY_MODE_REQUEST: 263 return "FLAG_COMPATIBILITY_MODE_REQUEST"; 264 case FLAG_PASSWORD_INPUT_TYPE: 265 return "FLAG_PASSWORD_INPUT_TYPE"; 266 case FLAG_VIEW_NOT_FOCUSED: 267 return "FLAG_VIEW_NOT_FOCUSED"; 268 case FLAG_SUPPORTS_FILL_DIALOG: 269 return "FLAG_SUPPORTS_FILL_DIALOG"; 270 case FLAG_IME_SHOWING: 271 return "FLAG_IME_SHOWING"; 272 case FLAG_RESET_FILL_DIALOG_STATE: 273 return "FLAG_RESET_FILL_DIALOG_STATE"; 274 case FLAG_PCC_DETECTION: 275 return "FLAG_PCC_DETECTION"; 276 case FLAG_SCREEN_HAS_CREDMAN_FIELD: 277 return "FLAG_SCREEN_HAS_CREDMAN_FIELD"; 278 default: return Integer.toHexString(value); 279 } 280 } 281 282 /** 283 * Creates a new FillRequest. 284 * 285 * @param id 286 * Gets the unique id of this request. 287 * @param fillContexts 288 * Gets the contexts associated with each previous fill request. 289 * 290 * <p><b>Note:</b> Starting on Android {@link android.os.Build.VERSION_CODES#Q}, it could also 291 * include contexts from requests whose {@link SaveInfo} had the 292 * {@link SaveInfo#FLAG_DELAY_SAVE} flag. 293 * @param hints 294 * Sends a list of datatypes for the Autofill Provider. 295 * 296 * If this is populated, Autofill Provider should return data 297 * for the autofill hints requested here, 298 * even though the Autofill Provider may not have detected these types. 299 * The hints would be part of HintConstants: 300 * https://developer.android.com/reference/androidx/autofill/HintConstants 301 * 302 * This is populated if the platform's field detection is enabled. 303 * @param clientState 304 * Gets the latest client state bundle set by the service in a 305 * {@link FillResponse.Builder#setClientState(Bundle) fill response}. 306 * 307 * <p><b>Note:</b> Prior to Android {@link android.os.Build.VERSION_CODES#P}, only client state 308 * bundles set by {@link FillResponse.Builder#setClientState(Bundle)} were considered. On 309 * Android {@link android.os.Build.VERSION_CODES#P} and higher, bundles set in the result of 310 * an authenticated request through the 311 * {@link android.view.autofill.AutofillManager#EXTRA_CLIENT_STATE} extra are 312 * also considered (and take precedence when set). 313 * @param flags 314 * Gets the flags associated with this request. 315 * 316 * @return any combination of {@link #FLAG_MANUAL_REQUEST}, 317 * {@link #FLAG_SUPPORTS_FILL_DIALOG} and 318 * {@link #FLAG_COMPATIBILITY_MODE_REQUEST}. 319 * @param inlineSuggestionsRequest 320 * Gets the {@link InlineSuggestionsRequest} associated 321 * with this request. 322 * 323 * <p>Autofill Framework will send a {@code @non-null} {@link InlineSuggestionsRequest} if 324 * currently inline suggestions are supported and can be displayed. If the Autofill service 325 * wants to show inline suggestions, they may return {@link Dataset} with valid 326 * {@link InlinePresentation}.</p> 327 * 328 * <p>The Autofill Service must set supportsInlineSuggestions in its XML to enable support 329 * for inline suggestions.</p> 330 * @param delayedFillIntentSender 331 * Gets the {@link IntentSender} to send a delayed fill response. 332 * 333 * <p>The autofill service must first indicate that it wants to return a delayed 334 * {@link FillResponse} by setting {@link FillResponse#FLAG_DELAY_FILL} in a successful 335 * fill response. Then it can use this IntentSender to send an Intent with extra 336 * {@link AutofillService#EXTRA_FILL_RESPONSE} with the delayed response.</p> 337 * 338 * <p>Note that this may be null if a delayed fill response is not supported for 339 * this fill request.</p> 340 * @hide 341 */ 342 @DataClass.Generated.Member FillRequest( int id, @NonNull List<FillContext> fillContexts, @NonNull List<String> hints, @Nullable Bundle clientState, @RequestFlags int flags, @Nullable InlineSuggestionsRequest inlineSuggestionsRequest, @Nullable IntentSender delayedFillIntentSender)343 public FillRequest( 344 int id, 345 @NonNull List<FillContext> fillContexts, 346 @NonNull List<String> hints, 347 @Nullable Bundle clientState, 348 @RequestFlags int flags, 349 @Nullable InlineSuggestionsRequest inlineSuggestionsRequest, 350 @Nullable IntentSender delayedFillIntentSender) { 351 this.mId = id; 352 this.mFillContexts = fillContexts; 353 com.android.internal.util.AnnotationValidations.validate( 354 NonNull.class, null, mFillContexts); 355 this.mHints = hints; 356 com.android.internal.util.AnnotationValidations.validate( 357 NonNull.class, null, mHints); 358 this.mClientState = clientState; 359 this.mFlags = flags; 360 361 Preconditions.checkFlagsArgument( 362 mFlags, 363 FLAG_MANUAL_REQUEST 364 | FLAG_COMPATIBILITY_MODE_REQUEST 365 | FLAG_PASSWORD_INPUT_TYPE 366 | FLAG_VIEW_NOT_FOCUSED 367 | FLAG_SUPPORTS_FILL_DIALOG 368 | FLAG_IME_SHOWING 369 | FLAG_RESET_FILL_DIALOG_STATE 370 | FLAG_PCC_DETECTION 371 | FLAG_SCREEN_HAS_CREDMAN_FIELD); 372 this.mInlineSuggestionsRequest = inlineSuggestionsRequest; 373 this.mDelayedFillIntentSender = delayedFillIntentSender; 374 375 onConstructed(); 376 } 377 378 /** 379 * Gets the unique id of this request. 380 */ 381 @DataClass.Generated.Member getId()382 public int getId() { 383 return mId; 384 } 385 386 /** 387 * Gets the contexts associated with each previous fill request. 388 * 389 * <p><b>Note:</b> Starting on Android {@link android.os.Build.VERSION_CODES#Q}, it could also 390 * include contexts from requests whose {@link SaveInfo} had the 391 * {@link SaveInfo#FLAG_DELAY_SAVE} flag. 392 */ 393 @DataClass.Generated.Member getFillContexts()394 public @NonNull List<FillContext> getFillContexts() { 395 return mFillContexts; 396 } 397 398 /** 399 * Sends a list of datatypes for the Autofill Provider. 400 * 401 * If this is populated, Autofill Provider should return data 402 * for the autofill hints requested here, 403 * even though the Autofill Provider may not have detected these types. 404 * The hints would be part of HintConstants: 405 * https://developer.android.com/reference/androidx/autofill/HintConstants 406 * 407 * This is populated if the platform's field detection is enabled. 408 */ 409 @DataClass.Generated.Member getHints()410 public @NonNull List<String> getHints() { 411 return mHints; 412 } 413 414 /** 415 * Gets the latest client state bundle set by the service in a 416 * {@link FillResponse.Builder#setClientState(Bundle) fill response}. 417 * 418 * <p><b>Note:</b> Prior to Android {@link android.os.Build.VERSION_CODES#P}, only client state 419 * bundles set by {@link FillResponse.Builder#setClientState(Bundle)} were considered. On 420 * Android {@link android.os.Build.VERSION_CODES#P} and higher, bundles set in the result of 421 * an authenticated request through the 422 * {@link android.view.autofill.AutofillManager#EXTRA_CLIENT_STATE} extra are 423 * also considered (and take precedence when set). 424 * 425 * @return The client state. 426 */ 427 @DataClass.Generated.Member getClientState()428 public @Nullable Bundle getClientState() { 429 return mClientState; 430 } 431 432 /** 433 * Gets the flags associated with this request. 434 * 435 * @return any combination of {@link #FLAG_MANUAL_REQUEST}, 436 * {@link #FLAG_SUPPORTS_FILL_DIALOG} and 437 * {@link #FLAG_COMPATIBILITY_MODE_REQUEST}. 438 */ 439 @DataClass.Generated.Member getFlags()440 public @RequestFlags int getFlags() { 441 return mFlags; 442 } 443 444 /** 445 * Gets the {@link InlineSuggestionsRequest} associated 446 * with this request. 447 * 448 * <p>Autofill Framework will send a {@code @non-null} {@link InlineSuggestionsRequest} if 449 * currently inline suggestions are supported and can be displayed. If the Autofill service 450 * wants to show inline suggestions, they may return {@link Dataset} with valid 451 * {@link InlinePresentation}.</p> 452 * 453 * <p>The Autofill Service must set supportsInlineSuggestions in its XML to enable support 454 * for inline suggestions.</p> 455 * 456 * @return the suggestionspec 457 */ 458 @DataClass.Generated.Member getInlineSuggestionsRequest()459 public @Nullable InlineSuggestionsRequest getInlineSuggestionsRequest() { 460 return mInlineSuggestionsRequest; 461 } 462 463 /** 464 * Gets the {@link IntentSender} to send a delayed fill response. 465 * 466 * <p>The autofill service must first indicate that it wants to return a delayed 467 * {@link FillResponse} by setting {@link FillResponse#FLAG_DELAY_FILL} in a successful 468 * fill response. Then it can use this IntentSender to send an Intent with extra 469 * {@link AutofillService#EXTRA_FILL_RESPONSE} with the delayed response.</p> 470 * 471 * <p>Note that this may be null if a delayed fill response is not supported for 472 * this fill request.</p> 473 */ 474 @DataClass.Generated.Member getDelayedFillIntentSender()475 public @Nullable IntentSender getDelayedFillIntentSender() { 476 return mDelayedFillIntentSender; 477 } 478 479 @Override 480 @DataClass.Generated.Member toString()481 public String toString() { 482 // You can override field toString logic by defining methods like: 483 // String fieldNameToString() { ... } 484 485 return "FillRequest { " + 486 "id = " + mId + ", " + 487 "fillContexts = " + mFillContexts + ", " + 488 "hints = " + mHints + ", " + 489 "clientState = " + mClientState + ", " + 490 "flags = " + requestFlagsToString(mFlags) + ", " + 491 "inlineSuggestionsRequest = " + mInlineSuggestionsRequest + ", " + 492 "delayedFillIntentSender = " + mDelayedFillIntentSender + 493 " }"; 494 } 495 496 @Override 497 @DataClass.Generated.Member writeToParcel(@onNull Parcel dest, int flags)498 public void writeToParcel(@NonNull Parcel dest, int flags) { 499 // You can override field parcelling by defining methods like: 500 // void parcelFieldName(Parcel dest, int flags) { ... } 501 502 byte flg = 0; 503 if (mClientState != null) flg |= 0x8; 504 if (mInlineSuggestionsRequest != null) flg |= 0x20; 505 if (mDelayedFillIntentSender != null) flg |= 0x40; 506 dest.writeByte(flg); 507 dest.writeInt(mId); 508 dest.writeParcelableList(mFillContexts, flags); 509 dest.writeStringList(mHints); 510 if (mClientState != null) dest.writeBundle(mClientState); 511 dest.writeInt(mFlags); 512 if (mInlineSuggestionsRequest != null) dest.writeTypedObject(mInlineSuggestionsRequest, flags); 513 if (mDelayedFillIntentSender != null) dest.writeTypedObject(mDelayedFillIntentSender, flags); 514 } 515 516 @Override 517 @DataClass.Generated.Member describeContents()518 public int describeContents() { return 0; } 519 520 /** @hide */ 521 @SuppressWarnings({"unchecked", "RedundantCast"}) 522 @DataClass.Generated.Member FillRequest(@onNull Parcel in)523 /* package-private */ FillRequest(@NonNull Parcel in) { 524 // You can override field unparcelling by defining methods like: 525 // static FieldType unparcelFieldName(Parcel in) { ... } 526 527 byte flg = in.readByte(); 528 int id = in.readInt(); 529 List<FillContext> fillContexts = new ArrayList<>(); 530 in.readParcelableList(fillContexts, FillContext.class.getClassLoader()); 531 List<String> hints = new ArrayList<>(); 532 in.readStringList(hints); 533 Bundle clientState = (flg & 0x8) == 0 ? null : in.readBundle(); 534 int flags = in.readInt(); 535 InlineSuggestionsRequest inlineSuggestionsRequest = (flg & 0x20) == 0 ? null : (InlineSuggestionsRequest) in.readTypedObject(InlineSuggestionsRequest.CREATOR); 536 IntentSender delayedFillIntentSender = (flg & 0x40) == 0 ? null : (IntentSender) in.readTypedObject(IntentSender.CREATOR); 537 538 this.mId = id; 539 this.mFillContexts = fillContexts; 540 com.android.internal.util.AnnotationValidations.validate( 541 NonNull.class, null, mFillContexts); 542 this.mHints = hints; 543 com.android.internal.util.AnnotationValidations.validate( 544 NonNull.class, null, mHints); 545 this.mClientState = clientState; 546 this.mFlags = flags; 547 548 Preconditions.checkFlagsArgument( 549 mFlags, 550 FLAG_MANUAL_REQUEST 551 | FLAG_COMPATIBILITY_MODE_REQUEST 552 | FLAG_PASSWORD_INPUT_TYPE 553 | FLAG_VIEW_NOT_FOCUSED 554 | FLAG_SUPPORTS_FILL_DIALOG 555 | FLAG_IME_SHOWING 556 | FLAG_RESET_FILL_DIALOG_STATE 557 | FLAG_PCC_DETECTION 558 | FLAG_SCREEN_HAS_CREDMAN_FIELD); 559 this.mInlineSuggestionsRequest = inlineSuggestionsRequest; 560 this.mDelayedFillIntentSender = delayedFillIntentSender; 561 562 onConstructed(); 563 } 564 565 @DataClass.Generated.Member 566 public static final @NonNull Parcelable.Creator<FillRequest> CREATOR 567 = new Parcelable.Creator<FillRequest>() { 568 @Override 569 public FillRequest[] newArray(int size) { 570 return new FillRequest[size]; 571 } 572 573 @Override 574 public FillRequest createFromParcel(@NonNull Parcel in) { 575 return new FillRequest(in); 576 } 577 }; 578 579 @DataClass.Generated( 580 time = 1682097266850L, 581 codegenVersion = "1.0.23", 582 sourceFile = "frameworks/base/core/java/android/service/autofill/FillRequest.java", 583 inputSignatures = "public static final @android.service.autofill.FillRequest.RequestFlags int FLAG_MANUAL_REQUEST\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_COMPATIBILITY_MODE_REQUEST\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_PASSWORD_INPUT_TYPE\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_VIEW_NOT_FOCUSED\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_SUPPORTS_FILL_DIALOG\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_IME_SHOWING\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_RESET_FILL_DIALOG_STATE\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_PCC_DETECTION\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_SCREEN_HAS_CREDMAN_FIELD\npublic static final int INVALID_REQUEST_ID\nprivate final int mId\nprivate final @android.annotation.NonNull java.util.List<android.service.autofill.FillContext> mFillContexts\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mHints\nprivate final @android.annotation.Nullable android.os.Bundle mClientState\nprivate final @android.service.autofill.FillRequest.RequestFlags int mFlags\nprivate final @android.annotation.Nullable android.view.inputmethod.InlineSuggestionsRequest mInlineSuggestionsRequest\nprivate final @android.annotation.Nullable android.content.IntentSender mDelayedFillIntentSender\nprivate void onConstructed()\nclass FillRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genHiddenConstructor=true, genHiddenConstDefs=true)") 584 @Deprecated __metadata()585 private void __metadata() {} 586 587 588 //@formatter:on 589 // End of generated code 590 591 } 592