Release 2.15.3#739
Open
itmindbox wants to merge 46 commits into
Open
Conversation
MOBILE-78: Add MindboxLifecycleInitializer
Merge 'master' into 'develop' after release
Add loggable property
MOBILE-52: Add timeout for in-app image loading
…p_cross MOBILE-52: Fix snackbar cross and cross margins
…kbar_animation MOBILE-52: Fix snackbar animation
…e_timeout_error MOBILE-52: Fix Inapp.ShowFailure on image timeout
MOBILE-215: Add example.properties
Bumps the github-actions group with 3 updates: [actions/checkout](https://github.com/actions/checkout), [actions/setup-java](https://github.com/actions/setup-java) and [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report). Updates `actions/checkout` from 6.0.3 to 7.0.0 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@df4cb1c...9c091bb) Updates `actions/setup-java` from 5.2.0 to 5.3.0 - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](actions/setup-java@be666c2...ad2b381) Updates `mikepenz/action-junit-report` from 6.4.1 to 6.4.2 - [Release notes](https://github.com/mikepenz/action-junit-report/releases) - [Commits](mikepenz/action-junit-report@3a81627...d9f48fc) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: actions/setup-java dependency-version: 5.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: mikepenz/action-junit-report dependency-version: 6.4.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--- updated-dependencies: - dependency-name: actions/setup-java dependency-version: 5.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
MOBILE-0000: Bump kmp submodule (drain evaluate callbacks before destroy) MOBILE-0000: Cover the stranded-preconnect release and cap budget with tests MOBILE-0000: Release the stranded preconnect WebView and honest-cap the settle poll A no-layers config landing while the init prewarm was suspended latched the verdict but the resumed prewarm bare-returned after the fetch: the preconnect load had already created a WebView and no settle poll would ever free it. The verdict is now re-checked before the preconnect load and the post-fetch path releases. Also: null probes are charged the probe timeout so the settle cap is a real wall-clock bound; ready-check give-up defers to the init timer instead of closing; teardown-race evaluate misses no longer feed telemetry; GatewayManager is injected lazily (Volley was constructed on the main thread during SDK init); learned-hosts merge is synchronized; kmp submodule bump (destroy fix, prewarm navigation pinning, httpsOrigin charset). MOBILE-0000: Cover the settle-poll guards, one-shot survival and hard cap MOBILE-0000: Harden the prewarm service and show holder after the audit - the settle poll checks the terminal-preempt latch before it is stored and on every tick — a real show could otherwise inherit a 30s zombie poll in the slot onRealShowWillStart() just cleared; - a no-layers config latches: an init prewarm still suspended in the content fetch can no longer resurrect a WebView the config retired; - the one-shot is consumed only by attempts that reach the engine, so a transient configuration read failure cannot block a later valid warm; - the poll budget is counted in ticks, not wall clock (same 30s, fully virtual-time testable); - onClose detaches the event listener and startReadyCheck refuses a torn-down holder — a late onPageFinished queued on the main looper produced a spurious presentation failure and a second close; - controller.destroy() is called once, not twice; - checkEvaluateJavaScript tracks a failed outgoing call but no longer force-closes the in-app — that is the caller's policy, and one transient miss used to tear down a healthy show. MOBILE-0000: Cover the network-idle settle release MOBILE-0000: Release the prewarm WebView by network idle, not a blind timer The hidden instance lived a fixed 30s after the content page load; a Resource Timing poll (stable entry count + 2s quiet window) releases it as soon as the page has settled — ~3s in practice. The 30s stays as a hard cap: entries appear only on completion, so a transfer slower than the quiet window can still be cut, same worst case as the cap. MOBILE-0000: Cover the WebView readiness probe retry MOBILE-0000: Retry the WebView readiness probe before closing the in-app onPageFinished can fire before the page's module scripts have evaluated (slow device, cold cache), and the single-shot bridge check then closed a healthy in-app. The probe now polls briefly (WebViewReadyChecker, mirrors the iOS fix); the outgoing-message verification stays single-shot — that path talks to a page that already proved itself ready. MOBILE-0000: Update prewarm service tests for the stub-less engine MOBILE-0000: Drop the legacy prewarm stub bridge Bumps kmp-common: the engine loads the content page without the stub JavascriptInterface; old pages degrade to a plain page warm until the web prewarm mode is deployed. MOBILE-0000: Update prewarm service tests for the params contract MOBILE-0000: Load the prewarm content page with official prewarm params A web runtime that knows the contract boots tracker-only from the document URL params; older runtimes ignore them and keep using the engine's legacy stub bridge. Bumps kmp-common with prewarmContentBaseUrl and the stub-call logging. MOBILE-0000: Preempt prewarm terminally + thread-safe settle job Real-show preemption now calls engine.abort() (synchronous latch closes the race where an already-posted prewarm load recreated the WebView mid-show and, with the settle job cancelled, kept it alive forever). settleJob becomes an AtomicReference. Bump kmp-common. MOBILE-0000: Gate prewarm light parse by sdkVersion like the real pipeline The endpoint config carries webview-typed form variants for newer SDK versions; without the version gate the head-start parse logs a JsonParseException per such in-app on every launch. MOBILE-0000: Wire production WebView prewarm service into SDK lifecycle InAppWebViewPrewarmService: stage 1 at init (head start from cached config, light layer parse), stage 2 after each config parse in MobileConfigRepositoryImpl (release when no webview in-apps), preemption from WebViewInAppViewHolder before a real show, learned-hosts capture at bridge close feeding next launch's preconnect. Everything derived from config + API domain; no hardcoded hosts. Bump kmp-common with cache/prewarm primitives. MOBILE-0000: Prewarm WebView at SDK init + bump kmp-common Call MindboxWebViewLab.prewarm() from Mindbox.initialize() to warm the renderer process/connections early. Bump kmp-common-sdk submodule to the prototype branch carrying the cache+preconnect prototype. Throwaway measurement scaffolding.
MOBILE-269: Webview cache
* MOBILE-197: Send data-only payload in WebView sync onError
Drop both wrappers: the {type, data} envelope from toJson and the
{"error": ...} double serialization in sendErrorResponse. The payload
format is shared with iOS: string httpStatusCode, no transport
statusCode. toJson() is unchanged - public API used by wrapper SDKs.
* MOBILE-197: Pin iOS-format sync error payloads in executor tests
* MOBILE-197: Pin why sync error payload avoids gson.toJson
The injected gson has htmlSafe enabled and would emit \u003c-style
escapes, diverging from iOS JSONEncoder output.
Bumps the github-actions group with 1 update: [actions/setup-java](https://github.com/actions/setup-java). Updates `actions/setup-java` from 5.5.0 to 5.6.0 - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](actions/setup-java@0f481fc...03ad4de) --- updated-dependencies: - dependency-name: actions/setup-java dependency-version: 5.6.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.
Updates the release version to 2.15.3. Automated PR: merge release/2.15.3 into master