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