1/* 2 * Copyright (c) 2022-2023 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 16import { nullptr, pointer } from "@koalaui/interop"; 17import { WebCookie } from "../generated/ArkWebCookieMaterialized"; 18import { ArkUIGeneratedNativeModule } from "../generated/ArkUIGeneratedNativeModule"; 19 20interface RunJavaScriptType { 21 script: string; 22 callback?: (result: string) => void; 23} 24interface LoadDataType { 25 data: string; 26 mimeType: string; 27 encoding: string; 28 baseUrl?: string; 29 historyUrl?: string; 30} 31interface LoadUrlType { 32 url: string | Resource; 33 headers?: Array<Header>; 34} 35interface RegisterJavaScriptProxyType { 36 object: object; 37 name: string; 38 methodList: Array<string>; 39} 40export class WebController { 41 private nativePointer: pointer = nullptr 42 setNativeController(node: pointer) { 43 // TODO: refactor code accordingly to Serializer 44 // this.nativePointer = ArkUIGeneratedNativeModule._WebController_Get_(node) 45 } 46 constructor() { } 47 onInactive(): void { 48 throw new Error("[WebController.onInactive] - method not implemented."); 49 } 50 onActive(): void { 51 throw new Error("[WebController.onActive] - method not implemented."); 52 } 53 zoom(factor: number): void { 54 throw new Error("[WebController.zoom] - method not implemented."); 55 } 56 clearHistory(): void { 57 throw new Error("[WebController.clearHistory] - method not implemented."); 58 } 59 runJavaScript(options: RunJavaScriptType) { 60 throw new Error("[WebController.runJavaScript] - method not implemented."); 61 } 62 loadData(options: LoadDataType) { 63 throw new Error("[WebController.loadData] - method not implemented."); 64 } 65 loadUrl(options: LoadUrlType) { 66 throw new Error("[WebController.loadUrl] - method not implemented."); 67 } 68 refresh() { 69 throw new Error("[WebController.refresh] - method not implemented."); 70 } 71 stop() { 72 throw new Error("[WebController.stop] - method not implemented."); 73 } 74 registerJavaScriptProxy(options: RegisterJavaScriptProxyType) { 75 throw new Error("[WebController.registerJavaScriptProxy] - method not implemented."); 76 } 77 deleteJavaScriptRegister(name: string) { 78 throw new Error("[WebController.deleteJavaScriptRegister] - method not implemented."); 79 } 80 getHitTest(): HitTestType { 81 throw new Error("[WebController.getHitTest] - method not implemented."); 82 } 83 requestFocus() { 84 throw new Error("[WebController.requestFocus] - method not implemented."); 85 } 86 accessBackward(): boolean { 87 throw new Error("[WebController.accessBackward] - method not implemented."); 88 } 89 accessForward(): boolean { 90 throw new Error("[WebController.accessForward] - method not implemented."); 91 } 92 accessStep(step: number): boolean { 93 throw new Error("[WebController.accessStep] - method not implemented."); 94 } 95 backward() { 96 throw new Error("[WebController.backward] - method not implemented."); 97 } 98 forward() { 99 throw new Error("[WebController.forward] - method not implemented."); 100 } 101 getCookieManager(): WebCookie { 102 throw new Error("[WebController.getCookieManager] - method not implemented."); 103 } 104} 105 106// TODO: proper import types form ets/api for WebviewController 107interface WebHeader { } 108enum SecureDnsMode { } 109enum WebHitTestType { } 110interface BackForwardList { } 111interface HitTestValue { } 112interface WebMessagePort { } 113interface WebCustomScheme { } 114class AsyncCallback<T> { } 115class JsMessageExt { } 116declare namespace cert { 117 interface X509Cert { } 118} 119 120export namespace webview { 121 export class WebviewController { 122 private nativePointer: pointer = nullptr 123 setNativeController(node: pointer) { 124 // TODO: refactor code accordingly to Serializer 125 // this.nativePointer = ArkUIGeneratedNativeModule._WebAttribute_Get_viewController(node) 126 } 127 128 static initializeWebEngine(): void { 129 throw new Error("[WebviewController.static] - method not implemented.") 130 } 131 static setHttpDns(secureDnsMode: SecureDnsMode, secureDnsConfig: string): void { 132 throw new Error("[WebviewController.static] - method not implemented.") 133 } 134 static setWebDebuggingAccess(webDebuggingAccess: boolean): void { 135 throw new Error("[WebviewController.static] - method not implemented.") 136 } 137 accessForward(): boolean { 138 throw new Error("[WebviewController.accessForward] - method not implemented.") 139 } 140 accessBackward(): boolean { 141 throw new Error("[WebviewController.accessBackward] - method not implemented.") 142 } 143 accessStep(step: number): boolean { 144 throw new Error("[WebviewController.accessStep] - method not implemented.") 145 } 146 forward(): void { 147 throw new Error("[WebviewController.forward] - method not implemented.") 148 } 149 backward(): void { 150 throw new Error("[WebviewController.backward] - method not implemented.") 151 } 152 clearHistory(): void { 153 throw new Error("[WebviewController.clearHistory] - method not implemented.") 154 } 155 onActive(): void { 156 throw new Error("[WebviewController.onActive] - method not implemented.") 157 } 158 onInactive(): void { 159 throw new Error("[WebviewController.onInactive] - method not implemented.") 160 } 161 refresh(): void { 162 throw new Error("[WebviewController.refresh] - method not implemented.") 163 } 164 loadData(data: string, mimeType: string, encoding: string, baseUrl?: string, historyUrl?: string): void { 165 throw new Error("[WebviewController.loadData] - method not implemented.") 166 } 167 loadUrl(url: string | Resource, headers?: Array<WebHeader>): void { 168 throw new Error("[WebviewController.loadUrl] - method not implemented.") 169 } 170 getHitTest(): WebHitTestType { 171 throw new Error("[WebviewController.getHitTest] - method not implemented.") 172 } 173 storeWebArchivePromise(baseName: string, autoName: boolean): Promise<string> { 174 throw new Error("[WebviewController.storeWebArchive] - method not implemented.") 175 } 176 storeWebArchiveAsync(baseName: string, autoName: boolean, callback: AsyncCallback<string>): void { 177 throw new Error("[WebviewController.storeWebArchive] - method not implemented.") 178 } 179 zoom(factor: number): void { 180 throw new Error("[WebviewController.zoom] - method not implemented.") 181 } 182 zoomIn(): void { 183 throw new Error("[WebviewController.zoomIn] - method not implemented.") 184 } 185 zoomOut(): void { 186 throw new Error("[WebviewController.zoomOut] - method not implemented.") 187 } 188 getHitTestValue(): HitTestValue { 189 throw new Error("[WebviewController.getHitTestValue] - method not implemented.") 190 } 191 getWebId(): number { 192 throw new Error("[WebviewController.getWebId] - method not implemented.") 193 } 194 getUserAgent(): string { 195 throw new Error("[WebviewController.getUserAgent] - method not implemented.") 196 } 197 getTitle(): string { 198 throw new Error("[WebviewController.getTitle] - method not implemented.") 199 } 200 getPageHeight(): number { 201 throw new Error("[WebviewController.getPageHeight] - method not implemented.") 202 } 203 backOrForward(step: number): void { 204 throw new Error("[WebviewController.backOrForward] - method not implemented.") 205 } 206 requestFocus(): void { 207 throw new Error("[WebviewController.requestFocus] - method not implemented.") 208 } 209 createWebMessagePorts(isExtentionType?: boolean): Array<WebMessagePort> { 210 throw new Error("[WebviewController.createWebMessagePorts] - method not implemented.") 211 } 212 postMessage(name: string, ports: Array<WebMessagePort>, uri: string): void { 213 throw new Error("[WebviewController.postMessage] - method not implemented.") 214 } 215 stop(): void { 216 throw new Error("[WebviewController.stop] - method not implemented.") 217 } 218 registerJavaScriptProxy(object: object, name: string, methodList: Array<string>): void { 219 throw new Error("[WebviewController.registerJavaScriptProxy] - method not implemented.") 220 } 221 deleteJavaScriptRegister(name: string): void { 222 throw new Error("[WebviewController.deleteJavaScriptRegister] - method not implemented.") 223 } 224 searchAllAsync(searchString: string): void { 225 throw new Error("[WebviewController.searchAllAsync] - method not implemented.") 226 } 227 clearMatches(): void { 228 throw new Error("[WebviewController.clearMatches] - method not implemented.") 229 } 230 searchNext(forward: boolean): void { 231 throw new Error("[WebviewController.searchNext] - method not implemented.") 232 } 233 clearSslCache(): void { 234 throw new Error("[WebviewController.clearSslCache] - method not implemented.") 235 } 236 clearClientAuthenticationCache(): void { 237 throw new Error("[WebviewController.clearClientAuthenticationCache] - method not implemented.") 238 } 239 runJavaScriptPromise(script: string): Promise<string> { 240 throw new Error("[WebviewController.runJavaScript] - method not implemented.") 241 } 242 runJavaScriptAsync(script: string, callback: AsyncCallback<string>): void { 243 throw new Error("[WebviewController.runJavaScript] - method not implemented.") 244 } 245 runJavaScriptExtPromise(script: string): Promise<JsMessageExt> { 246 throw new Error("[WebviewController.runJavaScriptExt] - method not implemented.") 247 } 248 runJavaScriptExtAsync(script: string, callback: AsyncCallback<JsMessageExt>): void { 249 throw new Error("[WebviewController.runJavaScriptExt] - method not implemented.") 250 } 251 getUrl(): string { 252 throw new Error("[WebviewController.getUrl] - method not implemented.") 253 } 254 pageUp(top: boolean): void { 255 throw new Error("[WebviewController.pageUp] - method not implemented.") 256 } 257 pageDown(bottom: boolean): void { 258 throw new Error("[WebviewController.pageDown] - method not implemented.") 259 } 260 getOriginalUrl(): string { 261 throw new Error("[WebviewController.getOriginalUrl] - method not implemented.") 262 } 263 getFavicon(): PixelMap { 264 throw new Error("[WebviewController.getFavicon] - method not implemented.") 265 } 266 setNetworkAvailable(enable: boolean): void { 267 throw new Error("[WebviewController.setNetworkAvailable] - method not implemented.") 268 } 269 hasImagePromise(): Promise<boolean> { 270 throw new Error("[WebviewController.hasImage] - method not implemented.") 271 } 272 hasImageAsync(callback: AsyncCallback<boolean>): void { 273 throw new Error("[WebviewController.hasImage] - method not implemented.") 274 } 275 getBackForwardEntries(): BackForwardList { 276 throw new Error("[WebviewController.getBackForwardEntries] - method not implemented.") 277 } 278 removeCache(clearRom: boolean): void { 279 throw new Error("[WebviewController.removeCache] - method not implemented.") 280 } 281 scrollTo(x: number, y: number): void { 282 throw new Error("[WebviewController.scrollTo] - method not implemented.") 283 } 284 scrollBy(deltaX: number, deltaY: number): void { 285 throw new Error("[WebviewController.scrollBy] - method not implemented.") 286 } 287 slideScroll(vx: number, vy: number): void { 288 throw new Error("[WebviewController.slideScroll] - method not implemented.") 289 } 290 serializeWebState(): Uint8Array { 291 throw new Error("[WebviewController.serializeWebState] - method not implemented.") 292 } 293 restoreWebState(state: Uint8Array): void { 294 throw new Error("[WebviewController.restoreWebState] - method not implemented.") 295 } 296 static customizeSchemes(schemes: Array<WebCustomScheme>): void { 297 throw new Error("[WebviewController.static] - method not implemented.") 298 } 299 getCertificatePromise(): Promise<Array<cert.X509Cert>> { 300 throw new Error("[WebviewController.getCertificate] - method not implemented.") 301 } 302 getCertificateAsync(callback: AsyncCallback<Array<cert.X509Cert>>): void { 303 throw new Error("[WebviewController.getCertificate] - method not implemented.") 304 } 305 setAudioMuted(mute: boolean): void { 306 throw new Error("[WebviewController.setAudioMuted] - method not implemented.") 307 } 308 prefetchPage(url: string, additionalHeaders?: Array<WebHeader>): void { 309 throw new Error("[WebviewController.prefetchPage] - method not implemented.") 310 } 311 static prepareForPageLoad(url: string, preconnectable: boolean, numSockets: number): void { 312 throw new Error("[WebviewController.static] - method not implemented.") 313 } 314 setCustomUserAgent(userAgent: string): void { 315 throw new Error("[WebviewController.setCustomUserAgent] - method not implemented.") 316 } 317 getCustomUserAgent(): string { 318 throw new Error("[WebviewController.getCustomUserAgent] - method not implemented.") 319 } 320 } 321} 322 323abstract class TextContentControllerBase { 324 getCaretOffset(): CaretOffset { 325 throw new Error("[TextContentControllerBase.getCaretOffset] - method not implemented.") 326 } 327 getTextContentRect(): RectResult { 328 throw new Error("[TextContentControllerBase.getTextContentRect] - method not implemented.") 329 } 330 getTextContentLineCount(): number { 331 throw new Error("[TextContentControllerBase.getTextContentLineCount] - method not implemented.") 332 } 333} 334 335export class TextInputController { 336 private nativePointer: pointer = nullptr 337 setNativeController(node: pointer) { 338 // TODO: refactor code accordingly to Serializer 339 // this.nativePointer = ArkUIGeneratedNativeModule._TextInputController_Get_(node) 340 } 341 caretPosition(value: number): void { 342 throw new Error("[TextInputController.caretPosition] - method not implemented.") 343 } 344 setTextSelection(selectionStart: number, selectionEnd: number): void { 345 throw new Error("[TextInputController.setTextSelection] - method not implemented.") 346 } 347 stopEditing(): void { 348 throw new Error("[TextInputController.stopEditing] - method not implemented.") 349 } 350} 351 352export class TextClockController { 353 private nativePointer: pointer = nullptr 354 constructor() { 355 } 356 start() { 357 if (this.nativePointer) { 358 ArkUIGeneratedNativeModule._TextClockController_start(this.nativePointer) 359 } 360 } 361 stop() { 362 if (this.nativePointer) { 363 ArkUIGeneratedNativeModule._TextClockController_stop(this.nativePointer) 364 } 365 } 366 setNativeController(TextClockNode: pointer) { 367 // TODO: refactor code accordingly to Serializer 368 // this.nativePointer = ArkUIGeneratedNativeModule._TextClockController_Get_(TextClockNode) 369 } 370} 371 372export class TextTimerController { 373 private nativePointer: pointer = nullptr 374 constructor() { 375 } 376 start() { 377 if (this.nativePointer) { 378 ArkUIGeneratedNativeModule._TextTimerController_start(this.nativePointer) 379 } 380 } 381 pause() { 382 if (this.nativePointer) { 383 ArkUIGeneratedNativeModule._TextTimerController_pause(this.nativePointer) 384 } 385 } 386 reset() { 387 if (this.nativePointer) { 388 ArkUIGeneratedNativeModule._TextTimerController_reset(this.nativePointer) 389 } 390 } 391 setNativeController(TextTimer: pointer) { 392 // TODO: refactor code accordingly to Serializer 393 // this.nativePointer = ArkUIGeneratedNativeModule._TextTimerController_Get_(TextTimer) 394 } 395} 396 397export class RichEditorController { 398 private nativePointer: pointer = nullptr 399 setNativeController(node: pointer) { 400 // TODO: refactor code accordingly to Serializer 401 // this.nativePointer = ArkUIGeneratedNativeModule._RichEditorController_Get_(node) 402 } 403 404 getCaretOffset(): number { 405 throw new Error("Method not implemented."); 406 } 407 setCaretOffset(offset: number): boolean { 408 throw new Error("Method not implemented."); 409 } 410 addTextSpan(value: string, options?: RichEditorTextSpanOptions | undefined): number { 411 throw new Error("Method not implemented."); 412 } 413 addImageSpan(value: PixelMap | ResourceStr, options?: RichEditorImageSpanOptions | undefined): number { 414 throw new Error("Method not implemented."); 415 } 416 updateSpanStyle(value: RichEditorUpdateTextSpanStyleOptions | RichEditorUpdateImageSpanStyleOptions): void { 417 throw new Error("Method not implemented."); 418 } 419 deleteSpans(value?: RichEditorRange | undefined): void { 420 throw new Error("Method not implemented."); 421 } 422 getSpans(value?: RichEditorRange | undefined): (RichEditorTextSpanResult | RichEditorImageSpanResult)[] { 423 throw new Error("Method not implemented."); 424 } 425 closeSelectionMenu(): void { 426 throw new Error("Method not implemented."); 427 } 428} 429 430export class TextAreaController { 431 private nativePointer: pointer = nullptr 432 constructor() { 433 } 434 caretPosition(value: number): void { 435 throw new Error("Method not implemented."); 436 } 437 setTextSelection(selectionStart: number, selectionEnd: number): void { 438 throw new Error("Method not implemented."); 439 } 440 stopEditing(): void { 441 throw new Error("Method not implemented."); 442 } 443 getCaretOffset(): CaretOffset { 444 throw new Error("Method not implemented."); 445 } 446 getTextContentRect(): RectResult { 447 throw new Error("Method not implemented."); 448 } 449 getTextContentLineCount(): number { 450 throw new Error("Method not implemented."); 451 } 452 setNativeController(TextArea: pointer) { 453 // TODO: refactor code accordingly to Serializer 454 // this.nativePointer = ArkUIGeneratedNativeModule._TextAreaController_Get_(TextArea) 455 } 456} 457 458export class SwiperController { 459 private nativePointer: pointer = nullptr 460 461 constructor() { 462 } 463 464 showNext(): void { 465 throw new Error("Method not implemented.") 466 } 467 showPrevious(): void { 468 throw new Error("Method not implemented.") 469 } 470 changeIndex(index: number, useAnimation?: boolean): void { 471 throw new Error("Method not implemented.") 472 } 473 finishAnimation(callback?: () => void): void { 474 throw new Error("Method not implemented.") 475 } 476} 477 478