diff --git a/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/model/CustomLoadingStrategyModel.ets b/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/model/CustomLoadingStrategyModel.ets index ca6e9c9d460bdd825386e3b04aef89a6112b7ff0..ddee2df1d4f0978b63384c55936fce1437530481 100644 --- a/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/model/CustomLoadingStrategyModel.ets +++ b/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/model/CustomLoadingStrategyModel.ets @@ -40,10 +40,7 @@ export class CustomLoadingStrategyModel { try { const netHandle = connection.getDefaultNetSync(); const netData = connection.getNetCapabilitiesSync(netHandle); - if (netData.bearerTypes.includes(connection.NetBearType.BEARER_WIFI)) { - return true; - } - return false; + return netData.bearerTypes.includes(connection.NetBearType.BEARER_WIFI); } catch (error) { let err = error as BusinessError; Logger.error(TAG, `Get the network info failed, errCode: ${err.code}, errMessage: ${err.message}.`); diff --git a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/model/RedirectRequestModel.ets b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/model/RedirectRequestModel.ets index 7ccaf2004f7c5de10a9aaa7c305f81ef18941e43..4c94d8a0e2dc8036fd9f3ceb3aff1aedd6708e20 100644 --- a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/model/RedirectRequestModel.ets +++ b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/model/RedirectRequestModel.ets @@ -25,11 +25,19 @@ const TAG = '[RedirectRequestModel]'; export class RedirectRequestModel { private controller: webview.WebviewController; private redirectUrl: string = ''; + private allowAllForCurrentLoad: boolean = false; constructor(controller: webview.WebviewController) { this.controller = controller; } + /** + * Reset session-level allow flags when starting a new load + */ + resetSession(): void { + this.allowAllForCurrentLoad = false; + } + /** * Updates the redirect target URL */ @@ -66,6 +74,7 @@ export class RedirectRequestModel { performRedirect(): boolean { try { this.controller.loadUrl(this.redirectUrl); + this.allowAllForCurrentLoad = true; Logger.info(TAG, `Redirected to ${this.redirectUrl}`); return true; } catch (error) { @@ -82,6 +91,10 @@ export class RedirectRequestModel { processLoadIntercept(event: OnLoadInterceptEvent): boolean { const requestUrl = event.data.getRequestUrl(); + if (this.allowAllForCurrentLoad) { + return false; + } + if (this.shouldInterceptUrl(requestUrl)) { // Perform redirect const redirected = this.performRedirect(); diff --git a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets index b88c35bc409cfc393f85f3be001622bd0544d6b6..80b16d5c11d667c6e3c5d329d454289266e839b7 100644 --- a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets +++ b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets @@ -83,6 +83,7 @@ struct RedirectRequest { Logger.error(TAG, `Failed to show toast, errCode: ${err.code}, errMessage: ${err.message}.`); } } + this.viewModel?.resetSession(); this.isLoading = true; }) } diff --git a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets index c1b5de7a1b24a85b6239b514bd581da92ad41919..81cbbb08a33980c2da4cc541db217e29c80894dc 100644 --- a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets +++ b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets @@ -33,6 +33,13 @@ export class RedirectRequestViewModel { this.model.setRedirectUrl(redirectUrl); } + /** + * Reset redirect request session state for a fresh load + */ + resetSession(): void { + this.model.resetSession(); + } + /** * Handles load intercept logic */