Repository navigation
iOS: re-read the view size when a covering modal is dismissed (#6080) - #6115
Conversation
Presenting the portrait-only camera over a landscape app sends the covered controller a portrait viewWillTransitionToSize:, but its bounds never change, so staying in landscape leaves no layout pass to correct the published size. viewDidAppear and the transition completion now re-sync from the bounds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ays-landscape case (#6080) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Compared 191 screenshots: 191 matched. Native Android coverage
✅ Native Android screenshot tests passed. Native Android coverage
Benchmark ResultsDetailed Performance Metrics
|
|
Compared 206 screenshots: 206 matched. Benchmark ResultsDetailed Performance Metrics
|
✅ Continuous Quality ReportTest & Coverage
Static Analysis
Generated automatically by the PR CI workflow. |
|
Compared 227 screenshots: 227 matched. |
|
Compared 206 screenshots: 206 matched. Benchmark ResultsDetailed Performance Metrics
ParparVM vs HotSpot (JDK 25): Windows x64Runner CPU: Intel64 Family 6 Model 207 Stepping 2, GenuineIntel (baseline 2 improvements past the baseline (not a failure; rebaseline to lock them in):
Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
A change that moves performance ON PURPOSE records the new baseline in Result: no regression (improved past the baseline: consider rebaselining) |
|
Compared 206 screenshots: 206 matched. ParparVM vs HotSpot (JDK 25): Linux arm64Runner CPU: Neoverse-N2 (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 206 screenshots: 206 matched. Benchmark ResultsDetailed Performance Metrics
ParparVM vs HotSpot (JDK 25): Windows arm64Runner CPU: ARMv8 (64-bit) Family 8 Model D49 Revision 0, MICROSOFT CORPORATION (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 206 screenshots: 206 matched. ParparVM vs HotSpot (JDK 25): Linux x64Runner CPU: AMD EPYC 9V74 80-Core Processor (baseline 1 improvement past the baseline (not a failure; rebaseline to lock it in):
Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
A change that moves performance ON PURPOSE records the new baseline in Result: no regression (improved past the baseline: consider rebaselining) |
|
Compared 192 screenshots: 192 matched. Benchmark Results
Detailed Performance Metrics
ParparVM vs HotSpot (JDK 25): macOS arm64Runner CPU: Apple M1 (Virtual) (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 184 screenshots: 184 matched. |
|
Compared 188 screenshots: 188 matched. Benchmark Results
Detailed Performance Metrics
|
|
Compared 189 screenshots: 189 matched. Benchmark Results
Build and Run Timing
Detailed Performance Metrics
|
|
Compared 249 screenshots: 249 matched. |
…6080) Under a landscape lock UIKit keeps the interface landscape with the portrait-only modal up, so the covered view is never told portrait. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Compared 189 screenshots: 189 matched. Benchmark Results
Build and Run Timing
Detailed Performance Metrics
|
Fixes the remaining case of #6080: app in landscape, portrait-only camera opened, phone kept landscape, photo accepted -> the app returns with portrait display/Form dimensions over a landscape view.
Presenting the portrait-only modal sends the covered controller a portrait
viewWillTransitionToSize:, which publishes the portrait size, but the covered view is never laid out portrait. On dismissal its bounds are unchanged, so no layout pass runs and #6085'sviewDidLayoutSubviewssync never fires.viewDidLayoutSubviews' sync is nowcn1PublishViewSizeIfChanged, also called fromviewDidAppearand from the transition completion (skipped while still covered).NativeModalRotationTestgains a landscape-stays-landscape case that requires the precondition (portrait display over a landscape view under the modal) and then asserts the display matches the view after dismissal.🤖 Generated with Claude Code