• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/**
17 * @file Defines the atomicService web component
18 * @kit ArkUI
19 */
20
21import { Callback } from '@ohos.base';
22
23/**
24 * Declare Component AtomicServiceWeb.
25 *
26 * @syscap SystemCapability.ArkUI.ArkUI.Full
27 * @atomicservice
28 * @since 12
29 */
30@Component
31export declare struct AtomicServiceWeb {
32  /**
33   * The address of the web page to be displayed.
34   *
35   * @type { ResourceStr }
36   * @syscap SystemCapability.ArkUI.ArkUI.Full
37   * @atomicservice
38   * @since 12
39   */
40  src: ResourceStr;
41  /**
42   * Sets the controller of the AtomicServiceWeb.
43   *
44   * @type { AtomicServiceWebController }
45   * @syscap SystemCapability.ArkUI.ArkUI.Full
46   * @atomicservice
47   * @since 12
48   */
49  @ObjectLink
50  controller: AtomicServiceWebController;
51  /**
52   * Sets how to load HTTP and HTTPS content.
53   *
54   * @type { ?MixedMode }
55   * @syscap SystemCapability.ArkUI.ArkUI.Full
56   * @atomicservice
57   * @since 12
58   */
59  @Prop
60  mixedMode?: MixedMode;
61  /**
62   * Sets the dark mode of Web.
63   *
64   * @type { ?WebDarkMode }
65   * @syscap SystemCapability.ArkUI.ArkUI.Full
66   * @atomicservice
67   * @since 12
68   */
69  @Prop
70  darkMode?: WebDarkMode;
71  /**
72   * Sets whether to enable forced dark algorithm when the web is in dark mode.
73   *
74   * @type { ?boolean }
75   * @syscap SystemCapability.ArkUI.ArkUI.Full
76   * @atomicservice
77   * @since 12
78   */
79  @Prop
80  forceDarkAccess?: boolean;
81  /**
82   * The navPathStack to control page route in Navigation and NavDestination.
83   *
84   * @type { ?NavPathStack }
85   * @syscap SystemCapability.ArkUI.ArkUI.Full
86   * @atomicservice
87   * @since 12
88   */
89  navPathStack?: NavPathStack;
90  /**
91   * The callback method to invoke after page is back or destroyed if postMessage() is called in H5 page.
92   *
93   * @type { ?Callback<OnMessageEvent> }
94   * @syscap SystemCapability.ArkUI.ArkUI.Full
95   * @atomicservice
96   * @since 12
97   */
98  onMessage?: Callback<OnMessageEvent>;
99  /**
100   * Triggered when the web page receives a web resource loading error.
101   *
102   * @type { ?Callback<OnErrorReceiveEvent> }
103   * @syscap SystemCapability.ArkUI.ArkUI.Full
104   * @atomicservice
105   * @since 12
106   */
107  onErrorReceive?: Callback<OnErrorReceiveEvent>;
108  /**
109   * Triggered when the web page receives a web resource loading HTTP error.
110   *
111   * @type { ?Callback<OnHttpErrorReceiveEvent> }
112   * @syscap SystemCapability.ArkUI.ArkUI.Full
113   * @atomicservice
114   * @since 12
115   */
116  onHttpErrorReceive?: Callback<OnHttpErrorReceiveEvent>;
117  /**
118   * Triggered at the begin of web page loading.
119   *
120   * @type { ?Callback<OnPageBeginEvent> }
121   * @syscap SystemCapability.ArkUI.ArkUI.Full
122   * @atomicservice
123   * @since 12
124   */
125  onPageBegin?: Callback<OnPageBeginEvent>;
126  /**
127   * Triggered at the end of web page loading.
128   *
129   * @type { ?Callback<OnPageEndEvent> }
130   * @syscap SystemCapability.ArkUI.ArkUI.Full
131   * @atomicservice
132   * @since 12
133   */
134  onPageEnd?: Callback<OnPageEndEvent>;
135  /**
136   * Triggered when The controller is bound to the web component, this controller must be a WebviewController.
137   * This callback can not use the interface about manipulating web pages.
138   *
139   * @type { ?Callback<void> }
140   * @syscap SystemCapability.ArkUI.ArkUI.Full
141   * @atomicservice
142   * @since 12
143   */
144  onControllerAttached?: Callback<void>;
145  /**
146   * Triggered when the resources loading is intercepted.
147   *
148   * @type { ?OnLoadInterceptCallback }
149   * @syscap SystemCapability.ArkUI.ArkUI.Full
150   * @atomicservice
151   * @since 12
152   */
153  onLoadIntercept?: OnLoadInterceptCallback;
154  /**
155   * Triggered when the page loading progress changes.
156   *
157   * @type { ?Callback<OnProgressChangeEvent> }
158   * @syscap SystemCapability.ArkUI.ArkUI.Full
159   * @atomicservice
160   * @since 12
161   */
162  onProgressChange?: Callback<OnProgressChangeEvent>;
163}
164
165/**
166 * Message event after page is back or destroyed if postMessage() is called in H5 page.
167 *
168 * @typedef OnMessageEvent
169 * @syscap SystemCapability.ArkUI.ArkUI.Full
170 * @atomicservice
171 * @since 12
172 */
173export declare interface OnMessageEvent {
174  /**
175   * The message data list.
176   *
177   * @type { object[] }
178   * @syscap SystemCapability.ArkUI.ArkUI.Full
179   * @atomicservice
180   * @since 12
181   */
182  data: object[];
183}
184
185/**
186 * Error receive event when the web page receives a web resource loading error.
187 *
188 * @typedef OnErrorReceiveEvent
189 * @syscap SystemCapability.ArkUI.ArkUI.Full
190 * @atomicservice
191 * @since 12
192 */
193export declare interface OnErrorReceiveEvent {
194  /**
195   * Web resource request of event.
196   *
197   * @type { WebResourceRequest }
198   * @syscap SystemCapability.ArkUI.ArkUI.Full
199   * @atomicservice
200   * @since 12
201   */
202  request: WebResourceRequest;
203
204  /**
205   * Web resource error of event.
206   *
207   * @type { WebResourceError }
208   * @syscap SystemCapability.ArkUI.ArkUI.Full
209   * @atomicservice
210   * @since 12
211   */
212  error: WebResourceError;
213}
214
215/**
216 * Http error receive event when the web page receives a web resource loading HTTP error.
217 *
218 * @typedef OnHttpErrorReceiveEvent
219 * @syscap SystemCapability.ArkUI.ArkUI.Full
220 * @atomicservice
221 * @since 12
222 */
223export declare interface OnHttpErrorReceiveEvent {
224  /**
225   * Web resource request of event.
226   *
227   * @type { WebResourceRequest }
228   * @syscap SystemCapability.ArkUI.ArkUI.Full
229   * @atomicservice
230   * @since 12
231   */
232  request: WebResourceRequest;
233
234  /**
235   * Web resource response of event.
236   *
237   * @type { WebResourceResponse }
238   * @syscap SystemCapability.ArkUI.ArkUI.Full
239   * @atomicservice
240   * @since 12
241   */
242  response: WebResourceResponse;
243}
244
245/**
246 * Page begin event at the begin of web page loading.
247 *
248 * @typedef OnPageBeginEvent
249 * @syscap SystemCapability.ArkUI.ArkUI.Full
250 * @atomicservice
251 * @since 12
252 */
253export declare interface OnPageBeginEvent {
254  /**
255   * The url of page.
256   *
257   * @type { string }
258   * @syscap SystemCapability.ArkUI.ArkUI.Full
259   * @atomicservice
260   * @since 12
261   */
262  url: string;
263}
264
265/**
266 * Page end event at the end of web page loading.
267 *
268 * @typedef OnPageEndEvent
269 * @syscap SystemCapability.ArkUI.ArkUI.Full
270 * @atomicservice
271 * @since 12
272 */
273export declare interface OnPageEndEvent {
274  /**
275   * The url of page.
276   *
277   * @type { string }
278   * @syscap SystemCapability.ArkUI.ArkUI.Full
279   * @atomicservice
280   * @since 12
281   */
282  url: string;
283}
284
285/**
286 * Load intercept event when the resources loading is intercepted.
287 *
288 * @typedef OnLoadInterceptEvent
289 * @syscap SystemCapability.ArkUI.ArkUI.Full
290 * @atomicservice
291 * @since 12
292 */
293export declare interface OnLoadInterceptEvent {
294  /**
295   * Web resource request of event.
296   *
297   * @type { WebResourceRequest }
298   * @syscap SystemCapability.ArkUI.ArkUI.Full
299   * @atomicservice
300   * @since 12
301   */
302  data: WebResourceRequest;
303}
304
305/**
306 * Progress change event when the page loading progress changes.
307 *
308 * @typedef OnProgressChangeEvent
309 * @syscap SystemCapability.ArkUI.ArkUI.Full
310 * @atomicservice
311 * @since 12
312 */
313export declare interface OnProgressChangeEvent {
314  /**
315   * The new progress of the page.
316   *
317   * @type { number }
318   * @syscap SystemCapability.ArkUI.ArkUI.Full
319   * @atomicservice
320   * @since 12
321   */
322  newProgress: number;
323}
324
325/**
326 * Provides methods for controlling the AtomicServiceWeb controller.
327 *
328 * @syscap SystemCapability.ArkUI.ArkUI.Full
329 * @atomicservice
330 * @since 12
331 */
332@Observed
333export declare class AtomicServiceWebController {
334  /**
335   * Gets the default user agent.
336   *
337   * @returns { string } Return user agent information.
338   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
339   *    AtomicServiceWeb component.
340   * @syscap SystemCapability.ArkUI.ArkUI.Full
341   * @atomicservice
342   * @since 12
343   */
344  getUserAgent(): string;
345
346  /**
347   * Get custom user agent.
348   *
349   * @returns { string } Get custom User agent information.
350   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
351   *    AtomicServiceWeb component.
352   * @syscap SystemCapability.ArkUI.ArkUI.Full
353   * @atomicservice
354   * @since 12
355   */
356  getCustomUserAgent(): string;
357
358  /**
359   * Set custom user agent.
360   *
361   * @param { string } userAgent - User custom agent information.
362   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.
363   * <br>2. Incorrect parameter types.
364   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
365   *    AtomicServiceWeb component.
366   * @syscap SystemCapability.ArkUI.ArkUI.Full
367   * @atomicservice
368   * @since 12
369   */
370  setCustomUserAgent(userAgent: string): void;
371
372  /**
373   * Refreshes the current URL.
374   *
375   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
376   *    AtomicServiceWeb component.
377   * @syscap SystemCapability.ArkUI.ArkUI.Full
378   * @atomicservice
379   * @since 12
380   */
381  refresh(): void;
382
383  /**
384   * Goes forward in the history of the web page.
385   *
386   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
387   *    AtomicServiceWeb component.
388   * @syscap SystemCapability.ArkUI.ArkUI.Full
389   * @atomicservice
390   * @since 12
391   */
392  forward(): void;
393
394  /**
395   * Goes back in the history of the web page.
396   *
397   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
398   *    AtomicServiceWeb component.
399   * @syscap SystemCapability.ArkUI.ArkUI.Full
400   * @atomicservice
401   * @since 12
402   */
403  backward(): void;
404
405  /**
406   * Checks whether the web page can go forward.
407   *
408   * @returns { boolean } True if the web page can go forward else false.
409   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
410   *    AtomicServiceWeb component.
411   * @syscap SystemCapability.ArkUI.ArkUI.Full
412   * @atomicservice
413   * @since 12
414   */
415  accessForward(): boolean;
416
417  /**
418   * Checks whether the web page can go back.
419   *
420   * @returns { boolean } True if the web page can go back else false.
421   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
422   *    AtomicServiceWeb component.
423   * @syscap SystemCapability.ArkUI.ArkUI.Full
424   * @atomicservice
425   * @since 12
426   */
427  accessBackward(): boolean;
428
429  /**
430   * Checks whether the web page can go back or forward the given number of steps.
431   *
432   * @param { number } step - The number of steps.
433   * @returns { boolean } True if the web page can go back else false.
434   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.
435   * <br>2. Incorrect parameter types. 3.Parameter verification failed.
436   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
437   *    AtomicServiceWeb component.
438   * @syscap SystemCapability.ArkUI.ArkUI.Full
439   * @atomicservice
440   * @since 12
441   */
442  accessStep(step: number): boolean;
443
444  /**
445   * Loads the URL.
446   *
447   * @param { string | Resource } url - The URL to load.
448   * @param { Array<WebHeader> } [headers] - Additional HTTP request header for URL.
449   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.
450   * <br>2. Incorrect parameter types. 3.Parameter verification failed.
451   * @throws { BusinessError } 17100001 - Init error. The AtomicServiceWebController must be associated with a
452   *    AtomicServiceWeb component.
453   * @throws { BusinessError } 17100002 - Invalid url.
454   * @throws { BusinessError } 17100003 - Invalid resource path or file type.
455   * @syscap SystemCapability.ArkUI.ArkUI.Full
456   * @atomicservice
457   * @since 12
458   */
459  loadUrl(url: string | Resource, headers?: Array<WebHeader>): void;
460}
461
462/**
463 * Defines the Web's request/response header.
464 *
465 * @typedef WebHeader
466 * @syscap SystemCapability.ArkUI.ArkUI.Full
467 * @atomicservice
468 * @since 12
469 */
470export declare interface WebHeader {
471  /**
472   * Gets the key of the request/response header.
473   *
474   * @type { string }
475   * @syscap SystemCapability.ArkUI.ArkUI.Full
476   * @atomicservice
477   * @since 12
478   */
479  headerKey: string;
480
481  /**
482   * Gets the value of the request/response header.
483   *
484   * @type { string }
485   * @syscap SystemCapability.ArkUI.ArkUI.Full
486   * @atomicservice
487   * @since 12
488   */
489  headerValue: string;
490}
491
492/**
493 * Callback for OnLoadIntercept
494 *
495 * @typedef { function } OnLoadIntercept Function.
496 * @param { OnLoadInterceptEvent } event - the load intercept event when the resources loading is intercepted.
497 * @returns { boolean } True if the load is intercepted else false.
498 * @syscap SystemCapability.ArkUI.ArkUI.Full
499 * @atomicservice
500 * @since 12
501 */
502export type OnLoadInterceptCallback = (event: OnLoadInterceptEvent) => boolean;
503