• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AutoFillRequest (System API)
2
3
4The module provides page data and callbacks when a callback is triggered for the AutoFillExtensionAbility.
5
6> **NOTE**
7>
8> 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.
9> The APIs provided by this module are system APIs.
10> The APIs of this module can be used only in the stage model.
11
12## Modules to Import
13
14```ts
15import { autoFillManager } from '@kit.AbilityKit';
16```
17
18## FillRequest
19
20Defines the information about an auto-fill request.
21
22**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
23
24| Name       | Type                | Read-Only| Optional| Description                                                        |
25| ----------- | -------------------- | ---- | ---- | ------------------------------------------------------------ |
26| type        | [AutoFillType](js-apis-inner-application-autoFillType-sys.md)       | No  | No  | Type of the element to be automatically filled in.         |
27| viewData    | [ViewData](js-apis-inner-application-viewData-sys.md)               | No  | No  | Page data.             |
28| customData<sup>13+</sup>    | [CustomData](js-apis-inner-application-customData-sys.md)               | No  | No  | Custom data.            |
29| isPopup<sup>12+</sup>    | boolean               | No  | No  | Whether a dialog box is displayed for the auto-fill request.<br>**true**: A dialog box is displayed<br>**false**: A modal window is displayed             |
30
31## SaveRequest
32
33Defines the information about an auto-saving request.
34
35**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
36
37| Name       | Type                | Read-Only| Optional| Description                                                        |
38| ----------- | -------------------- | ---- | ---- | ------------------------------------------------------------ |
39| viewData    | [ViewData](js-apis-inner-application-viewData-sys.md)               | No  | No  | Page data.             |
40
41## UpdateRequest<sup>12+</sup>
42
43Defines the information about an auto-update request.
44
45**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
46
47| Name       | Type                | Read-Only| Optional| Description                                                        |
48| ----------- | -------------------- | ---- | ---- | ------------------------------------------------------------ |
49| viewData    | [ViewData](js-apis-inner-application-viewData-sys.md)               | No  | No  | Page data.             |
50
51## FillResponse
52
53Defines the information about the response to an auto-fill request.
54
55**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
56
57| Name       | Type                | Read-Only| Optional| Description                                                        |
58| ----------- | -------------------- | ---- | ---- | ------------------------------------------------------------ |
59| viewData    | [ViewData](js-apis-inner-application-viewData-sys.md)               | No  | No  | Page data.             |
60
61## FillRequestCallback
62
63Implements callbacks for an auto-fill request, which is used to automatically fill in or generate a password. The callbacks can be used to notify the client of the success or failure of the request.
64
65### onSuccess
66
67onSuccess(response: FillResponse): void
68
69Called when an auto-fill request is successfully processed.
70
71**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
72
73**Parameters**
74
75| Name| Type| Mandatory| Description|
76| -------- | -------- | -------- | ------------------------------ |
77| response | [FillResponse](#fillresponse)  | Yes| Information about the response to the auto-fill request.|
78
79**Error codes**
80
81For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
82
83| ID| Error Message|
84| ------- | -------------------------------- |
85| 202  | Permission denied, non-system app called system api. |
86| 401  | Mandatory parameters are left unspecified. |
87| 16000050 | Internal error. |
88
89**Example**
90
91```ts
92// MyAutoFillExtensionAbility.ts
93import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
94import { hilog } from '@kit.PerformanceAnalysisKit';
95
96class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
97  onFillRequest(session: UIExtensionContentSession,
98                request: autoFillManager.FillRequest,
99                callback: autoFillManager.FillRequestCallback) {
100    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
101    try {
102      let storageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData> = {
103        'fillCallback': callback,
104        'message': 'AutoFill Page',
105        'viewData': request.viewData,
106      }
107      let storage_fill = new LocalStorage(storageData);
108      if (session) {
109        session.loadContent('pages/AutoFillPage', storage_fill);
110      } else {
111        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
112      }
113    } catch (err) {
114      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
115    }
116  }
117}
118```
119
120```ts
121// AutoFillPage.ets
122import { autoFillManager } from '@kit.AbilityKit';
123import { BusinessError } from '@kit.BasicServicesKit';
124import { hilog } from '@kit.PerformanceAnalysisKit';
125
126@Entry
127@Component
128struct AutoFillPage {
129  storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage();
130  fillCallback: autoFillManager.FillRequestCallback | undefined =
131    this.storage?.get<autoFillManager.FillRequestCallback>('fillCallback');
132  viewData: autoFillManager.ViewData | undefined = this.storage?.get<autoFillManager.ViewData>('viewData');
133
134  build() {
135    Row() {
136      Column() {
137        Text('AutoFill Page')
138          .fontSize(50)
139          .fontWeight(FontWeight.Bold)
140      }
141
142      Button('onSuccess')
143        .onClick(() => {
144          if (this.viewData) {
145            this.viewData.pageNodeInfos[0].value = 'user1';
146            this.viewData.pageNodeInfos[1].value = 'user1 password';
147            this.viewData.pageNodeInfos[2].value = 'user1 generate new password';
148            hilog.info(0x0000, 'testTag', 'autofill success with viewData: %{public}s', JSON.stringify(this.viewData));
149            try {
150              this.fillCallback?.onSuccess({ viewData: this.viewData });
151            } catch (error) {
152              console.error(`catch error, code: ${(error as BusinessError).code},
153                  message: ${(error as BusinessError).message}`);
154            }
155          }
156        })
157        .width('100%')
158    }
159    .height('100%')
160  }
161}
162```
163
164### onFailure
165
166onFailure(): void
167
168Called when an auto-fill request fails to be processed.
169
170**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
171
172**Error codes**
173
174For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
175
176| ID| Error Message|
177| ------- | -------------------------------- |
178| 202 | Permission denied, non-system app called system api. |
179| 16000050 | Internal error. |
180
181**Example**
182
183```ts
184// MyAutoFillExtensionAbility.ts
185import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
186import { hilog } from '@kit.PerformanceAnalysisKit';
187
188class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
189  onFillRequest(session: UIExtensionContentSession,
190                request: autoFillManager.FillRequest,
191                callback: autoFillManager.FillRequestCallback) {
192    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
193    try {
194      let storageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData> = {
195        'fillCallback': callback,
196        'message': 'AutoFill Page',
197        'viewData': request.viewData,
198      }
199      let storage_fill = new LocalStorage(storageData);
200      if (session) {
201        session.loadContent('pages/AutoFill Page', storage_fill);
202      } else {
203        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
204      }
205    } catch (err) {
206      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
207    }
208  }
209}
210```
211
212```ts
213// AutoFillPage.ets
214import { autoFillManager } from '@kit.AbilityKit';
215import { BusinessError } from '@kit.BasicServicesKit';
216import { hilog } from '@kit.PerformanceAnalysisKit';
217
218@Entry
219@Component
220struct AutoFillPage {
221  storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage();
222  fillCallback: autoFillManager.FillRequestCallback | undefined =
223    this.storage?.get<autoFillManager.FillRequestCallback>('fillCallback');
224
225  build() {
226    Row() {
227      Column() {
228        Text('AutoFill Page')
229          .fontSize(50)
230          .fontWeight(FontWeight.Bold)
231      }
232
233      Button('onFailure')
234        .onClick(() => {
235          hilog.info(0x0000, 'testTag', 'autofill failure');
236          try {
237            this.fillCallback?.onFailure();
238          } catch (error) {
239            console.error(`catch error, code: ${(error as BusinessError).code},
240              message: ${(error as BusinessError).message}`);
241          }
242        })
243        .width('100%')
244    }
245    .height('100%')
246  }
247}
248```
249
250### onCancel<sup>11+</sup>
251
252onCancel(fillContent?: string): void
253
254Called when an auto-fill request is canceled.
255
256**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
257
258**Parameters**
259
260| Name                   | Type  | Mandatory| Description                |
261| ------------------------- | ------ | ---- | -------------------- |
262| fillContent | string | No  | Content returned to the input method framework when the auto-fill request is canceled.|
263
264**Error codes**
265
266For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
267
268| ID| Error Message|
269| ------- | -------------------------------- |
270| 202  | Permission denied, non-system app called system api. |
271| 401  | Parameter error. Possible causes: 1. The input parameter is not valid parameter;2. Mandatory parameters are left unspecified. |
272| 16000050 | Internal error. |
273
274**Example**
275
276```ts
277// MyAutoFillExtensionAbility.ts
278import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
279import { hilog } from '@kit.PerformanceAnalysisKit';
280
281class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
282  onFillRequest(session: UIExtensionContentSession,
283                request: autoFillManager.FillRequest,
284                callback: autoFillManager.FillRequestCallback) {
285    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
286    try {
287      let storageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData> = {
288        'fillCallback': callback,
289        'message': 'AutoFill Page',
290        'viewData': request.viewData,
291      }
292      let storage_fill = new LocalStorage(storageData);
293      if (session) {
294        session.loadContent('pages/AutoFillPage', storage_fill);
295      } else {
296        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
297      }
298    } catch (err) {
299      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
300    }
301  }
302}
303```
304
305```ts
306// AutoFillPage.ets
307import { autoFillManager } from '@kit.AbilityKit';
308import { BusinessError } from '@kit.BasicServicesKit';
309import { hilog } from '@kit.PerformanceAnalysisKit';
310
311@Entry
312@Component
313struct AutoFillPage {
314  storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage();
315  fillCallback: autoFillManager.FillRequestCallback | undefined =
316    this.storage?.get<autoFillManager.FillRequestCallback>('fillCallback');
317
318  build() {
319    Row() {
320      Column() {
321        Text('Hello World')
322          .fontSize(50)
323          .fontWeight(FontWeight.Bold)
324      }
325
326      Button('onCancel')
327        .onClick(() => {
328          hilog.info(0x0000, 'testTag', 'autofill cancel');
329          try {
330            this.fillCallback?.onCancel();
331          } catch (error) {
332            console.error(`catch error, code: ${(error as BusinessError).code},
333                message: ${(error as BusinessError).message}`);
334          }
335        })
336        .width('100%')
337    }
338    .height('100%')
339  }
340}
341```
342
343### setAutoFillPopupConfig<sup>12+</sup>
344
345setAutoFillPopupConfig(autoFillPopupConfig: AutoFillPopupConfig ): void
346
347Sets the size and position of an auto-fill pop-up.
348
349**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
350
351**Parameters**
352
353| Name| Type| Mandatory| Description|
354| -------- | -------- | -------- | ------------------------------ |
355| autoFillPopupConfig | [AutoFillPopupConfig](js-apis-inner-application-autoFillPopupConfig-sys.md) | Yes| Size and position of the auto-fill pop-up.|
356
357**Error codes**
358
359For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
360
361| ID| Error Message|
362| ------- | -------------------------------- |
363| 202  | Permission denied, non-system app called system api. |
364| 401  | Mandatory parameters are left unspecified. |
365| 16000050 | Internal error. |
366
367**Example**
368
369```ts
370// MyAutoFillExtensionAbility.ts
371// MyAutoFillExtensionAbility.ts
372import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
373import { hilog } from '@kit.PerformanceAnalysisKit';
374
375export default class AutoFillAbility extends AutoFillExtensionAbility {
376  storage: LocalStorage = new LocalStorage();
377
378  onCreate(): void {
379    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onCreate');
380  }
381
382  onDestroy(): void {
383    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onDestroy');
384  }
385
386  onSessionDestroy(session: UIExtensionContentSession) {
387    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onSessionDestroy');
388    hilog.info(0x0000, 'testTag', 'session content: %{public}s', JSON.stringify(session));
389  }
390
391  onForeground(): void {
392    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onForeground');
393  }
394
395  onBackground(): void {
396    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onBackground');
397  }
398
399  onUpdateRequest(request: autoFillManager.UpdateRequest): void {
400    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onUpdateRequest');
401    console.info(`get fill request viewData: ${JSON.stringify(request.viewData)}.`);
402    let fillCallback = this.storage.get<autoFillManager.FillRequestCallback>('fillCallback');
403
404    if (fillCallback) {
405      try {
406        hilog.info(0x0000, 'testTag', 'pageNodeInfos.value: ' + JSON.stringify(request.viewData.pageNodeInfos[0].value));
407        fillCallback.setAutoFillPopupConfig({
408          popupSize: {
409            width: 400 + request.viewData.pageNodeInfos[0].value.length * 10,
410            height: 200 + request.viewData.pageNodeInfos[0].value.length * 10
411          },
412          placement: autoFillManager.PopupPlacement.TOP
413        });
414      } catch (err) {
415        hilog.info(0x0000, 'testTag', 'autoFillPopupConfig err: ' + err.code);
416      }
417    }
418  }
419
420  onFillRequest(session: UIExtensionContentSession, request: autoFillManager.FillRequest, callback: autoFillManager.FillRequestCallback) {
421    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
422    hilog.info(0x0000, 'testTag', 'Fill RequestCallback: %{public}s ', JSON.stringify(callback));
423    console.info(`testTag. Get fill request viewData: ${JSON.stringify(request.viewData)}.`);
424    console.info(`testTag. Get fill request type: ${JSON.stringify(request.type)}.`);
425
426    try {
427      let localStorageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData | autoFillManager.AutoFillType> = {
428        'message': 'AutoFill Page',
429        'fillCallback': callback,
430        'viewData': request.viewData,
431        'autoFillType': request.type
432      }
433      let storage_fill = new LocalStorage(localStorageData);
434      console.info(`testTag. Session: ${JSON.stringify(session)}.`);
435      let size: autoFillManager.PopupSize = {
436        width: 400,
437        height: 200
438      };
439      callback.setAutoFillPopupConfig({
440        popupSize: size
441      });
442      session.loadContent('pages/SelectorList', storage_fill);
443    } catch (err) {
444      hilog.error(0x0000, 'testTag', '%{public}s', 'autofill failed to load content: ' + JSON.stringify(err));
445    }
446  }
447
448  onSaveRequest(session: UIExtensionContentSession, request: autoFillManager.SaveRequest, callback: autoFillManager.SaveRequestCallback) {
449    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onSaveRequest');
450    try {
451      let localStorageData: Record<string, string | autoFillManager.SaveRequestCallback> = {
452        'message': 'AutoFill Page',
453        'saveCallback': callback
454      };
455      let storage_save = new LocalStorage(localStorageData);
456      if (session) {
457        session.loadContent('pages/SavePage', storage_save);
458      } else {
459        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
460      }
461    } catch (err) {
462      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
463    }
464  }
465}
466```
467
468## SaveRequestCallback
469
470Implements callbacks for an automatic or a manual saving request.
471
472### SaveRequestCallback.onSuccess
473
474onSuccess(): void
475
476Called when a saving request is successfully processed.
477
478**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
479
480**Error codes**
481
482For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
483
484| ID| Error Message|
485| ------- | -------------------------------- |
486| 202 | Permission denied, non-system app called system api. |
487| 16000050 | Internal error. |
488
489**Example**
490
491```ts
492// MyAutoFillExtensionAbility.ts
493import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
494import { hilog } from '@kit.PerformanceAnalysisKit';
495class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
496  onSaveRequest(session: UIExtensionContentSession,
497                request: autoFillManager.SaveRequest,
498                callback: autoFillManager.SaveRequestCallback) {
499    hilog.info(0x0000, 'testTag', '%{public}s', 'onSaveRequest');
500    try {
501      let storageData: Record<string, string | autoFillManager.SaveRequestCallback | autoFillManager.ViewData> = {
502        'message': 'AutoFill Page',
503        'saveCallback': callback,
504        'viewData': request.viewData
505      };
506      let storage_save = new LocalStorage(storageData);
507      if (session) {
508        session.loadContent('pages/SavePage', storage_save);
509      } else {
510        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
511      }
512    } catch (err) {
513      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
514    }
515  }
516}
517```
518
519```ts
520// SavePage.ets
521import { autoFillManager } from '@kit.AbilityKit';
522import { BusinessError } from '@kit.BasicServicesKit';
523import { hilog } from '@kit.PerformanceAnalysisKit';
524
525@Entry
526@Component
527struct SavePage {
528  storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage();
529  saveCallback: autoFillManager.SaveRequestCallback | undefined =
530    this.storage?.get<autoFillManager.SaveRequestCallback>('saveCallback');
531
532  build() {
533    Row() {
534      Column() {
535        Text('SavePage')
536          .fontSize(50)
537          .fontWeight(FontWeight.Bold)
538      }
539
540      Button('onSuccess')
541        .onClick(() => {
542          hilog.info(0x0000, 'testTag', 'autosave success');
543          try {
544            this.saveCallback?.onSuccess();
545          } catch (error) {
546            console.error(`catch error, code: ${(error as BusinessError).code},
547                message: ${(error as BusinessError).message}`);
548          }
549        })
550        .width('100%')
551    }
552    .height('100%')
553  }
554}
555```
556
557### SaveRequestCallback.onFailure
558
559onFailure(): void
560
561Called when a saving request fails to be processed.
562
563**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
564
565**Error codes**
566
567For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
568
569| ID| Error Message|
570| ------- | -------------------------------- |
571| 202 | Permission denied, non-system app called system api. |
572| 16000050 | Internal error. |
573
574**Example**
575
576```ts
577// MyAutoFillExtensionAbility.ts
578import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
579import { hilog } from '@kit.PerformanceAnalysisKit';
580
581class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
582  onSaveRequest(session: UIExtensionContentSession,
583                request: autoFillManager.SaveRequest,
584                callback: autoFillManager.SaveRequestCallback) {
585    hilog.info(0x0000, 'testTag', '%{public}s', 'onSaveRequest');
586    try {
587      let storageData: Record<string, string | autoFillManager.SaveRequestCallback | autoFillManager.ViewData> = {
588        'message': 'AutoFill Page',
589        'saveCallback': callback,
590        'viewData': request.viewData
591      }
592      let storage_save = new LocalStorage(storageData);
593      if (session) {
594        session.loadContent('pages/SavePage', storage_save);
595      } else {
596        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
597      }
598    } catch (err) {
599      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
600    }
601  }
602}
603```
604
605```ts
606// SavePage.ets
607import { autoFillManager } from '@kit.AbilityKit';
608import { BusinessError } from '@kit.BasicServicesKit';
609import { hilog } from '@kit.PerformanceAnalysisKit';
610
611@Entry
612@Component
613struct SavePage {
614  storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage();
615  saveCallback: autoFillManager.SaveRequestCallback | undefined =
616    this.storage?.get<autoFillManager.SaveRequestCallback>('saveCallback');
617
618  build() {
619    Row() {
620      Column() {
621        Text('Save Page')
622          .fontSize(50)
623          .fontWeight(FontWeight.Bold)
624      }
625
626      Button('onFailure')
627        .onClick(() => {
628          hilog.error(0x0000, 'testTag', 'autofill onFailure');
629          try {
630            this.saveCallback?.onFailure();
631          } catch (error) {
632            console.error(`catch error, code: ${(error as BusinessError).code},
633              message: ${(error as BusinessError).message}`);
634          }
635        })
636        .width('100%')
637    }
638    .height('100%')
639  }
640}
641```
642