diff --git a/entry/src/main/ets/Interceptors/CommonHeaderInterceptor/view/CommonHeaderView.ets b/entry/src/main/ets/Interceptors/CommonHeaderInterceptor/view/CommonHeaderView.ets index 9329806c372a455d5e509f0be9d73a0e89f479b1..625eb28126b8faf0f3266e0ff6367a192ed2abbb 100644 --- a/entry/src/main/ets/Interceptors/CommonHeaderInterceptor/view/CommonHeaderView.ets +++ b/entry/src/main/ets/Interceptors/CommonHeaderInterceptor/view/CommonHeaderView.ets @@ -18,8 +18,7 @@ import { BusinessError } from '@kit.BasicServicesKit'; import { CommonConstants } from '../../../common/CommonConstants'; import { UrlInputComponent } from '../../../component/UrlInputComponent'; import { CommonHeaderViewModel } from '../viewmodel/CommonHeaderViewModel'; -import { CommonHeaderModel } from '../model/CommonHeaderModel'; -import { RcpForwarderConfig, RcpRequestForwarder } from '../../../common/utils/RcpRequestForwarder'; +import { RcpForwarderConfig } from '../../../common/utils/RcpRequestForwarder'; import Logger from '../../../common/utils/Logger'; const TAG = '[CommonHeader]'; @@ -35,8 +34,6 @@ struct CommonHeader { @State isLoading: boolean = false; controller: webview.WebviewController = new webview.WebviewController(); schemeHandler: webview.WebSchemeHandler = new webview.WebSchemeHandler(); - rcpForwarder?: RcpRequestForwarder; - model?: CommonHeaderModel; viewModel?: CommonHeaderViewModel; // Configure common header private readonly COMMON_HEADER_NAME: string = 'X-Custom-Header'; @@ -48,11 +45,8 @@ struct CommonHeader { commonHeaderName: this.COMMON_HEADER_NAME, commonHeaderValue: this.COMMON_HEADER_VALUE }; - this.rcpForwarder = new RcpRequestForwarder(forwarderConfig); - // Initialize common header interceptor - this.model = new CommonHeaderModel(this.rcpForwarder); - this.viewModel = new CommonHeaderViewModel(this.schemeHandler, this.model); + this.viewModel = new CommonHeaderViewModel(this.schemeHandler, forwarderConfig); } build() { diff --git a/entry/src/main/ets/Interceptors/CommonHeaderInterceptor/viewmodel/CommonHeaderViewModel.ets b/entry/src/main/ets/Interceptors/CommonHeaderInterceptor/viewmodel/CommonHeaderViewModel.ets index ff89fb6fd650f354c6697bd527ad52138112f8ae..15d80bbe7d560e0f2b6e024368861bff9845cef5 100644 --- a/entry/src/main/ets/Interceptors/CommonHeaderInterceptor/viewmodel/CommonHeaderViewModel.ets +++ b/entry/src/main/ets/Interceptors/CommonHeaderInterceptor/viewmodel/CommonHeaderViewModel.ets @@ -16,6 +16,7 @@ import { webview } from '@kit.ArkWeb'; import { BusinessError } from '@kit.BasicServicesKit'; import { CommonHeaderModel } from '../model/CommonHeaderModel'; +import { RcpForwarderConfig, RcpRequestForwarder } from '../../../common/utils/RcpRequestForwarder'; import Logger from '../../../common/utils/Logger'; const TAG = '[CommonHeaderViewModel]'; @@ -27,9 +28,14 @@ export class CommonHeaderViewModel { private schemeHandler: webview.WebSchemeHandler; private model: CommonHeaderModel; - constructor(schemeHandler: webview.WebSchemeHandler, model: CommonHeaderModel) { + constructor( + schemeHandler: webview.WebSchemeHandler, + forwarderConfig: RcpForwarderConfig, + forwarder?: RcpRequestForwarder + ) { this.schemeHandler = schemeHandler; - this.model = model; + const resolvedForwarder = forwarder ?? new RcpRequestForwarder(forwarderConfig); + this.model = new CommonHeaderModel(resolvedForwarder); } /** diff --git a/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/view/CustomLoadingStrategyView.ets b/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/view/CustomLoadingStrategyView.ets index c7d4ff7b0f47ec523e32be299cb4e5512f342871..165d9c00143a569cdca101960c50d31c31594b6d 100644 --- a/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/view/CustomLoadingStrategyView.ets +++ b/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/view/CustomLoadingStrategyView.ets @@ -18,7 +18,6 @@ import { webview } from '@kit.ArkWeb'; import { CommonConstants } from '../../../common/CommonConstants'; import { UrlInputComponent } from '../../../component/UrlInputComponent'; import { CustomLoadingStrategyViewModel } from '../viewmodel/CustomLoadingStrategyViewModel'; -import { CustomLoadingStrategyModel } from '../model/CustomLoadingStrategyModel'; import Logger from '../../../common/utils/Logger'; const TAG = '[CustomLoadingStrategy]'; @@ -33,14 +32,12 @@ struct CustomLoadingStrategy { @State requestUrl: ResourceStr = CommonConstants.IMAGE_REQUEST_URL; @State isLoading: boolean = false; controller: webview.WebviewController = new webview.WebviewController(); - model?: CustomLoadingStrategyModel; viewModel?: CustomLoadingStrategyViewModel; imgFormatList: Array = CommonConstants.IMAGE_FORMAT_LIST; aboutToAppear(): void { // Initialize custom loading strategy interceptor - this.model = new CustomLoadingStrategyModel(); - this.viewModel = new CustomLoadingStrategyViewModel(this.model); + this.viewModel = new CustomLoadingStrategyViewModel(); } build() { diff --git a/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/viewmodel/CustomLoadingStrategyViewModel.ets b/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/viewmodel/CustomLoadingStrategyViewModel.ets index 5afcfeab164dd8f1a4d0b0c1b2278ae71cb3ca53..89e59b89de281a7bd907b09dd1b2c20952de3141 100644 --- a/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/viewmodel/CustomLoadingStrategyViewModel.ets +++ b/entry/src/main/ets/Interceptors/CustomLoadingStrategyInterceptor/viewmodel/CustomLoadingStrategyViewModel.ets @@ -21,8 +21,8 @@ import { CustomLoadingStrategyModel } from '../model/CustomLoadingStrategyModel' export class CustomLoadingStrategyViewModel { private model: CustomLoadingStrategyModel; - constructor(model: CustomLoadingStrategyModel) { - this.model = model; + constructor() { + this.model = new CustomLoadingStrategyModel(); } /** diff --git a/entry/src/main/ets/Interceptors/LocalResourceInterceptor/view/LocalResourceView.ets b/entry/src/main/ets/Interceptors/LocalResourceInterceptor/view/LocalResourceView.ets index b43474f14ef42f2180249fafd5b72d37b890e5b9..18666e830bed1b7521e0ca135b2788077f3552b2 100644 --- a/entry/src/main/ets/Interceptors/LocalResourceInterceptor/view/LocalResourceView.ets +++ b/entry/src/main/ets/Interceptors/LocalResourceInterceptor/view/LocalResourceView.ets @@ -16,7 +16,6 @@ import { webview } from '@kit.ArkWeb'; import { BusinessError } from '@kit.BasicServicesKit'; import { LocalResourceViewModel } from '../viewmodel/LocalResourceViewModel'; -import { LocalResourceModel } from '../model/LocalResourceModel'; import { CommonConstants } from '../../../common/CommonConstants'; import { UrlInputComponent } from '../../../component/UrlInputComponent'; import Logger from '../../../common/utils/Logger'; @@ -33,7 +32,6 @@ struct LocalResource { @State requestUrl: ResourceStr = CommonConstants.EXAMPLE_URL; @State isLoading: boolean = false; controller: webview.WebviewController = new webview.WebviewController(); - model?: LocalResourceModel; viewModel?: LocalResourceViewModel; // Map between domain names and local files schemeMap = new Map([ @@ -48,8 +46,7 @@ struct LocalResource { aboutToAppear(): void { // Initialize local Resource interceptor - this.model = new LocalResourceModel(this.schemeMap, this.mimeTypeMap); - this.viewModel = new LocalResourceViewModel(this.model); + this.viewModel = new LocalResourceViewModel(this.schemeMap, this.mimeTypeMap); } build() { diff --git a/entry/src/main/ets/Interceptors/LocalResourceInterceptor/viewmodel/LocalResourceViewModel.ets b/entry/src/main/ets/Interceptors/LocalResourceInterceptor/viewmodel/LocalResourceViewModel.ets index 1bed76ab92d9464c737720ff0ac691dc6d2b4acc..4ef4ad47590da64015223b799848bac69ea9d7af 100644 --- a/entry/src/main/ets/Interceptors/LocalResourceInterceptor/viewmodel/LocalResourceViewModel.ets +++ b/entry/src/main/ets/Interceptors/LocalResourceInterceptor/viewmodel/LocalResourceViewModel.ets @@ -21,8 +21,13 @@ import { LocalResourceModel } from '../model/LocalResourceModel'; export class LocalResourceViewModel { private model: LocalResourceModel; - constructor(model: LocalResourceModel) { - this.model = model; + constructor( + initialSchemeMap?: Map, + initialMimeTypeMap?: Map, + ) { + const schemeMap = initialSchemeMap ?? new Map(); + const mimeTypeMap = initialMimeTypeMap ?? new Map(); + this.model = new LocalResourceModel(schemeMap, mimeTypeMap); } /** diff --git a/entry/src/main/ets/Interceptors/PageWhitelistInterceptor/view/PageWhitelistView.ets b/entry/src/main/ets/Interceptors/PageWhitelistInterceptor/view/PageWhitelistView.ets index 2a940e5b68bcea13bb6be151e3c88d4a958996ec..e8f277997f2ba5d90bee32d530e3435b43fe8647 100644 --- a/entry/src/main/ets/Interceptors/PageWhitelistInterceptor/view/PageWhitelistView.ets +++ b/entry/src/main/ets/Interceptors/PageWhitelistInterceptor/view/PageWhitelistView.ets @@ -19,7 +19,6 @@ import { CommonConstants } from '../../../common/CommonConstants'; import { UrlInputComponent } from '../../../component/UrlInputComponent'; import { WhitelistDialogHandler } from '../../../component/WhitelistDialog'; import { PageWhitelistViewModel } from '../viewmodel/PageWhitelistViewModel'; -import { PageWhitelistModel } from '../model/PageWhitelistModel'; import Logger from '../../../common/utils/Logger'; const TAG = '[PageWhitelist]'; @@ -38,20 +37,18 @@ struct PageWhitelist { whitelistUrlArr: ResourceStr[] = []; controller: webview.WebviewController = new webview.WebviewController(); dialogHandler: WhitelistDialogHandler = new WhitelistDialogHandler(); - model?: PageWhitelistModel; viewModel?: PageWhitelistViewModel; aboutToAppear(): void { // Initialize dialog handler this.initializeDialogHandler(); // Initialize load interceptor - this.model = new PageWhitelistModel( + this.viewModel = new PageWhitelistViewModel( this.dialogHandler, () => { this.isLoading = false; } ); - this.viewModel = new PageWhitelistViewModel(this.model); } /** diff --git a/entry/src/main/ets/Interceptors/PageWhitelistInterceptor/viewmodel/PageWhitelistViewModel.ets b/entry/src/main/ets/Interceptors/PageWhitelistInterceptor/viewmodel/PageWhitelistViewModel.ets index 25b9c224490c877665f7acfafb176e07e11f36e1..1d60e30ecb83b2301efc4484bf555204133c2705 100644 --- a/entry/src/main/ets/Interceptors/PageWhitelistInterceptor/viewmodel/PageWhitelistViewModel.ets +++ b/entry/src/main/ets/Interceptors/PageWhitelistInterceptor/viewmodel/PageWhitelistViewModel.ets @@ -14,6 +14,7 @@ */ import { PageWhitelistModel } from '../model/PageWhitelistModel'; +import { WhitelistDialogHandler } from '../../../component/WhitelistDialog'; /** * ViewModel for PageWhitelist scene @@ -21,8 +22,8 @@ import { PageWhitelistModel } from '../model/PageWhitelistModel'; export class PageWhitelistViewModel { private model: PageWhitelistModel; - constructor(model: PageWhitelistModel) { - this.model = model; + constructor(dialogHandler: WhitelistDialogHandler, closeWebpageCallback?: () => void) { + this.model = new PageWhitelistModel(dialogHandler, closeWebpageCallback); } /** diff --git a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets index 5b071faba8b7d0b473e5dd8b5ae46ddd35f83eb5..b88c35bc409cfc393f85f3be001622bd0544d6b6 100644 --- a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets +++ b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/view/RedirectRequestView.ets @@ -18,7 +18,6 @@ import { BusinessError } from '@kit.BasicServicesKit'; import { CommonConstants } from '../../../common/CommonConstants'; import { UrlInputComponent } from '../../../component/UrlInputComponent'; import { RedirectRequestViewModel } from '../viewmodel/RedirectRequestViewModel'; -import { RedirectRequestModel } from '../model/RedirectRequestModel'; import Logger from '../../../common/utils/Logger'; const TAG = '[RedirectRequest]'; @@ -38,13 +37,11 @@ struct RedirectRequest { @State redirectUrl: ResourceStr = CommonConstants.EXAMPLE_URL; @State isLoading: boolean = false; controller: webview.WebviewController = new webview.WebviewController(); - model?: RedirectRequestModel; viewModel?: RedirectRequestViewModel; aboutToAppear(): void { // Initialize redirect request interceptor - this.model = new RedirectRequestModel(this.controller); - this.viewModel = new RedirectRequestViewModel(this.model); + this.viewModel = new RedirectRequestViewModel(this.controller); } build() { diff --git a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets index 9f513a2aa2af8a9023fcf6df7e69bbefc9cd4786..c1b5de7a1b24a85b6239b514bd581da92ad41919 100644 --- a/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets +++ b/entry/src/main/ets/Interceptors/RedirectRequestInterceptor/viewmodel/RedirectRequestViewModel.ets @@ -13,6 +13,7 @@ * limitations under the License. */ +import { webview } from '@kit.ArkWeb'; import { RedirectRequestModel } from '../model/RedirectRequestModel'; /** @@ -21,8 +22,8 @@ import { RedirectRequestModel } from '../model/RedirectRequestModel'; export class RedirectRequestViewModel { private model: RedirectRequestModel; - constructor(model: RedirectRequestModel) { - this.model = model; + constructor(controller: webview.WebviewController) { + this.model = new RedirectRequestModel(controller); } /**