Skip to content

MOBILEWEBVIEW-5: support web layer#680

Merged
sergeysozinov merged 3 commits intomission/webview-inappfrom
feature/MOBILEWEBVIEW-5
Feb 17, 2026
Merged

MOBILEWEBVIEW-5: support web layer#680
sergeysozinov merged 3 commits intomission/webview-inappfrom
feature/MOBILEWEBVIEW-5

Conversation

@sergeysozinov
Copy link
Collaborator

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the WebView in-app support to use a proper layer-based architecture instead of relying on payload string parsing. The changes move WebView configuration from being a separate top-level PayloadDto type to being a layer type (WebViewLayer) within ModalWindowDto, which is then mapped to InAppType.WebView at runtime.

Changes:

  • Removed PayloadDto.WebViewDto and PayloadBlankDto.WebViewBlankDto classes, consolidating WebView as a layer type
  • Added WebViewLayerValidator and WebViewParamsDeserializer to properly validate and deserialize WebView layers
  • Updated InAppMapper to convert ModalWindows with WebViewLayer to InAppType.WebView
  • Fixed a bug where SnackbarDto was incorrectly assigned MODAL_JSON_NAME type constant
  • Removed getWebViewFromPayload method from InAppMessageViewDisplayerImpl as WebView handling now occurs at the DTO level

Reviewed changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
sdk/src/test/java/cloud/mindbox/mobile_sdk/models/InAppStub.kt Added getWebView() factory method for testing WebView in-apps
sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppMessageViewDisplayerImplTest.kt Removed tests for deprecated getWebViewFromPayload method
sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/domain/InAppProcessingManagerTest.kt Added test for WebView targeting and fixed explicit parameter naming in copy() calls
sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/validators/WebViewLayerValidatorTest.kt New test file covering WebViewLayerValidator validation logic
sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/validators/SnackbarValidatorTest.kt Added test verifying Snackbar rejects WebView layers
sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/validators/ModalWindowValidatorTest.kt Added tests for ModalWindow accepting valid/invalid WebView layers
sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/mapper/InAppMapperTest.kt Added tests for mapping ModalWindowDto with WebView layer to InAppType.WebView
sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/managers/serialization/MobileConfigSerializationManagerTest.kt Added tests for deserializing WebView layers including params conversion
sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/dto/deserializers/WebViewParamsDeserializerTest.kt New test file for WebViewParamsDeserializer
sdk/src/main/java/cloud/mindbox/mobile_sdk/utils/Constants.kt Incremented SDK_VERSION_NUMERIC from 11 to 12
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppMessageViewDisplayerImpl.kt Removed getWebViewFromPayload method and related imports
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/validators/WebViewLayerValidator.kt New validator for WebViewLayerDto
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/validators/SnackbarValidator.kt Updated to reject WebView layers
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/validators/ModalWindowValidator.kt Updated to accept WebView layers
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/mapper/InAppMapper.kt Updated to map ModalWindows with WebView layers to InAppType.WebView, renamed method to mapBackgroundLayers
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/managers/data_filler/DataManager.kt Removed WebViewDto case handling
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/managers/MobileConfigSerializationManagerImpl.kt Removed WebViewBlankDto deserialization, fixed Snackbar type constant bug
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/dto/deserializers/WebViewParamsDeserializer.kt New deserializer to convert all param values to strings
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/dto/PayloadDto.kt Removed WebViewDto class
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/dto/FormBlankDto.kt Removed WebViewBlankDto class
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/dto/BackgroundDto.kt Added @JsonAdapter annotation for WebViewParamsDeserializer on params field
sdk/src/main/java/cloud/mindbox/mobile_sdk/di/modules/MindboxModule.kt Added webViewLayerValidator to DataModule interface
sdk/src/main/java/cloud/mindbox/mobile_sdk/di/modules/DataModule.kt Added webViewLayerValidator instantiation and injection, removed WebViewBlankDto type adapter registration
Comments suppressed due to low confidence (1)

sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppMessageViewDisplayerImplTest.kt:23

  • This test class is now empty except for setup and teardown. The Gson mock is created but never used. Consider either removing this test file entirely if no tests are needed, or removing the unused Gson mock from the setup if tests will be added later.
internal class InAppMessageViewDisplayerImplTest {

    private lateinit var displayer: InAppMessageViewDisplayerImpl

    @Before
    fun setUp() {
        mockkObject(MindboxDI)
        every { MindboxDI.appModule } returns mockk {
            every { gson } returns Gson()
        }
        displayer = InAppMessageViewDisplayerImpl(mockk())
    }

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@sergeysozinov sergeysozinov merged commit 4eb8a61 into mission/webview-inapp Feb 17, 2026
5 checks passed
@sergeysozinov sergeysozinov deleted the feature/MOBILEWEBVIEW-5 branch February 17, 2026 15:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants