@react-native-ohos/react-native-webview 13.15.1-rc.3 → 13.15.1-rc.5

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.15.1-rc.3",
9
+ "version": "13.15.1-rc.5",
10
10
  "dependencies": {
11
11
  "@rnoh/react-native-openharmony": "../react_native_openharmony.har"
12
12
  }
@@ -8,6 +8,7 @@ import { url as OSUrl } from '@kit.ArkTS';
8
8
  import { RNC, TM } from './generated';
9
9
  import Logger from './Logger';
10
10
  import { BaseOperate } from './WebViewBaseOperate';
11
+ import { deviceInfo } from '@kit.BasicServicesKit';
11
12
  import {
12
13
  AlertEvent,
13
14
  CACHE_MODE,
@@ -26,7 +27,7 @@ import {
26
27
  MINHEIGHT,
27
28
  } from './Magic';
28
29
 
29
- import { bundleManager } from '@kit.AbilityKit';
30
+ import { abilityAccessCtrl, bundleManager } from '@kit.AbilityKit';
30
31
  import { WebViewTurboModule, ShouldStartParams, ShouldOverrideCallbackState } from './WebViewTurboModule';
31
32
  import { AnyThreadRNInstance, WorkerTaskRunnable } from '@rnoh/react-native-openharmony/src/main/ets/RNOH';
32
33
  import buffer from '@ohos.buffer';
@@ -42,6 +43,8 @@ class WorkerRunnable implements WorkerTaskRunnable<ShouldStartParams> {
42
43
  }
43
44
  }
44
45
 
46
+ let atManager = abilityAccessCtrl.createAtManager();
47
+
45
48
  @Component
46
49
  export struct RNCWebView {
47
50
  public static readonly NAME = RNC.RNCWebView.NAME
@@ -116,6 +119,10 @@ export struct RNCWebView {
116
119
  }
117
120
  })
118
121
  }
122
+ atManager.requestPermissionsFromUser(this.ctx.uiAbilityContext, ["ohos.permission.APPROXIMATELY_LOCATION"]).then((data) => {
123
+ }).catch((error: BusinessError) => {
124
+ console.error(`Failed to request permissions from user. Code is ${error.code}, message is ${error.message}`);
125
+ })
119
126
  } catch (error) {
120
127
  Logger.error(TAG, `[RNOH]Errorcode: ${error.code}, Message: ${error.message}`);
121
128
  }
@@ -273,6 +280,7 @@ export struct RNCWebView {
273
280
  this.webViewBaseOperate.setCustomUserAgent(this.descriptorWrapper.rawProps.userAgent,
274
281
  this.descriptorWrapper.rawProps.applicationNameForUserAgent)
275
282
  this.webViewBaseOperate.setFraudulentWebsiteWarningEnabled(this.descriptorWrapper.rawProps.fraudulentWebsiteWarningEnabled)
283
+
276
284
  let baseUrl = this.source.baseUrl
277
285
  let uri = this.source.uri
278
286
  if (this.source.html != undefined && this.source.html != "") {
@@ -381,78 +389,152 @@ export struct RNCWebView {
381
389
 
382
390
  build() {
383
391
  Stack() {
384
- Web({ src: "", controller: this.controller, renderMode: this.renderMode })
385
- .mixedMode(this.mode)
386
- .onPermissionRequest((event: OnPermissionRequestEvent) => {
387
- if (event && (this.getPermissionDialogMessage(event) != "TYPE_SENSOR")) {
388
- AlertDialog.show({
389
- title: this.resourceToString($r('app.string.on_confirm')) + event.request.getOrigin(),
390
- message: this.getPermissionDialogMessage(event),
391
- alignment: DialogAlignment.Center,
392
- primaryButton: {
393
- value: $r('app.string.deny'),
394
- action: () => {
395
- event.request.deny();
396
- }
397
- },
398
- secondaryButton: {
399
- value: $r('app.string.on_confirm'),
400
- action: () => {
401
- event.request.grant(event.request.getAccessibleResource());
402
- }
403
- },
404
- cancel: () => {
405
- event.request.deny();
392
+ if ( deviceInfo.sdkApiVersion >= 20) {
393
+ Web({ src: "", controller: this.controller, renderMode: this.renderMode })
394
+ .mixedMode(this.mode)
395
+ .onPermissionRequest((event: OnPermissionRequestEvent) => {
396
+ if (event && (this.getPermissionDialogMessage(event) != "TYPE_SENSOR")) {
397
+ AlertDialog.show({
398
+ title: this.resourceToString($r('app.string.on_confirm')) + event.request.getOrigin(),
399
+ message: this.getPermissionDialogMessage(event),
400
+ alignment: DialogAlignment.Center,
401
+ primaryButton: {
402
+ value: $r('app.string.deny'),
403
+ action: () => {
404
+ event.request.deny();
405
+ }
406
+ },
407
+ secondaryButton: {
408
+ value: $r('app.string.on_confirm'),
409
+ action: () => {
410
+ event.request.grant(event.request.getAccessibleResource());
411
+ }
412
+ },
413
+ cancel: () => {
414
+ event.request.deny();
415
+ }
416
+ })
417
+ }
418
+ })
419
+ .width(this.webviewWidth)
420
+ .height(this.webviewHeight)
421
+ .fileAccess(this.allowFileAccess)
422
+ .constraintSize({ minHeight: MINHEIGHT })
423
+ .overScrollMode(this.overScrollMode)
424
+ .javaScriptAccess(this.javaScriptEnable)
425
+ .javaScriptOnDocumentStart(this.injectedJavaScriptBeforeContentLoaded)
426
+ .horizontalScrollBarAccess(this.descriptorWrapper.rawProps.showsHorizontalScrollIndicator)
427
+ .verticalScrollBarAccess(this.descriptorWrapper.rawProps.showsVerticalScrollIndicator)
428
+ .overviewModeAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
429
+ .textZoomRatio(this.descriptorWrapper.rawProps.textZoom)
430
+ .backgroundColor(BaseOperate.getColorMode(this.ctx.uiAbilityContext,
431
+ this.descriptorWrapper.rawProps.forceDarkOn) === WebDarkMode.On ? Color.White : Color.Transparent)
432
+ .darkMode(BaseOperate.getColorMode(this.ctx.uiAbilityContext, this.descriptorWrapper.rawProps.forceDarkOn))
433
+ .forceDarkAccess(this.forceDark)
434
+ .cacheMode(this.cacheMode)
435
+ .minFontSize(this.minFontSize)
436
+ .domStorageAccess(this.descriptorWrapper.rawProps.domStorageEnabled)
437
+ .zoomAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
438
+ .overScrollMode(this.overScrollMode)
439
+ .onProgressChange((event: OnProgressChangeEvent) => this.onProgressChange(event))
440
+ .onScroll((event: OnScrollEvent) => this.webViewBaseOperate?.emitScroll(event))
441
+ .nestedScroll({
442
+ scrollForward: this.nestedScroll,
443
+ scrollBackward: this.nestedScroll,
444
+ })
445
+ .onLoadStarted(() => this.onPageBegin())
446
+ .onLoadFinished(() => this.onPageEnd())
447
+ .onErrorReceive((event: OnErrorReceiveEvent) => this.webViewBaseOperate?.emitLoadingError(event))
448
+ .onHttpErrorReceive((event: OnHttpErrorReceiveEvent) => this.webViewBaseOperate?.emitHttpError(event))
449
+ .onControllerAttached(() => this.controllerAttachedInit())
450
+ .onAlert((event: AlertEvent) => this.onJavascriptAlert(event))
451
+ .onConfirm((event: AlertEvent) => this.onJavascriptConfirm(event))
452
+ .onDownloadStart((event: OnDownloadStartEvent) => this.webViewBaseOperate?.onDownloadStart(event))
453
+ .geolocationAccess(this.descriptorWrapper.rawProps.geolocationEnabled)
454
+ .onGeolocationShow((event) => {
455
+ if (event && (this.descriptorWrapper.rawProps.geolocationEnabled != undefined)) {
456
+ event.geolocation.invoke(event.origin, this.descriptorWrapper.rawProps.geolocationEnabled, true);
457
+ }
458
+ })
459
+ .mediaPlayGestureAccess(this.descriptorWrapper.rawProps.mediaPlaybackRequiresUserAction)
460
+ .onRenderExited((event: OnRenderExitedEvent) => this.webViewBaseOperate?.onRenderExited(event))
461
+ .onLoadIntercept((event: OnLoadInterceptEvent) => this.onLoadIntercept(event))
462
+ .onTitleReceive((event: OnTitleReceiveEvent) => this.webViewBaseOperate?.onTitleReceive(event))
463
+ } else {
464
+ Web({ src: "", controller: this.controller, renderMode: this.renderMode })
465
+ .mixedMode(this.mode)
466
+ .onPermissionRequest((event: OnPermissionRequestEvent) => {
467
+ if (event && (this.getPermissionDialogMessage(event) != "TYPE_SENSOR")) {
468
+ AlertDialog.show({
469
+ title: this.resourceToString($r('app.string.on_confirm')) + event.request.getOrigin(),
470
+ message: this.getPermissionDialogMessage(event),
471
+ alignment: DialogAlignment.Center,
472
+ primaryButton: {
473
+ value: $r('app.string.deny'),
474
+ action: () => {
475
+ event.request.deny();
476
+ }
477
+ },
478
+ secondaryButton: {
479
+ value: $r('app.string.on_confirm'),
480
+ action: () => {
481
+ event.request.grant(event.request.getAccessibleResource());
482
+ }
483
+ },
484
+ cancel: () => {
485
+ event.request.deny();
486
+ }
487
+ })
406
488
  }
407
489
  })
408
- }
409
- })
410
490
 
411
- .width(this.webviewWidth)
412
- .height(this.webviewHeight)
413
- .fileAccess(this.allowFileAccess)
414
- .constraintSize({ minHeight: MINHEIGHT })
415
- .overScrollMode(this.overScrollMode)
416
- .javaScriptAccess(this.javaScriptEnable)
417
- .javaScriptOnDocumentStart(this.injectedJavaScriptBeforeContentLoaded)
418
- .horizontalScrollBarAccess(this.descriptorWrapper.rawProps.showsHorizontalScrollIndicator)
419
- .verticalScrollBarAccess(this.descriptorWrapper.rawProps.showsVerticalScrollIndicator)
420
- .overviewModeAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
421
- .textZoomRatio(this.descriptorWrapper.rawProps.textZoom)
422
- .backgroundColor(BaseOperate.getColorMode(this.ctx.uiAbilityContext,
423
- this.descriptorWrapper.rawProps.forceDarkOn) === WebDarkMode.On ? Color.White : Color.Transparent)
424
- .darkMode(BaseOperate.getColorMode(this.ctx.uiAbilityContext, this.descriptorWrapper.rawProps.forceDarkOn))
425
- .forceDarkAccess(this.forceDark)
426
- .cacheMode(this.cacheMode)
427
- .minFontSize(this.minFontSize)
428
- .domStorageAccess(this.descriptorWrapper.rawProps.domStorageEnabled)
429
- .zoomAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
430
- .overScrollMode(this.overScrollMode)
431
- .onProgressChange((event: OnProgressChangeEvent) => this.onProgressChange(event))
432
- .onScroll((event: OnScrollEvent) => this.webViewBaseOperate?.emitScroll(event))
433
- .nestedScroll({
434
- scrollForward: this.nestedScroll,
435
- scrollBackward: this.nestedScroll,
436
- })
437
- .onPageBegin(() => this.onPageBegin())
438
- .onPageEnd(() => this.onPageEnd())
439
- .onErrorReceive((event: OnErrorReceiveEvent) => this.webViewBaseOperate?.emitLoadingError(event))
440
- .onHttpErrorReceive((event: OnHttpErrorReceiveEvent) => this.webViewBaseOperate?.emitHttpError(event))
441
- .onControllerAttached(() => this.controllerAttachedInit())
442
- .onAlert((event: AlertEvent) => this.onJavascriptAlert(event))
443
- .onConfirm((event: AlertEvent) => this.onJavascriptConfirm(event))
444
- .onDownloadStart((event: OnDownloadStartEvent) => this.webViewBaseOperate?.onDownloadStart(event))
445
- .geolocationAccess(this.descriptorWrapper.rawProps.geolocationEnabled)
446
- .onGeolocationShow((event) => {
447
- if (event && (this.descriptorWrapper.rawProps.geolocationEnabled != undefined)) {
448
- event.geolocation.invoke(event.origin, this.descriptorWrapper.rawProps.geolocationEnabled, true);
491
+ .width(this.webviewWidth)
492
+ .height(this.webviewHeight)
493
+ .fileAccess(this.allowFileAccess)
494
+ .constraintSize({ minHeight: MINHEIGHT })
495
+ .overScrollMode(this.overScrollMode)
496
+ .javaScriptAccess(this.javaScriptEnable)
497
+ .javaScriptOnDocumentStart(this.injectedJavaScriptBeforeContentLoaded)
498
+ .horizontalScrollBarAccess(this.descriptorWrapper.rawProps.showsHorizontalScrollIndicator)
499
+ .verticalScrollBarAccess(this.descriptorWrapper.rawProps.showsVerticalScrollIndicator)
500
+ .overviewModeAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
501
+ .textZoomRatio(this.descriptorWrapper.rawProps.textZoom)
502
+ .backgroundColor(BaseOperate.getColorMode(this.ctx.uiAbilityContext,
503
+ this.descriptorWrapper.rawProps.forceDarkOn) === WebDarkMode.On ? Color.White : Color.Transparent)
504
+ .darkMode(BaseOperate.getColorMode(this.ctx.uiAbilityContext, this.descriptorWrapper.rawProps.forceDarkOn))
505
+ .forceDarkAccess(this.forceDark)
506
+ .cacheMode(this.cacheMode)
507
+ .minFontSize(this.minFontSize)
508
+ .domStorageAccess(this.descriptorWrapper.rawProps.domStorageEnabled)
509
+ .zoomAccess(this.descriptorWrapper.rawProps.scalesPageToFit)
510
+ .overScrollMode(this.overScrollMode)
511
+ .onProgressChange((event: OnProgressChangeEvent) => this.onProgressChange(event))
512
+ .onScroll((event: OnScrollEvent) => this.webViewBaseOperate?.emitScroll(event))
513
+ .nestedScroll({
514
+ scrollForward: this.nestedScroll,
515
+ scrollBackward: this.nestedScroll,
516
+ })
517
+ .onPageBegin(() => this.onPageBegin())
518
+ .onPageEnd(() => this.onPageEnd())
519
+ .onErrorReceive((event: OnErrorReceiveEvent) => this.webViewBaseOperate?.emitLoadingError(event))
520
+ .onHttpErrorReceive((event: OnHttpErrorReceiveEvent) => this.webViewBaseOperate?.emitHttpError(event))
521
+ .onControllerAttached(() => this.controllerAttachedInit())
522
+ .onAlert((event: AlertEvent) => this.onJavascriptAlert(event))
523
+ .onConfirm((event: AlertEvent) => this.onJavascriptConfirm(event))
524
+ .onDownloadStart((event: OnDownloadStartEvent) => this.webViewBaseOperate?.onDownloadStart(event))
525
+ .geolocationAccess(this.descriptorWrapper.rawProps.geolocationEnabled)
526
+ .onGeolocationShow((event) => {
527
+ if (event && (this.descriptorWrapper.rawProps.geolocationEnabled != undefined)) {
528
+ event.geolocation.invoke(event.origin, this.descriptorWrapper.rawProps.geolocationEnabled, true);
529
+ }
530
+ })
531
+ .mediaPlayGestureAccess(this.descriptorWrapper.rawProps.mediaPlaybackRequiresUserAction)
532
+ .onRenderExited((event: OnRenderExitedEvent) => this.webViewBaseOperate?.onRenderExited(event))
533
+ .onLoadIntercept((event: OnLoadInterceptEvent) => this.onLoadIntercept(event))
534
+ .onTitleReceive((event: OnTitleReceiveEvent) => this.webViewBaseOperate?.onTitleReceive(event))
535
+
449
536
  }
450
- })
451
- .mediaPlayGestureAccess(this.descriptorWrapper.rawProps.mediaPlaybackRequiresUserAction)
452
- .onRenderExited((event: OnRenderExitedEvent) => this.webViewBaseOperate?.onRenderExited(event))
453
- .onLoadIntercept((event: OnLoadInterceptEvent) => this.onLoadIntercept(event))
454
- .onTitleReceive((event: OnTitleReceiveEvent) => this.webViewBaseOperate?.onTitleReceive(event))
455
- }
537
+ }
456
538
  .width(this.webviewWidth)
457
539
  .height(this.webviewHeight)
458
540
  .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.15.1-rc.3",
12
+ "version": "13.15.1-rc.5",
13
13
  "homepage": "https://gitcode.com/openharmony-sig/rntpc_react-native-webview/tree/br_rnoh0.77#readme",
14
14
  "scripts": {
15
15
  "macos": "react-native run-macos --scheme WebviewExample --project-path example/macos",
@@ -48,7 +48,6 @@
48
48
  "@react-native/eslint-config": "0.73.2",
49
49
  "@react-native/metro-config": "0.73.5",
50
50
  "@react-native/typescript-config": "0.73.1",
51
- "@react-native-oh/react-native-harmony-cli": "file:./packages/react-native-oh-react-native-harmony-cli-0.77.18.tgz",
52
51
  "@rnx-kit/metro-config": "1.3.15",
53
52
  "@semantic-release/git": "7.0.16",
54
53
  "@types/invariant": "^2.2.30",