diff --git a/wifi/application/portal_login/entry/src/main/ets/common/utils.ets b/wifi/application/portal_login/entry/src/main/ets/common/utils.ets index 7c1067511d20c945a53967b9ff83219dc215687b..72d1a7e5f4080712ada4ddaaa7603a60b810f5bc 100644 --- a/wifi/application/portal_login/entry/src/main/ets/common/utils.ets +++ b/wifi/application/portal_login/entry/src/main/ets/common/utils.ets @@ -24,10 +24,11 @@ export function shouldShowBrowseItem(): boolean { return shouldShowBrowseItem_; } -function validateURL(urlString: string): boolean { +export function validateURL(urlString: string): boolean { try { const urlObject = url.URL.parseURL(urlString); if (urlObject && urlObject.hostname) { + hilog.info(DOMAIN, TAG, '%{public}s', 'validateURL:' + urlObject.hostname); return true; } } catch (error) { diff --git a/wifi/application/portal_login/entry/src/main/ets/entryability/EntryAbility.ets b/wifi/application/portal_login/entry/src/main/ets/entryability/EntryAbility.ets index 48615b3177e522a8ef262c4666620cd7befd8baf..839c8a91e5e0fd7c93642cac29c38371302532d3 100644 --- a/wifi/application/portal_login/entry/src/main/ets/entryability/EntryAbility.ets +++ b/wifi/application/portal_login/entry/src/main/ets/entryability/EntryAbility.ets @@ -3,6 +3,7 @@ import { hilog } from '@kit.PerformanceAnalysisKit'; import { window } from '@kit.ArkUI'; import { setUrl, setNetId, setShouldShowBrowseItem } from '../common/utils'; import { emitter } from '@kit.BasicServicesKit'; +import { BusinessError } from '@kit.BasicServicesKit'; const DOMAIN = 0x01560; const TAG = 'Entry'; @@ -37,6 +38,23 @@ export default class EntryAbility extends UIAbility { hilog.error(DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err)); return; } + let windowClass: window.Window = windowStage.getMainWindowSync(); + let isLayoutFullScreen = true; + windowClass.setWindowLayoutFullScreen(isLayoutFullScreen).then(() => { + console.info('Succeeded in setting the window layout to full-screen mode.'); + }).catch((err: BusinessError) => { + console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err)); + }); + let type = window.AvoidAreaType.TYPE_SYSTEM; + let avoidArea = windowClass.getWindowAvoidArea(type); + let topRectHeight = avoidArea.topRect.height; + AppStorage.setOrCreate('topRectHeight', topRectHeight); + windowClass.on('avoidAreaChange', (data) => { + if (data.type === window.AvoidAreaType.TYPE_SYSTEM) { + let topRectHeight = data.area.topRect.height; + AppStorage.setOrCreate('topRectHeight', topRectHeight); + } + }); hilog.info(DOMAIN, TAG, 'Succeeded in loading the content.'); }); } diff --git a/wifi/application/portal_login/entry/src/main/ets/pages/Index.ets b/wifi/application/portal_login/entry/src/main/ets/pages/Index.ets index aa72237c8e654da82bda7d09ce7c72aa23eca920..14f4d7f0b195c937b9e08c241bf4d21138010276 100644 --- a/wifi/application/portal_login/entry/src/main/ets/pages/Index.ets +++ b/wifi/application/portal_login/entry/src/main/ets/pages/Index.ets @@ -5,7 +5,7 @@ import { common, OpenLinkOptions } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit' import { SymbolGlyphModifier } from '@kit.ArkUI' import { - getUrl, bindToNetById, extractDomain, handleNetworkChange, exitApp, shouldShowBrowseItem, UserAgentSet + getUrl, bindToNetById, extractDomain, handleNetworkChange, exitApp, shouldShowBrowseItem, UserAgentSet, validateURL } from '../common/utils' import { connection } from '@kit.NetworkKit'; import { emitter } from '@kit.BasicServicesKit'; @@ -73,13 +73,13 @@ struct Index { @State private isSelectUASheetVisible: boolean = false; @State private adaptPadding: number = 16; @State private loadProgress: number = 0; - private actionBarHeight = 56; private sheetItemHeight = 50; private contextMenuWidth = 224; private netConnect: connection.NetConnection = connection.createNetConnection(); private isInOOBE: boolean = false; @State mode: WebDarkMode = WebDarkMode.Auto; @State access: boolean = true; + @StorageProp('topRectHeight') topRectHeight: number = 0; @Builder ContextMenu() { @@ -136,7 +136,6 @@ struct Index { .alignItems(HorizontalAlign.Start) } .alignItems(VerticalAlign.Bottom) - .height(this.actionBarHeight) // UA list Column() { @@ -215,7 +214,7 @@ struct Index { } build() { - Column() { + Flex({ direction: FlexDirection.Column }) { // Action bar Column() { Row() { @@ -296,7 +295,9 @@ struct Index { }) } .width('100%') - .height(this.actionBarHeight) + .constraintSize({ + minHeight: '56vp' + }) .backgroundColor($r('sys.color.ohos_id_color_background')) Web({ src: this.webUrl, controller: this.webviewController }) @@ -306,7 +307,7 @@ struct Index { .domStorageAccess(true) .onOverrideUrlLoading((request) => { const url = request.getRequestUrl(); - if (!url.startsWith('http') && !url.startsWith('https')) { + if (validateURL(url) && !url.startsWith('http') && !url.startsWith('https')) { (this.getUIContext().getHostContext() as common.UIAbilityContext).openLink(url) .then(() => { hilog.info(DOMAIN, TAG, 'open link success.'); @@ -389,6 +390,7 @@ struct Index { .backgroundColor($r('sys.color.ohos_id_color_background')) .width('100%') } + .padding({ top: px2vp(this.topRectHeight) }) } aboutToAppear(): void {