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 /** 131 * Indicate whether the user has focused on a credman field view. 132 * @hide 133 */ 134 public static final @RequestFlags int FLAG_VIEW_REQUESTS_CREDMAN_SERVICE = 0x800; 135 136 /** @hide */ 137 public static final int INVALID_REQUEST_ID = Integer.MIN_VALUE; 138 139 /** 140 * Gets the unique id of this request. 141 */ 142 private final int mId; 143 144 /** 145 * Gets the contexts associated with each previous fill request. 146 * 147 * <p><b>Note:</b> Starting on Android {@link android.os.Build.VERSION_CODES#Q}, it could also 148 * include contexts from requests whose {@link SaveInfo} had the 149 * {@link SaveInfo#FLAG_DELAY_SAVE} flag. 150 */ 151 private final @NonNull List<FillContext> mFillContexts; 152 153 /** 154 * Sends a list of datatypes for the Autofill Provider. 155 * 156 * If this is populated, Autofill Provider should return data 157 * for the autofill hints requested here, 158 * even though the Autofill Provider may not have detected these types. 159 * The hints would be part of HintConstants: 160 * https://developer.android.com/reference/androidx/autofill/HintConstants 161 * 162 * This is populated if the platform's field detection is enabled. 163 */ 164 private final @NonNull List<String> mHints; 165 166 /** 167 * Gets the latest client state bundle set by the service in a 168 * {@link FillResponse.Builder#setClientState(Bundle) fill response}. 169 * 170 * <p><b>Note:</b> Prior to Android {@link android.os.Build.VERSION_CODES#P}, only client state 171 * bundles set by {@link FillResponse.Builder#setClientState(Bundle)} were considered. On 172 * Android {@link android.os.Build.VERSION_CODES#P} and higher, bundles set in the result of 173 * an authenticated request through the 174 * {@link android.view.autofill.AutofillManager#EXTRA_CLIENT_STATE} extra are 175 * also considered (and take precedence when set). 176 * 177 * @return The client state. 178 */ 179 private final @Nullable Bundle mClientState; 180 181 /** 182 * Gets the flags associated with this request. 183 * 184 * @return any combination of {@link #FLAG_MANUAL_REQUEST}, 185 * {@link #FLAG_SUPPORTS_FILL_DIALOG} and 186 * {@link #FLAG_COMPATIBILITY_MODE_REQUEST}. 187 * 188 */ 189 private final @RequestFlags int mFlags; 190 191 /** 192 * Gets the {@link InlineSuggestionsRequest} associated 193 * with this request. 194 * 195 * <p>Autofill Framework will send a {@code @non-null} {@link InlineSuggestionsRequest} if 196 * currently inline suggestions are supported and can be displayed. If the Autofill service 197 * wants to show inline suggestions, they may return {@link Dataset} with valid 198 * {@link InlinePresentation}.</p> 199 * 200 * <p>The Autofill Service must set supportsInlineSuggestions in its XML to enable support 201 * for inline suggestions.</p> 202 * 203 * @return the suggestionspec 204 */ 205 private final @Nullable InlineSuggestionsRequest mInlineSuggestionsRequest; 206 207 /** 208 * Gets the {@link IntentSender} to send a delayed fill response. 209 * 210 * <p>The autofill service must first indicate that it wants to return a delayed 211 * {@link FillResponse} by setting {@link FillResponse#FLAG_DELAY_FILL} in a successful 212 * fill response. Then it can use this IntentSender to send an Intent with extra 213 * {@link AutofillService#EXTRA_FILL_RESPONSE} with the delayed response.</p> 214 * 215 * <p>Note that this may be null if a delayed fill response is not supported for 216 * this fill request.</p> 217 */ 218 private final @Nullable IntentSender mDelayedFillIntentSender; 219 onConstructed()220 private void onConstructed() { 221 Preconditions.checkCollectionElementsNotNull(mFillContexts, "contexts"); 222 Preconditions.checkCollectionElementsNotNull(mHints, "hints"); 223 } 224 225 226 227 // Code below generated by codegen v1.0.23. 228 // 229 // DO NOT MODIFY! 230 // CHECKSTYLE:OFF Generated code 231 // 232 // To regenerate run: 233 // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/service/autofill/FillRequest.java 234 // 235 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 236 // Settings > Editor > Code Style > Formatter Control 237 //@formatter:off 238 239 240 /** @hide */ 241 @IntDef(flag = true, prefix = "FLAG_", value = { 242 FLAG_MANUAL_REQUEST, 243 FLAG_COMPATIBILITY_MODE_REQUEST, 244 FLAG_PASSWORD_INPUT_TYPE, 245 FLAG_VIEW_NOT_FOCUSED, 246 FLAG_SUPPORTS_FILL_DIALOG, 247 FLAG_IME_SHOWING, 248 FLAG_RESET_FILL_DIALOG_STATE, 249 FLAG_PCC_DETECTION, 250 FLAG_SCREEN_HAS_CREDMAN_FIELD, 251 FLAG_VIEW_REQUESTS_CREDMAN_SERVICE 252 }) 253 @Retention(RetentionPolicy.SOURCE) 254 @DataClass.Generated.Member 255 public @interface RequestFlags {} 256 257 /** @hide */ 258 @DataClass.Generated.Member requestFlagsToString(@equestFlags int value)259 public static String requestFlagsToString(@RequestFlags int value) { 260 return com.android.internal.util.BitUtils.flagsToString( 261 value, FillRequest::singleRequestFlagsToString); 262 } 263 264 @DataClass.Generated.Member singleRequestFlagsToString(@equestFlags int value)265 static String singleRequestFlagsToString(@RequestFlags int value) { 266 switch (value) { 267 case FLAG_MANUAL_REQUEST: 268 return "FLAG_MANUAL_REQUEST"; 269 case FLAG_COMPATIBILITY_MODE_REQUEST: 270 return "FLAG_COMPATIBILITY_MODE_REQUEST"; 271 case FLAG_PASSWORD_INPUT_TYPE: 272 return "FLAG_PASSWORD_INPUT_TYPE"; 273 case FLAG_VIEW_NOT_FOCUSED: 274 return "FLAG_VIEW_NOT_FOCUSED"; 275 case FLAG_SUPPORTS_FILL_DIALOG: 276 return "FLAG_SUPPORTS_FILL_DIALOG"; 277 case FLAG_IME_SHOWING: 278 return "FLAG_IME_SHOWING"; 279 case FLAG_RESET_FILL_DIALOG_STATE: 280 return "FLAG_RESET_FILL_DIALOG_STATE"; 281 case FLAG_PCC_DETECTION: 282 return "FLAG_PCC_DETECTION"; 283 case FLAG_SCREEN_HAS_CREDMAN_FIELD: 284 return "FLAG_SCREEN_HAS_CREDMAN_FIELD"; 285 case FLAG_VIEW_REQUESTS_CREDMAN_SERVICE: 286 return "FLAG_VIEW_REQUESTS_CREDMAN_SERVICE"; 287 default: return Integer.toHexString(value); 288 } 289 } 290 291 /** 292 * Creates a new FillRequest. 293 * 294 * @param id 295 * Gets the unique id of this request. 296 * @param fillContexts 297 * Gets the contexts associated with each previous fill request. 298 * 299 * <p><b>Note:</b> Starting on Android {@link android.os.Build.VERSION_CODES#Q}, it could also 300 * include contexts from requests whose {@link SaveInfo} had the 301 * {@link SaveInfo#FLAG_DELAY_SAVE} flag. 302 * @param hints 303 * Sends a list of datatypes for the Autofill Provider. 304 * 305 * If this is populated, Autofill Provider should return data 306 * for the autofill hints requested here, 307 * even though the Autofill Provider may not have detected these types. 308 * The hints would be part of HintConstants: 309 * https://developer.android.com/reference/androidx/autofill/HintConstants 310 * 311 * This is populated if the platform's field detection is enabled. 312 * @param clientState 313 * Gets the latest client state bundle set by the service in a 314 * {@link FillResponse.Builder#setClientState(Bundle) fill response}. 315 * 316 * <p><b>Note:</b> Prior to Android {@link android.os.Build.VERSION_CODES#P}, only client state 317 * bundles set by {@link FillResponse.Builder#setClientState(Bundle)} were considered. On 318 * Android {@link android.os.Build.VERSION_CODES#P} and higher, bundles set in the result of 319 * an authenticated request through the 320 * {@link android.view.autofill.AutofillManager#EXTRA_CLIENT_STATE} extra are 321 * also considered (and take precedence when set). 322 * @param flags 323 * Gets the flags associated with this request. 324 * 325 * @return any combination of {@link #FLAG_MANUAL_REQUEST}, 326 * {@link #FLAG_SUPPORTS_FILL_DIALOG} and 327 * {@link #FLAG_COMPATIBILITY_MODE_REQUEST}. 328 * @param inlineSuggestionsRequest 329 * Gets the {@link InlineSuggestionsRequest} associated 330 * with this request. 331 * 332 * <p>Autofill Framework will send a {@code @non-null} {@link InlineSuggestionsRequest} if 333 * currently inline suggestions are supported and can be displayed. If the Autofill service 334 * wants to show inline suggestions, they may return {@link Dataset} with valid 335 * {@link InlinePresentation}.</p> 336 * 337 * <p>The Autofill Service must set supportsInlineSuggestions in its XML to enable support 338 * for inline suggestions.</p> 339 * @param delayedFillIntentSender 340 * Gets the {@link IntentSender} to send a delayed fill response. 341 * 342 * <p>The autofill service must first indicate that it wants to return a delayed 343 * {@link FillResponse} by setting {@link FillResponse#FLAG_DELAY_FILL} in a successful 344 * fill response. Then it can use this IntentSender to send an Intent with extra 345 * {@link AutofillService#EXTRA_FILL_RESPONSE} with the delayed response.</p> 346 * 347 * <p>Note that this may be null if a delayed fill response is not supported for 348 * this fill request.</p> 349 * @hide 350 */ 351 @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)352 public FillRequest( 353 int id, 354 @NonNull List<FillContext> fillContexts, 355 @NonNull List<String> hints, 356 @Nullable Bundle clientState, 357 @RequestFlags int flags, 358 @Nullable InlineSuggestionsRequest inlineSuggestionsRequest, 359 @Nullable IntentSender delayedFillIntentSender) { 360 this.mId = id; 361 this.mFillContexts = fillContexts; 362 com.android.internal.util.AnnotationValidations.validate( 363 NonNull.class, null, mFillContexts); 364 this.mHints = hints; 365 com.android.internal.util.AnnotationValidations.validate( 366 NonNull.class, null, mHints); 367 this.mClientState = clientState; 368 this.mFlags = flags; 369 370 Preconditions.checkFlagsArgument( 371 mFlags, 372 FLAG_MANUAL_REQUEST 373 | FLAG_COMPATIBILITY_MODE_REQUEST 374 | FLAG_PASSWORD_INPUT_TYPE 375 | FLAG_VIEW_NOT_FOCUSED 376 | FLAG_SUPPORTS_FILL_DIALOG 377 | FLAG_IME_SHOWING 378 | FLAG_RESET_FILL_DIALOG_STATE 379 | FLAG_PCC_DETECTION 380 | FLAG_SCREEN_HAS_CREDMAN_FIELD 381 | FLAG_VIEW_REQUESTS_CREDMAN_SERVICE); 382 this.mInlineSuggestionsRequest = inlineSuggestionsRequest; 383 this.mDelayedFillIntentSender = delayedFillIntentSender; 384 385 onConstructed(); 386 } 387 388 /** 389 * Gets the unique id of this request. 390 */ 391 @DataClass.Generated.Member getId()392 public int getId() { 393 return mId; 394 } 395 396 /** 397 * Gets the contexts associated with each previous fill request. 398 * 399 * <p><b>Note:</b> Starting on Android {@link android.os.Build.VERSION_CODES#Q}, it could also 400 * include contexts from requests whose {@link SaveInfo} had the 401 * {@link SaveInfo#FLAG_DELAY_SAVE} flag. 402 */ 403 @DataClass.Generated.Member getFillContexts()404 public @NonNull List<FillContext> getFillContexts() { 405 return mFillContexts; 406 } 407 408 /** 409 * Sends a list of datatypes for the Autofill Provider. 410 * 411 * If this is populated, Autofill Provider should return data 412 * for the autofill hints requested here, 413 * even though the Autofill Provider may not have detected these types. 414 * The hints would be part of HintConstants: 415 * https://developer.android.com/reference/androidx/autofill/HintConstants 416 * 417 * This is populated if the platform's field detection is enabled. 418 */ 419 @DataClass.Generated.Member getHints()420 public @NonNull List<String> getHints() { 421 return mHints; 422 } 423 424 /** 425 * Gets the latest client state bundle set by the service in a 426 * {@link FillResponse.Builder#setClientState(Bundle) fill response}. 427 * 428 * <p><b>Note:</b> Prior to Android {@link android.os.Build.VERSION_CODES#P}, only client state 429 * bundles set by {@link FillResponse.Builder#setClientState(Bundle)} were considered. On 430 * Android {@link android.os.Build.VERSION_CODES#P} and higher, bundles set in the result of 431 * an authenticated request through the 432 * {@link android.view.autofill.AutofillManager#EXTRA_CLIENT_STATE} extra are 433 * also considered (and take precedence when set). 434 * 435 * @return The client state. 436 */ 437 @DataClass.Generated.Member getClientState()438 public @Nullable Bundle getClientState() { 439 return mClientState; 440 } 441 442 /** 443 * Gets the flags associated with this request. 444 * 445 * @return any combination of {@link #FLAG_MANUAL_REQUEST}, 446 * {@link #FLAG_SUPPORTS_FILL_DIALOG} and 447 * {@link #FLAG_COMPATIBILITY_MODE_REQUEST}. 448 */ 449 @DataClass.Generated.Member getFlags()450 public @RequestFlags int getFlags() { 451 return mFlags; 452 } 453 454 /** 455 * Gets the {@link InlineSuggestionsRequest} associated 456 * with this request. 457 * 458 * <p>Autofill Framework will send a {@code @non-null} {@link InlineSuggestionsRequest} if 459 * currently inline suggestions are supported and can be displayed. If the Autofill service 460 * wants to show inline suggestions, they may return {@link Dataset} with valid 461 * {@link InlinePresentation}.</p> 462 * 463 * <p>The Autofill Service must set supportsInlineSuggestions in its XML to enable support 464 * for inline suggestions.</p> 465 * 466 * @return the suggestionspec 467 */ 468 @DataClass.Generated.Member getInlineSuggestionsRequest()469 public @Nullable InlineSuggestionsRequest getInlineSuggestionsRequest() { 470 return mInlineSuggestionsRequest; 471 } 472 473 /** 474 * Gets the {@link IntentSender} to send a delayed fill response. 475 * 476 * <p>The autofill service must first indicate that it wants to return a delayed 477 * {@link FillResponse} by setting {@link FillResponse#FLAG_DELAY_FILL} in a successful 478 * fill response. Then it can use this IntentSender to send an Intent with extra 479 * {@link AutofillService#EXTRA_FILL_RESPONSE} with the delayed response.</p> 480 * 481 * <p>Note that this may be null if a delayed fill response is not supported for 482 * this fill request.</p> 483 */ 484 @DataClass.Generated.Member getDelayedFillIntentSender()485 public @Nullable IntentSender getDelayedFillIntentSender() { 486 return mDelayedFillIntentSender; 487 } 488 489 @Override 490 @DataClass.Generated.Member toString()491 public String toString() { 492 // You can override field toString logic by defining methods like: 493 // String fieldNameToString() { ... } 494 495 return "FillRequest { " + 496 "id = " + mId + ", " + 497 "fillContexts = " + mFillContexts + ", " + 498 "hints = " + mHints + ", " + 499 "clientState = " + mClientState + ", " + 500 "flags = " + requestFlagsToString(mFlags) + ", " + 501 "inlineSuggestionsRequest = " + mInlineSuggestionsRequest + ", " + 502 "delayedFillIntentSender = " + mDelayedFillIntentSender + 503 " }"; 504 } 505 506 @Override 507 @DataClass.Generated.Member writeToParcel(@onNull Parcel dest, int flags)508 public void writeToParcel(@NonNull Parcel dest, int flags) { 509 // You can override field parcelling by defining methods like: 510 // void parcelFieldName(Parcel dest, int flags) { ... } 511 512 byte flg = 0; 513 if (mClientState != null) flg |= 0x8; 514 if (mInlineSuggestionsRequest != null) flg |= 0x20; 515 if (mDelayedFillIntentSender != null) flg |= 0x40; 516 dest.writeByte(flg); 517 dest.writeInt(mId); 518 dest.writeParcelableList(mFillContexts, flags); 519 dest.writeStringList(mHints); 520 if (mClientState != null) dest.writeBundle(mClientState); 521 dest.writeInt(mFlags); 522 if (mInlineSuggestionsRequest != null) dest.writeTypedObject(mInlineSuggestionsRequest, flags); 523 if (mDelayedFillIntentSender != null) dest.writeTypedObject(mDelayedFillIntentSender, flags); 524 } 525 526 @Override 527 @DataClass.Generated.Member describeContents()528 public int describeContents() { return 0; } 529 530 /** @hide */ 531 @SuppressWarnings({"unchecked", "RedundantCast"}) 532 @DataClass.Generated.Member FillRequest(@onNull Parcel in)533 /* package-private */ FillRequest(@NonNull Parcel in) { 534 // You can override field unparcelling by defining methods like: 535 // static FieldType unparcelFieldName(Parcel in) { ... } 536 537 byte flg = in.readByte(); 538 int id = in.readInt(); 539 List<FillContext> fillContexts = new ArrayList<>(); 540 in.readParcelableList(fillContexts, FillContext.class.getClassLoader()); 541 List<String> hints = new ArrayList<>(); 542 in.readStringList(hints); 543 Bundle clientState = (flg & 0x8) == 0 ? null : in.readBundle(); 544 int flags = in.readInt(); 545 InlineSuggestionsRequest inlineSuggestionsRequest = (flg & 0x20) == 0 ? null : (InlineSuggestionsRequest) in.readTypedObject(InlineSuggestionsRequest.CREATOR); 546 IntentSender delayedFillIntentSender = (flg & 0x40) == 0 ? null : (IntentSender) in.readTypedObject(IntentSender.CREATOR); 547 548 this.mId = id; 549 this.mFillContexts = fillContexts; 550 com.android.internal.util.AnnotationValidations.validate( 551 NonNull.class, null, mFillContexts); 552 this.mHints = hints; 553 com.android.internal.util.AnnotationValidations.validate( 554 NonNull.class, null, mHints); 555 this.mClientState = clientState; 556 this.mFlags = flags; 557 558 Preconditions.checkFlagsArgument( 559 mFlags, 560 FLAG_MANUAL_REQUEST 561 | FLAG_COMPATIBILITY_MODE_REQUEST 562 | FLAG_PASSWORD_INPUT_TYPE 563 | FLAG_VIEW_NOT_FOCUSED 564 | FLAG_SUPPORTS_FILL_DIALOG 565 | FLAG_IME_SHOWING 566 | FLAG_RESET_FILL_DIALOG_STATE 567 | FLAG_PCC_DETECTION 568 | FLAG_SCREEN_HAS_CREDMAN_FIELD 569 | FLAG_VIEW_REQUESTS_CREDMAN_SERVICE); 570 this.mInlineSuggestionsRequest = inlineSuggestionsRequest; 571 this.mDelayedFillIntentSender = delayedFillIntentSender; 572 573 onConstructed(); 574 } 575 576 @DataClass.Generated.Member 577 public static final @NonNull Parcelable.Creator<FillRequest> CREATOR 578 = new Parcelable.Creator<FillRequest>() { 579 @Override 580 public FillRequest[] newArray(int size) { 581 return new FillRequest[size]; 582 } 583 584 @Override 585 public FillRequest createFromParcel(@NonNull Parcel in) { 586 return new FillRequest(in); 587 } 588 }; 589 590 @DataClass.Generated( 591 time = 1701010178309L, 592 codegenVersion = "1.0.23", 593 sourceFile = "frameworks/base/core/java/android/service/autofill/FillRequest.java", 594 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 @android.service.autofill.FillRequest.RequestFlags int FLAG_VIEW_REQUESTS_CREDMAN_SERVICE\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)") 595 @Deprecated __metadata()596 private void __metadata() {} 597 598 599 //@formatter:on 600 // End of generated code 601 602 } 603