@react-native-ohos/react-native-webview 13.10.5-rc.2 → 13.10.5-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@
6
6
  "name": "@react-native-ohos/react-native-webview",
7
7
  "description": "main cpai architecture",
8
8
  "main": "index.ets",
9
- "version": "13.10.5-rc.2",
9
+ "version": "13.10.5-rc.4",
10
10
  "dependencies": {
11
11
  "@rnoh/react-native-openharmony": "0.72.59"
12
12
  }
@@ -28,6 +28,7 @@ import { url as OSUrl } from '@kit.ArkTS';
28
28
  import { RNC, TM } from './generated';
29
29
  import Logger from './Logger';
30
30
  import { BaseOperate } from './WebViewBaseOperate';
31
+ import { deviceInfo } from '@kit.BasicServicesKit';
31
32
  import {
32
33
  AlertEvent,
33
34
  CACHE_MODE,
@@ -370,6 +371,14 @@ export struct RNCWebView {
370
371
  return getContext(this).resourceManager.getStringSync(resource)
371
372
  }
372
373
 
374
+ onLoadFinished() {
375
+ this.onLoadingFinish()
376
+ }
377
+
378
+ onPageEndExecuteRunInjectedJavaScript(){
379
+ this.runInjectedJavaScript()
380
+ }
381
+
373
382
  onPageEnd() {
374
383
  this.runInjectedJavaScript()
375
384
  this.onLoadingFinish()
@@ -421,78 +430,153 @@ export struct RNCWebView {
421
430
 
422
431
  build() {
423
432
  Stack() {
424
- Web({ src: "", controller: this.controller, renderMode: this.renderMode })
425
- .mixedMode(this.mode)
426
- .onPermissionRequest((event: OnPermissionRequestEvent) => {
427
- if (event && (this.getPermissionDialogMessage(event) != "TYPE_SENSOR")) {
428
- AlertDialog.show({
429
- title: this.resourceToString($r('app.string.on_confirm')) + event.request.getOrigin(),
430
- message: this.getPermissionDialogMessage(event),
431
- alignment: DialogAlignment.Center,
432
- primaryButton: {
433
- value: $r('app.string.deny'),
434
- action: () => {
435
- event.request.deny();
436
- }
437
- },
438
- secondaryButton: {
439
- value: $r('app.string.on_confirm'),
440
- action: () => {
441
- event.request.grant(event.request.getAccessibleResource());
442
- }
443
- },
444
- cancel: () => {
445
- event.request.deny();
433
+ if ( deviceInfo.sdkApiVersion >= 20) {
434
+ Web({ src: "", controller: this.controller, renderMode: this.renderMode })
435
+ .mixedMode(this.mode)
436
+ .onPermissionRequest((event: OnPermissionRequestEvent) => {
437
+ if (event && (this.getPermissionDialogMessage(event) != "TYPE_SENSOR")) {
438
+ AlertDialog.show({
439
+ title: this.resourceToString($r('app.string.on_confirm')) + event.request.getOrigin(),
440
+ message: this.getPermissionDialogMessage(event),
441
+ alignment: DialogAlignment.Center,
442
+ primaryButton: {
443
+ value: $r('app.string.deny'),
444
+ action: () => {
445
+ event.request.deny();
446
+ }
447
+ },
448
+ secondaryButton: {
449
+ value: $r('app.string.on_confirm'),
450
+ action: () => {
451
+ event.request.grant(event.request.getAccessibleResource());
452
+ }
453
+ },
454
+ cancel: () => {
455
+ event.request.deny();
456
+ }
457
+ })
458
+ }
459
+ })
460
+ .width(this.webviewWidth)
461
+ .height(this.webviewHeight)
462
+ .fileAccess(this.allowFileAccess)
463
+ .constraintSize({ minHeight: MINHEIGHT })
464
+ .overScrollMode(this.overScrollMode)
465
+ .javaScriptAccess(this.javaScriptEnable)
466
+ .javaScriptOnDocumentStart(this.injectedJavaScriptBeforeContentLoaded)
467
+ .horizontalScrollBarAccess(this.descriptorWrapper.rawProps.showsHorizontalScrollIndicator)
468
+ .verticalScrollBarAccess(this.descriptorWrapper.rawProps.showsVerticalScrollIndicator)
469
+ .overviewModeAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
470
+ .textZoomRatio(this.descriptorWrapper.rawProps.textZoom)
471
+ .backgroundColor(BaseOperate.getColorMode(this.ctx.uiAbilityContext,
472
+ this.descriptorWrapper.rawProps.forceDarkOn) === WebDarkMode.On ? Color.White : Color.Transparent)
473
+ .darkMode(BaseOperate.getColorMode(this.ctx.uiAbilityContext, this.descriptorWrapper.rawProps.forceDarkOn))
474
+ .forceDarkAccess(this.forceDark)
475
+ .cacheMode(this.cacheMode)
476
+ .minFontSize(this.minFontSize)
477
+ .domStorageAccess(this.descriptorWrapper.rawProps.domStorageEnabled)
478
+ .zoomAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
479
+ .overScrollMode(this.overScrollMode)
480
+ .onProgressChange((event: OnProgressChangeEvent) => this.onProgressChange(event))
481
+ .onScroll((event: OnScrollEvent) => this.webViewBaseOperate?.emitScroll(event))
482
+ .nestedScroll({
483
+ scrollForward: this.nestedScroll,
484
+ scrollBackward: this.nestedScroll,
485
+ })
486
+ .onLoadStarted(() => this.onPageBegin())
487
+ .onLoadFinished(() => this.onLoadFinished())
488
+ .onPageEnd(() => {this.onPageEndExecuteRunInjectedJavaScript()})
489
+ .onErrorReceive((event: OnErrorReceiveEvent) => this.webViewBaseOperate?.emitLoadingError(event))
490
+ .onHttpErrorReceive((event: OnHttpErrorReceiveEvent) => this.webViewBaseOperate?.emitHttpError(event))
491
+ .onControllerAttached(() => this.controllerAttachedInit())
492
+ .onAlert((event: AlertEvent) => this.onJavascriptAlert(event))
493
+ .onConfirm((event: AlertEvent) => this.onJavascriptConfirm(event))
494
+ .onDownloadStart((event: OnDownloadStartEvent) => this.webViewBaseOperate?.onDownloadStart(event))
495
+ .geolocationAccess(this.descriptorWrapper.rawProps.geolocationEnabled)
496
+ .onGeolocationShow((event) => {
497
+ if (event && (this.descriptorWrapper.rawProps.geolocationEnabled != undefined)) {
498
+ event.geolocation.invoke(event.origin, this.descriptorWrapper.rawProps.geolocationEnabled, true);
499
+ }
500
+ })
501
+ .mediaPlayGestureAccess(this.descriptorWrapper.rawProps.mediaPlaybackRequiresUserAction)
502
+ .onRenderExited((event: OnRenderExitedEvent) => this.webViewBaseOperate?.onRenderExited(event))
503
+ .onLoadIntercept((event: OnLoadInterceptEvent) => this.onLoadIntercept(event))
504
+ .onTitleReceive((event: OnTitleReceiveEvent) => this.webViewBaseOperate?.onTitleReceive(event))
505
+ } else {
506
+ Web({ src: "", controller: this.controller, renderMode: this.renderMode })
507
+ .mixedMode(this.mode)
508
+ .onPermissionRequest((event: OnPermissionRequestEvent) => {
509
+ if (event && (this.getPermissionDialogMessage(event) != "TYPE_SENSOR")) {
510
+ AlertDialog.show({
511
+ title: this.resourceToString($r('app.string.on_confirm')) + event.request.getOrigin(),
512
+ message: this.getPermissionDialogMessage(event),
513
+ alignment: DialogAlignment.Center,
514
+ primaryButton: {
515
+ value: $r('app.string.deny'),
516
+ action: () => {
517
+ event.request.deny();
518
+ }
519
+ },
520
+ secondaryButton: {
521
+ value: $r('app.string.on_confirm'),
522
+ action: () => {
523
+ event.request.grant(event.request.getAccessibleResource());
524
+ }
525
+ },
526
+ cancel: () => {
527
+ event.request.deny();
528
+ }
529
+ })
446
530
  }
447
531
  })
448
- }
449
- })
450
532
 
451
- .width(this.webviewWidth)
452
- .height(this.webviewHeight)
453
- .fileAccess(this.allowFileAccess)
454
- .constraintSize({ minHeight: MINHEIGHT })
455
- .overScrollMode(this.overScrollMode)
456
- .javaScriptAccess(this.javaScriptEnable)
457
- .javaScriptOnDocumentStart(this.injectedJavaScriptBeforeContentLoaded)
458
- .horizontalScrollBarAccess(this.descriptorWrapper.rawProps.showsHorizontalScrollIndicator)
459
- .verticalScrollBarAccess(this.descriptorWrapper.rawProps.showsVerticalScrollIndicator)
460
- .overviewModeAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
461
- .textZoomRatio(this.descriptorWrapper.rawProps.textZoom)
462
- .backgroundColor(BaseOperate.getColorMode(this.ctx.uiAbilityContext,
463
- this.descriptorWrapper.rawProps.forceDarkOn) === WebDarkMode.On ? Color.White : Color.Transparent)
464
- .darkMode(BaseOperate.getColorMode(this.ctx.uiAbilityContext, this.descriptorWrapper.rawProps.forceDarkOn))
465
- .forceDarkAccess(this.forceDark)
466
- .cacheMode(this.cacheMode)
467
- .minFontSize(this.minFontSize)
468
- .domStorageAccess(this.descriptorWrapper.rawProps.domStorageEnabled)
469
- .zoomAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
470
- .overScrollMode(this.overScrollMode)
471
- .onProgressChange((event: OnProgressChangeEvent) => this.onProgressChange(event))
472
- .onScroll((event: OnScrollEvent) => this.webViewBaseOperate?.emitScroll(event))
473
- .nestedScroll({
474
- scrollForward: this.nestedScroll,
475
- scrollBackward: this.nestedScroll,
476
- })
477
- .onLoadStarted(() => this.onPageBegin())
478
- .onLoadFinished(() => this.onPageEnd())
479
- .onErrorReceive((event: OnErrorReceiveEvent) => this.webViewBaseOperate?.emitLoadingError(event))
480
- .onHttpErrorReceive((event: OnHttpErrorReceiveEvent) => this.webViewBaseOperate?.emitHttpError(event))
481
- .onControllerAttached(() => this.controllerAttachedInit())
482
- .onAlert((event: AlertEvent) => this.onJavascriptAlert(event))
483
- .onConfirm((event: AlertEvent) => this.onJavascriptConfirm(event))
484
- .onDownloadStart((event: OnDownloadStartEvent) => this.webViewBaseOperate?.onDownloadStart(event))
485
- .geolocationAccess(this.descriptorWrapper.rawProps.geolocationEnabled)
486
- .onGeolocationShow((event) => {
487
- if (event && (this.descriptorWrapper.rawProps.geolocationEnabled != undefined)) {
488
- event.geolocation.invoke(event.origin, this.descriptorWrapper.rawProps.geolocationEnabled, true);
533
+ .width(this.webviewWidth)
534
+ .height(this.webviewHeight)
535
+ .fileAccess(this.allowFileAccess)
536
+ .constraintSize({ minHeight: MINHEIGHT })
537
+ .overScrollMode(this.overScrollMode)
538
+ .javaScriptAccess(this.javaScriptEnable)
539
+ .javaScriptOnDocumentStart(this.injectedJavaScriptBeforeContentLoaded)
540
+ .horizontalScrollBarAccess(this.descriptorWrapper.rawProps.showsHorizontalScrollIndicator)
541
+ .verticalScrollBarAccess(this.descriptorWrapper.rawProps.showsVerticalScrollIndicator)
542
+ .overviewModeAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
543
+ .textZoomRatio(this.descriptorWrapper.rawProps.textZoom)
544
+ .backgroundColor(BaseOperate.getColorMode(this.ctx.uiAbilityContext,
545
+ this.descriptorWrapper.rawProps.forceDarkOn) === WebDarkMode.On ? Color.White : Color.Transparent)
546
+ .darkMode(BaseOperate.getColorMode(this.ctx.uiAbilityContext, this.descriptorWrapper.rawProps.forceDarkOn))
547
+ .forceDarkAccess(this.forceDark)
548
+ .cacheMode(this.cacheMode)
549
+ .minFontSize(this.minFontSize)
550
+ .domStorageAccess(this.descriptorWrapper.rawProps.domStorageEnabled)
551
+ .zoomAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
552
+ .overScrollMode(this.overScrollMode)
553
+ .onProgressChange((event: OnProgressChangeEvent) => this.onProgressChange(event))
554
+ .onScroll((event: OnScrollEvent) => this.webViewBaseOperate?.emitScroll(event))
555
+ .nestedScroll({
556
+ scrollForward: this.nestedScroll,
557
+ scrollBackward: this.nestedScroll,
558
+ })
559
+ .onPageBegin(() => this.onPageBegin())
560
+ .onPageEnd(() => this.onPageEnd())
561
+ .onErrorReceive((event: OnErrorReceiveEvent) => this.webViewBaseOperate?.emitLoadingError(event))
562
+ .onHttpErrorReceive((event: OnHttpErrorReceiveEvent) => this.webViewBaseOperate?.emitHttpError(event))
563
+ .onControllerAttached(() => this.controllerAttachedInit())
564
+ .onAlert((event: AlertEvent) => this.onJavascriptAlert(event))
565
+ .onConfirm((event: AlertEvent) => this.onJavascriptConfirm(event))
566
+ .onDownloadStart((event: OnDownloadStartEvent) => this.webViewBaseOperate?.onDownloadStart(event))
567
+ .geolocationAccess(this.descriptorWrapper.rawProps.geolocationEnabled)
568
+ .onGeolocationShow((event) => {
569
+ if (event && (this.descriptorWrapper.rawProps.geolocationEnabled != undefined)) {
570
+ event.geolocation.invoke(event.origin, this.descriptorWrapper.rawProps.geolocationEnabled, true);
571
+ }
572
+ })
573
+ .mediaPlayGestureAccess(this.descriptorWrapper.rawProps.mediaPlaybackRequiresUserAction)
574
+ .onRenderExited((event: OnRenderExitedEvent) => this.webViewBaseOperate?.onRenderExited(event))
575
+ .onLoadIntercept((event: OnLoadInterceptEvent) => this.onLoadIntercept(event))
576
+ .onTitleReceive((event: OnTitleReceiveEvent) => this.webViewBaseOperate?.onTitleReceive(event))
577
+
489
578
  }
490
- })
491
- .mediaPlayGestureAccess(this.descriptorWrapper.rawProps.mediaPlaybackRequiresUserAction)
492
- .onRenderExited((event: OnRenderExitedEvent) => this.webViewBaseOperate?.onRenderExited(event))
493
- .onLoadIntercept((event: OnLoadInterceptEvent) => this.onLoadIntercept(event))
494
- .onTitleReceive((event: OnTitleReceiveEvent) => this.webViewBaseOperate?.onTitleReceive(event))
495
- }
579
+ }
496
580
  .width(this.webviewWidth)
497
581
  .height(this.webviewHeight)
498
582
  .position({
Binary file
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "Thibault Malbranche <malbranche.thibault@gmail.com>"
10
10
  ],
11
11
  "license": "MIT",
12
- "version": "13.10.5-rc.2",
12
+ "version": "13.10.5-rc.4",
13
13
  "homepage": "https://github.com/react-native-oh-library/react-native-webview#readme",
14
14
  "scripts": {
15
15
  "macos": "react-native run-macos --scheme WebviewExample --project-path example/macos",