# AutoFillExtensionContext (System API) The **AutoFillExtensionContext** module, inherited from [ExtensionContext](js-apis-inner-application-extensionContext.md), provides the context environment for the AutoFillExtensionAbility. > **NOTE** > > The initial APIs of this module are supported since API version 11. Newly added APIs will be marked with a superscript to indicate their earliest API version. > The APIs of this module can be used only in the stage model. > The APIs provided by this module are system APIs. ## Usage Before using the **AutoFillExtensionContext** module, you must define a child class that inherits from **AutoFillExtensionAbility**. ```ts import { AutoFillExtensionAbility } from '@kit.AbilityKit'; class MyAutoFillExtensionAbility extends AutoFillExtensionAbility { onCreate() { let AutoFillExtensionContext = this.context; } } ``` ## AutoFillExtensionContext.reloadInModal12+ reloadInModal(customData: CustomData): Promise\ Starts a modal page. **System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore **Parameters** | Name | Type | Mandatory | Description | | ---------- | --------------------------------------------------------- | ---- | ---------------------------- | | customData | [CustomData](js-apis-inner-application-customData-sys.md) | Yes | Custom information for starting the modal page. | **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise that returns no value. | **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | | -------- | ------------------------------------------------------------ | | 202 | Not System App. Interface caller is not a system app. | | 401 | If the input parameter is not valid parameter. | | 16000011 | The context does not exist. | | 16000050 | Internal error. | **Example** The autofill service is triggered when a user touches the account and password text box, and an account selection page is displayed in the **onFillRequest** lifecycle of the [AutoFillExtensionAbility](js-apis-app-ability-autoFillExtensionAbility-sys.md). When an account is selected, **reloadInModal** is called to trigger the autofill service again, and a modal page is started in the** onFillRequest** lifecycle of the AutoFillExtensionAbility. ```ts // AutoFillAbility.ts import { AutoFillExtensionAbility, autoFillManager, UIExtensionContentSession } from '@kit.AbilityKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; export default class AutoFillAbility extends AutoFillExtensionAbility { // ... onFillRequest(session: UIExtensionContentSession, request: autoFillManager.FillRequest, callback: autoFillManager.FillRequestCallback) { hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest'); try { let storage_fill: LocalStorage = new LocalStorage( { 'session': session, 'message': "AutoFill Page", 'fillCallback': callback, 'viewData': request.viewData, 'autoFillExtensionContext': this.context, 'customData': request.customData }); if (request.customData == undefined) { // Load the autofill processing page. session.loadContent('pages/AccountPage', storage_fill); } else { // Start a modal page. session.loadContent('pages/ReloadInModal', storage_fill); } } catch (err) { hilog.error(0x0000, 'testTag', '%{public}s', 'autofill failed to load content'); } } } ``` When the user selects an account on the account selection page, the **reloadInModal** API is called. ```ts // AccountPage.ets import { autoFillManager, common } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let storage: LocalStorage = LocalStorage.getShared(); let viewData: autoFillManager.ViewData | undefined = storage.get('viewData'); let context: common.AutoFillExtensionContext | undefined = storage.get('autoFillExtensionContext'); @Entry @Component struct AccountPage { build() { Row() { Column() { List({ space: 10, initialIndex: 0 }) { ListItem() { Text('HelloWorld789456') .width('100%') .height(40) .fontSize(16) .textAlign(TextAlign.Center) .borderRadius(5) } .onClick(() => { if (viewData != undefined) { if (context != undefined) { context.reloadInModal({ data: { viewData: 20, text: 'HelloWorld789456' } }).then(() => { console.info('reloadInModal successfully.') }).catch((err: BusinessError) => { console.error('reloadInModal failed.') }) } } }) } // ... } .width('100%') .shadow(ShadowStyle.OUTER_FLOATING_SM) } .height('100%') .shadow(ShadowStyle.OUTER_FLOATING_SM) } } ```