MOBILEWEBVIEW-5: support web layer#680
Merged
sergeysozinov merged 3 commits intomission/webview-inappfrom Feb 17, 2026
Merged
Conversation
There was a problem hiding this comment.
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.
sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/validators/WebViewLayerValidatorTest.kt
Show resolved
Hide resolved
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/mapper/InAppMapper.kt
Show resolved
Hide resolved
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/validators/ModalWindowValidator.kt
Show resolved
Hide resolved
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/mapper/InAppMapper.kt
Show resolved
Hide resolved
enotniy
approved these changes
Feb 17, 2026
...main/java/cloud/mindbox/mobile_sdk/inapp/data/dto/deserializers/WebViewParamsDeserializer.kt
Show resolved
Hide resolved
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/validators/ModalWindowValidator.kt
Show resolved
Hide resolved
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/validators/SnackbarValidator.kt
Outdated
Show resolved
Hide resolved
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/validators/WebViewLayerValidator.kt
Outdated
Show resolved
Hide resolved
sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/mapper/InAppMapper.kt
Show resolved
Hide resolved
enotniy
approved these changes
Feb 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
https://tracker.yandex.ru/MOBILEWEBVIEW-5