diff --git a/pageredirectionlibrary/src/main/ets/component/PageRedirectionComponent.ets b/pageredirectionlibrary/src/main/ets/component/PageRedirectionComponent.ets index 20abdecfb0d3aa04368c7d41d74d312f880ad033..19d6dd2c675fe83969905c3275c86fb026f4be89 100644 --- a/pageredirectionlibrary/src/main/ets/component/PageRedirectionComponent.ets +++ b/pageredirectionlibrary/src/main/ets/component/PageRedirectionComponent.ets @@ -52,6 +52,7 @@ export struct PageRedirectionComponent { private promptAction: PromptAction = this.uiContext.getPromptAction(); private contentNode: ComponentContent> | undefined = undefined; private urlTrustList: string = '{"UrlPermissionList":[{"host":"resfile"}]}'; + private whiteMethods: Array = ['setLanguage', 'setTopHeight']; closeDialog = () => { if (this.contentNode) { this.promptAction.closeCustomDialog(this.contentNode); @@ -60,7 +61,13 @@ export struct PageRedirectionComponent { systemLanguageChange() { try { - this.controller.runJavaScript(`setLanguage('${this.systemLanguage}')`); + let jsMethod: string = `setLanguage('${this.systemLanguage}')`; + // Check the trustlist + if (this.whiteMethods.indexOf(jsMethod.split('(')[0]) === -1) { + Logger.error('SystemLanguageChange privacy security', 'input method not in whiteList'); + return; + } + this.controller.runJavaScript(jsMethod); } catch (error) { Logger.error('PageRedirectionComponent', 'runJavaScript failed ' + JSON.stringify(error)); } @@ -144,10 +151,19 @@ export struct PageRedirectionComponent { .onPageEnd(() => { this.webCanBack = this.controller.accessBackward(); this.webCanForward = this.controller.accessForward(); - this.controller.runJavaScript(`setTopHeight(${this.statusBarHeight},${this.navBarHeight})`); - this.controller.runJavaScript(`setLanguage('${this.systemLanguage}')`); + let setTopHeight: string = `setTopHeight(${this.statusBarHeight},${this.navBarHeight})`; + let setLanguage: string = `setLanguage('${this.systemLanguage}')`; + // Check the trustlist + if (this.whiteMethods.indexOf(setTopHeight.split('(')[0]) === -1 || + this.whiteMethods.indexOf(setLanguage.split('(')[0]) === -1) { + Logger.error('privacy security', 'input method not in whiteList'); + return; + } + this.controller.runJavaScript(setTopHeight); + this.controller.runJavaScript(setLanguage); }) .darkMode(WebDarkMode.Auto) + .mixedMode(MixedMode.None) Column() { Row() { diff --git a/pageredirectionlibrary/src/main/ets/utils/WindowUtil.ets b/pageredirectionlibrary/src/main/ets/utils/WindowUtil.ets index e77dd2911e7f4120796dd9781521b22c9e796261..67f47e6ca9d531c5e8358a50b41a31e5a872bd8b 100644 --- a/pageredirectionlibrary/src/main/ets/utils/WindowUtil.ets +++ b/pageredirectionlibrary/src/main/ets/utils/WindowUtil.ets @@ -56,8 +56,8 @@ export class WindowUtil { Logger.error(TAG, `Failed to set the window layout to full-screen mode. Cause: ${err.code}, ${err.message}`); }); - } catch { - Logger.error(TAG, 'Failed to set the window layout to full-screen mode.'); + } catch (error) { + Logger.error(TAG, `Failed to set the window layout to full-screen mode. Cause: ${error.code}, ${error.message}`); } }); } diff --git a/pageredirectionlibrary/src/main/resources/resfile/js/product_detail.js b/pageredirectionlibrary/src/main/resources/resfile/js/product_detail.js index c4aa537cbca4fcb77eb26b2fb8fc5ba4ea7ae21e..de29e9875bb506800c0a02913c64f4d690081689 100644 --- a/pageredirectionlibrary/src/main/resources/resfile/js/product_detail.js +++ b/pageredirectionlibrary/src/main/resources/resfile/js/product_detail.js @@ -128,7 +128,6 @@ setInterval(autoScroll, 2000); window.addEventListener('resize', () => { document.getElementById('product-desc').style.paddingTop = Number.parseInt(topHeight) + 'px'; - console.info('screenWidth:' + (window.screen.width)); }); function orderConfirm() {