Repository navigation
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 36065Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 36065" |
|
Hey there @@TamilarasanSF4853! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed. |
|
/azp run maui-pr-uitests |
|
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Pull request overview
This PR extends the SafeArea Feature Matrix in the Controls HostApp by adding a new ContentView-focused SafeArea test page and a corresponding Appium UI test suite, plus wiring a new navigation entry point from the SafeArea feature matrix landing page.
Changes:
- Added a new HostApp page (
SafeAreaContentViewPage) to interactively toggleSafeAreaEdgeson aContentViewand surface computed insets (including keyboard). - Added a new FeatureMatrix UI test class (
SafeArea_ContentViewFeatureTests) that validates layout behavior across SafeArea modes, keyboard states, and orientation changes. - Updated the SafeArea feature matrix landing page to navigate to the new ContentView test page.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/SafeArea_ContentViewFeatureTests.cs | Adds the automated UI test coverage for ContentView SafeArea scenarios (including keyboard/orientation). |
| src/Controls/tests/TestCases.HostApp/FeatureMatrix/SafeArea/SafeAreaFeaturePage.xaml | Adds a new button to launch the ContentView SafeArea test page from the feature matrix. |
| src/Controls/tests/TestCases.HostApp/FeatureMatrix/SafeArea/SafeAreaFeaturePage.xaml.cs | Implements the click handler for navigating to the new ContentView SafeArea page. |
| src/Controls/tests/TestCases.HostApp/FeatureMatrix/SafeArea/ContentView/SafeAreaContentViewPage.xaml | Introduces the new ContentView SafeArea interactive UI (edge indicators, toggles, entry for keyboard). |
| src/Controls/tests/TestCases.HostApp/FeatureMatrix/SafeArea/ContentView/SafeAreaContentViewPage.xaml.cs | Implements page logic for updating inset labels and Android inset-listening behavior. |
| // Keyboard + Runtime SafeArea Changes | ||
| // ────────────────────────────────────────────── | ||
|
|
||
| #if TEST_FAILS_ON_IOS // Issue Link - https://github.com/dotnet/maui/issues/34847 |
| $"After keyboard - bottom label Bottom ({bottomLabelAfterRect.Bottom}) should be equal to screenHeight ({screenHeight})"); | ||
| } | ||
|
|
||
| #if TEST_FAILS_ON_IOS // Issue Link - https://github.com/dotnet/maui/issues/34847 |
| // Landscape Keyboard Position Validation | ||
| // ────────────────────────────────────────────── | ||
|
|
||
| #if TEST_FAILS_ON_ANDROID // In landscape mode on Android, the keyboard covers the entire screen, and Appium cannot find elements to validate their positions |
| private void OnContentViewSafeAreaButtonClicked(object sender, EventArgs e) | ||
| { | ||
| Application.Current.Windows[0].Page = new SafeAreaContentViewPage(_viewModel); | ||
| } |
This comment has been minimized.
This comment has been minimized.
MauiBot
left a comment
There was a problem hiding this comment.
Expert Review — 1 findings
See inline comments for details.
| // Listen for window inset changes (keyboard show/hide) to update the label in real time | ||
| if (Microsoft.Maui.ApplicationModel.Platform.CurrentActivity?.Window?.DecorView is Android.Views.View decorView) | ||
| { | ||
| ViewCompat.SetOnApplyWindowInsetsListener(decorView, new ContentViewSafeAreaInsetsListener(this)); |
There was a problem hiding this comment.
🔍 AI-Generated Review (multi-model)
[major] Android listener lifecycle / Memory Leak Prevention — This installs an IOnApplyWindowInsetsListener on the Activity decor view every time the page appears, but the listener is never cleared and it strongly captures the page. Because the decor view is shared across the HostApp, navigating away can retain this SafeAreaContentViewPage and later keyboard/inset dispatches can update a stale page. The try-fix-2 shape should supersede this: scope the listener to the label/platform view, clear it from Disappearing/Unloaded, and use a weak page reference.
MauiBot
left a comment
There was a problem hiding this comment.
AI Review Summary
@TamilarasanSF4853 — new AI review results are available based on this last commit:
d1e2c52. To request a fresh review after new comments or commits, comment/review rerun.
🗂️ Review Sessions — click to expand
🚦 Gate — Test Before & After Fix
Gate Result: ✅ PASSED
Platform: ANDROID
⚠️ verify-tests-fail.ps1exited before writing a verification report. Diagnostics below.
Exit code: 0
Artifacts written before exit:
test-failure-SafeArea_ContentViewFeatureTests.log(44.7 KB)verification-log.txt(0.2 KB)
Gate output log (last 60 lines)
🔹 Booting android device/simulator (shared across all test runs)...
🔹 Detecting and starting android device...
ℹ️ Auto-detecting Android device...
✅ Found running Android device: emulator-5554
✅ Using Android device: emulator-5554
✅ DEVICE_UDID environment variable set: emulator-5554
✅ Device ready: emulator-5554
ℹ️ Using .NET TFM version: net10.0 (from Directory.Build.props)
╔═══════════════════════════════════════════════════════════╗
║ .NET MAUI HostApp Build and Test Script ║
║ Platform: ANDROID ║
╚═══════════════════════════════════════════════════════════╝
🔹 Validating prerequisites...
ℹ️ Created CustomAgentLogsTmp/UITests directory
✅ Prerequisites validated
🔹 Detecting and starting android device...
✅ Using Android device: emulator-5554
✅ DEVICE_UDID environment variable set: emulator-5554
🔹 Building and deploying Controls.TestCases.HostApp for Android...
ℹ️ Build command: dotnet build /home/vsts/work/1/s/src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj -f net10.0-android -c Debug -t:Run --no-incremental
✅ Build and deploy completed in 564.59462 seconds
🔹 Determining test project...
✅ Test project: /home/vsts/work/1/s/src/Controls/tests/TestCases.Android.Tests/Controls.TestCases.Android.Tests.csproj
🔹 Running UI tests with filter: SafeArea_ContentViewFeatureTests
ℹ️ Clearing Android logcat buffer before test...
ℹ️ Waiting for Android settings service...
✅ Settings service ready (device_name=sdk_gphone_x86_64)
ℹ️ Warming up emulator/SystemUI before test...
⚠️ ANR dialog detected before test — dismissing (HOME + close dialogs)
✅ Emulator warmed up and responsive
ℹ️ Executing: dotnet test --filter "SafeArea_ContentViewFeatureTests"
ℹ️ Set DEVICE_UDID environment variable: emulator-5554
ℹ️ Set APPIUM_LOG_FILE: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/appium.log (screenshots will be saved here)
ℹ️ TRX file will be written to: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/TestResults/SafeArea_ContentViewFeatureTests.trx
ℹ️ Actual dotnet test args: /home/vsts/work/1/s/src/Controls/tests/TestCases.Android.Tests/Controls.TestCases.Android.Tests.csproj --filter SafeArea_ContentViewFeatureTests --logger trx;LogFileName=SafeArea_ContentViewFeatureTests.trx --logger console;verbosity=normal --results-directory /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/TestResults /p:VStestUseMSBuildOutput=false
ℹ️ Test output saved to: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/test-output.log
🔹 Collecting test artifacts (screenshots, page source)...
ℹ️ Test artifacts collected: 0 screenshot(s), 0 page source(s) (copied 0 from assembly dir)
🔹 Capturing device logs...
ℹ️ Dumping Android logcat buffer (filtered to HostApp)...
ℹ️ Android logcat saved to: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/android-device.log
═══════════════════════════════════════════════════════
Android Device Logs (Last 100 lines)
═══════════════════════════════════════════════════════
07-05 16:25:19.340 9494 9554 I Finsky : [582] ItemStore: Not cached: com.microsoft.maui.uitests
07-05 16:25:27.000 9494 9570 E Finsky : [592] ItemStore: getItems RPC failed for item com.microsoft.maui.uitests
ℹ️ Full device log: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests/android-device.log
═══════════════════════════════════════════════════════
❌ Tests failed with exit code 1
ℹ️ Review logs at: /home/vsts/work/1/s/CustomAgentLogsTmp/UITests
==========================================
VERIFICATION RESULTS
==========================================
🖥️ [UITest] SafeArea_ContentViewFeatureTests: FAILED ✅ (expected)
╔═══════════════════════════════════════════════════════════╗
║ VERIFICATION PASSED ✅ ║
╠═══════════════════════════════════════════════════════════╣
║ All 1 test(s) FAILED as expected! ║
║ This proves the tests correctly reproduce the bug. ║
╚═══════════════════════════════════════════════════════════╝
📱 UI Tests — SafeAreaEdges
Detected UI test categories: SafeAreaEdges
✅ Deep UI tests — 93 passed, 0 failed across 1 category on platform-pool agent (replaces in-process counts above).
🧪 UI Test Execution Results (deep, platform pool)
| Category | Tests | Snapshot diffs |
|---|---|---|
SafeAreaEdges |
93/93 ✓ | 1 diff PNG |
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs) |
📋 Pre-Flight — Context & Validation
Issue: #34847 - [iOS] Switching SafeAreaEdges from None to All/SoftInput while keyboard is open does not move bottom content above keyboard
PR: #36065 - [Testing] SafeArea Feature Matrix Test Cases for ContentView
Platforms Affected: iOS issue coverage; tests compile/run for Android and iOS (#if ANDROID || IOS); requested testing platform is android
Files Changed: 4 implementation/HostApp, 1 test
Key Findings
- PR is test-only: it adds a
SafeAreaContentViewPage, navigation from the SafeArea feature page, and a large Appium suite mirroringSafeArea_ContentPageFeatureTestsfor ContentView behavior. - Gate result was provided as passed: tests fail without the fix and pass with the PR fix. Gate verification was not re-run.
- The linked bug is #34847: iOS SafeAreaEdges runtime switching from
NonetoAll/SoftInputwhile the keyboard is open does not move bottom content above the keyboard. - GitHub CLI is unauthenticated in this environment, so PR metadata/comments were gathered from local git state and unauthenticated GitHub REST API where available.
Code Review Summary
Verdict: NEEDS_DISCUSSION
Confidence: low
Errors: 0 | Warnings: 1 | Suggestions: 2
Key code review findings:
- ⚠ Android decor-view inset listener installed by
SafeAreaContentViewPage.xaml.csis never cleared; it can retain a stale page after navigation and dispatch future inset updates to it. - ℹ Several orientation tests rely on
Thread.Sleep(1000); existing sibling tests do this too, but UI test guidance prefers deterministic waits where possible. - ℹ The new ContentView test suite duplicates the ContentPage suite; a shared helper/base could reduce drift.
- Failure modes: navigating away after Android listener registration can leave the old page captured; keyboard/insets after page replacement can dispatch through stale listener;
TEST_FAILS_ON_*conventions appear consistent with existing platform-exclusion patterns.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #36065 | Adds a dedicated ContentView SafeArea feature-matrix page and a ContentView-specific UI-test suite that mirrors ContentPage SafeArea coverage. | ✅ PASSED (Gate) | SafeAreaContentViewPage.xaml, SafeAreaContentViewPage.xaml.cs, SafeAreaFeaturePage.xaml, SafeAreaFeaturePage.xaml.cs, SafeArea_ContentViewFeatureTests.cs |
Original PR; test-only coverage expansion. |
🔬 Code Review — Deep Analysis
Code Review — PR #36065
Independent Assessment
What this changes: Adds a SafeArea Feature Matrix page for ContentView, wires it from the SafeArea landing page, and adds broad Appium UI coverage for ContentView.SafeAreaEdges across edge modes, keyboard, and orientation.
Inferred motivation: Extend existing ContentPage SafeArea test coverage to ContentView.
Reconciliation with PR Narrative
Author claims: New ContentView SafeArea test page + UI tests, linked to #34847.
Agreement/disagreement: Matches the code.
Prior Review Reconciliation
No prior ❌ Error findings found. Existing Copilot inline comments about TEST_FAILS_ON_* appear non-blocking and conflict with the repo’s existing convention: these constants are defined on other platform projects to exclude tests from the failing platform.
Blast Radius Assessment
- Runs for all instances: No; test HostApp feature page only.
- Startup impact: No.
- Static/shared state: No new global state.
CI Status
- Required-check result:
gh pr checks --requiredunavailable due unauthenticated GitHub CLI. - Public check-run evidence:
maui-prfailed; failing legs include macOS integration Build and Windows Helix Unit Tests Debug. - Classification: likely unrelated to this test-only PR, but not fully classifiable here.
- Action taken: attempted
azdo-build-investigator;ci-analysisskill unavailable. Confidence capped low; no LGTM while CI is red/undetermined.
Findings
⚠️ Warning — Android window inset listener is never cleared
src/Controls/tests/TestCases.HostApp/FeatureMatrix/SafeArea/ContentView/SafeAreaContentViewPage.xaml.cs:33
The page installs an IOnApplyWindowInsetsListener on the shared Activity decor view but never removes it on disappearance/disconnect. Because the listener captures the page, navigating away can leave a stale page referenced and future inset dispatches may update a page that is no longer current. This mirrors the existing ContentPage helper, but this PR propagates the pattern.
💡 Suggestion — Avoid expanding arbitrary sleeps
SafeArea_ContentViewFeatureTests.cs:1123 and similar
Orientation tests add many Thread.Sleep(1000) calls. Existing sibling tests do this too, but UI test guidance prefers deterministic waits where possible.
💡 Suggestion — Shared SafeArea test helpers
SafeArea_ContentViewFeatureTests.cs:24
The helper methods duplicate the ContentPage suite. A shared base/helper would reduce drift.
Failure-Mode Probing
- Navigating away after Android listener registration: listener can retain old page.
- Keyboard/insets after page replacement: stale listener may still dispatch updates.
- Tests running on excluded platforms:
TEST_FAILS_ON_*usage matches existing convention.
Verdict: NEEDS_DISCUSSION
Confidence: low
Summary: Code is broadly sound and test-only, but CI is red/undetermined and the Android decor-view listener lifecycle deserves human review before merging. No GitHub comments were posted.
🛠️ Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| 1 | try-fix-1 | Removed Android DecorView inset listener and used page-local lifecycle/focus delayed refreshes. | ❌ FAILED | 2 files | Android keyboard tests lost live IME inset updates; SafeAreaInsetsLabel reported stale/zero keyboard height, so GetKeyboardY() computed full screen height. |
| 2 | try-fix-2 | Kept live Android IME inset callbacks but moved listener ownership from global DecorView to page-owned SafeAreaInsetsLabel native view, with Disappearing/Unloaded cleanup, listener disposal, and weak page reference. |
✅ PASSED | 1 file | Full Android SafeArea_ContentViewFeatureTests filter passed after compile-style correction. Addresses code-review lifecycle warning while preserving PR behavior. |
| PR | PR #36065 | Adds dedicated ContentView SafeArea feature-matrix page and ContentView-specific Appium suite. | ✅ PASSED (Gate) | 5 files | Original PR; gate result supplied by caller and not re-run. |
Cross-Pollination
| Model | Round | New Ideas? | Details |
|---|---|---|---|
| maui-expert-reviewer | 1 | Yes | Candidate 1: remove global listener and use delayed page-local refreshes. Failed Android keyboard tests because live inset callbacks are required. |
| maui-expert-reviewer | 2 | Yes | Candidate 2: preserve live callbacks but attach to a page-owned native label view with cleanup and weak references. Passed full Android suite. |
Narrative
Candidate 1 explored the most aggressive lifecycle-safe alternative: eliminating the Android window-insets listener entirely. It improved ownership but failed the Android keyboard cases because the test suite depends on current IME height in SafeAreaInsetsLabel.
Candidate 2 incorporated that failure: live Android inset callbacks are necessary, but they do not need to be installed on the shared Activity DecorView. Scoping the listener to the page-owned SafeAreaInsetsLabel platform view keeps real-time updates while avoiding a stale page captured by a global listener. This is a strictly safer implementation than the PR's listener lifecycle and changes only one source file.
Exhausted: No — stopped because Candidate #2 passed all requested Android tests and is demonstrably better than the PR's current Android listener handling.
Selected Fix: Candidate #2 — page-owned Android inset listener with explicit cleanup and weak page reference.
📝 Recommended PR Title & Description
Assessment: ✏️ Recommend updating — the current metadata accurately describes the raw PR, but the winning fix adds Android listener lifecycle cleanup and the title does not follow the platform/component formula.
Recommended title
[Android/iOS] SafeArea: Add ContentView feature-matrix tests
Recommended description
This pull request introduces a new test page for validating SafeArea behavior within a `ContentView`, along with associated UI and code-behind logic. It also updates navigation in the SafeArea feature matrix to allow launching this new test page.
**Addition of SafeArea ContentView test:**
* Added a new XAML page, `SafeAreaContentViewPage.xaml`, which provides a UI for testing how `SafeAreaEdges` are handled when applied to a `ContentView`. The page includes edge indicators, controls for toggling safe area settings, and a test entry for keyboard interaction.
* Implemented the code-behind in `SafeAreaContentViewPage.xaml.cs`, including logic for updating safe area insets, handling navigation, and responding to safe area edge button clicks.
* Added Android-specific handling for real-time keyboard/inset updates while scoping the inset listener to the page-owned label platform view and cleaning it up on page teardown to avoid stale page references.
**Navigation and integration updates:**
* Updated `SafeAreaFeaturePage.xaml` to add a new button ("ContentView SafeArea") that allows users to navigate to the new ContentView test page.
* Added an event handler in `SafeAreaFeaturePage.xaml.cs` to handle navigation when the new button is clicked, launching the `SafeAreaContentViewPage`.
**Issue Found:**
https://github.com/dotnet/maui/issues/34847
🏁 Report — Final Recommendation
Comparative Analysis — PR #36065
Candidates
| Candidate | Result | Assessment |
|---|---|---|
pr |
✅ PASSED gate | Adds the needed ContentView SafeArea feature-matrix page and tests, but leaves an Android DecorView inset listener installed globally with no cleanup. This can retain/update a stale page after navigation. |
pr-plus-reviewer |
✅ PASSED by equivalence to try-fix-2 |
Keeps the PR's coverage and behavior, applies the expert reviewer's lifecycle fix, scopes the Android inset listener to a page-owned platform view, and cleans it up on page teardown. |
try-fix-1 |
❌ FAILED | Removed live Android inset callbacks and relied on delayed page-local refreshes. Android keyboard scenarios failed because SafeAreaInsetsLabel reported stale/zero keyboard height. Per ranking rule, this must rank below passing candidates. |
try-fix-2 |
✅ PASSED | Same effective improvement as pr-plus-reviewer: preserve live Android IME inset callbacks while making listener ownership page-local with cleanup and weak page reference. |
Ranking
pr-plus-reviewertry-fix-2prtry-fix-1
Winning candidate
Winner: pr-plus-reviewer
pr-plus-reviewer is the best candidate because it retains the PR's regression coverage and applies the expert reviewer's only major actionable finding. It is equivalent in technical shape to the passing try-fix-2, but it is framed as improving the PR fix directly, so it should be preferred over the standalone alternative candidate. The raw PR fix is functional but less safe due to the unowned Android decor-view listener, and try-fix-1 is disqualified below all passing candidates because it failed regression tests.
🧭 Next Steps — review latest findings
No alternative fix was selected for this run. Review the session findings and CI results before merging.
This pull request introduces a new test page for validating SafeArea
behavior within a `ContentView`, along with associated UI and
code-behind logic. It also updates navigation in the SafeArea feature
matrix to allow launching this new test page.
**Addition of SafeArea ContentView test:**
* Added a new XAML page, `SafeAreaContentViewPage.xaml`, which provides
a UI for testing how `SafeAreaEdges` are handled when applied to a
`ContentView`. The page includes edge indicators, controls for toggling
safe area settings, and a test entry for keyboard interaction.
* Implemented the code-behind in `SafeAreaContentViewPage.xaml.cs`,
including logic for updating safe area insets, handling navigation, and
responding to safe area edge button clicks. Special handling for Android
ensures real-time updates when the keyboard appears/disappears.
**Navigation and integration updates:**
* Updated `SafeAreaFeaturePage.xaml` to add a new button ("ContentView
SafeArea") that allows users to navigate to the new ContentView test
page.
* Added an event handler in `SafeAreaFeaturePage.xaml.cs` to handle
navigation when the new button is clicked, launching the
`SafeAreaContentViewPage`.
**Issue Found:**
#34847
This pull request introduces a new test page for validating SafeArea
behavior within a `ContentView`, along with associated UI and
code-behind logic. It also updates navigation in the SafeArea feature
matrix to allow launching this new test page.
**Addition of SafeArea ContentView test:**
* Added a new XAML page, `SafeAreaContentViewPage.xaml`, which provides
a UI for testing how `SafeAreaEdges` are handled when applied to a
`ContentView`. The page includes edge indicators, controls for toggling
safe area settings, and a test entry for keyboard interaction.
* Implemented the code-behind in `SafeAreaContentViewPage.xaml.cs`,
including logic for updating safe area insets, handling navigation, and
responding to safe area edge button clicks. Special handling for Android
ensures real-time updates when the keyboard appears/disappears.
**Navigation and integration updates:**
* Updated `SafeAreaFeaturePage.xaml` to add a new button ("ContentView
SafeArea") that allows users to navigate to the new ContentView test
page.
* Added an event handler in `SafeAreaFeaturePage.xaml.cs` to handle
navigation when the new button is clicked, launching the
`SafeAreaContentViewPage`.
**Issue Found:**
#34847
This pull request introduces a new test page for validating SafeArea
behavior within a `ContentView`, along with associated UI and
code-behind logic. It also updates navigation in the SafeArea feature
matrix to allow launching this new test page.
**Addition of SafeArea ContentView test:**
* Added a new XAML page, `SafeAreaContentViewPage.xaml`, which provides
a UI for testing how `SafeAreaEdges` are handled when applied to a
`ContentView`. The page includes edge indicators, controls for toggling
safe area settings, and a test entry for keyboard interaction.
* Implemented the code-behind in `SafeAreaContentViewPage.xaml.cs`,
including logic for updating safe area insets, handling navigation, and
responding to safe area edge button clicks. Special handling for Android
ensures real-time updates when the keyboard appears/disappears.
**Navigation and integration updates:**
* Updated `SafeAreaFeaturePage.xaml` to add a new button ("ContentView
SafeArea") that allows users to navigate to the new ContentView test
page.
* Added an event handler in `SafeAreaFeaturePage.xaml.cs` to handle
navigation when the new button is clicked, launching the
`SafeAreaContentViewPage`.
**Issue Found:**
#34847
This pull request introduces a new test page for validating SafeArea
behavior within a `ContentView`, along with associated UI and
code-behind logic. It also updates navigation in the SafeArea feature
matrix to allow launching this new test page.
**Addition of SafeArea ContentView test:**
* Added a new XAML page, `SafeAreaContentViewPage.xaml`, which provides
a UI for testing how `SafeAreaEdges` are handled when applied to a
`ContentView`. The page includes edge indicators, controls for toggling
safe area settings, and a test entry for keyboard interaction.
* Implemented the code-behind in `SafeAreaContentViewPage.xaml.cs`,
including logic for updating safe area insets, handling navigation, and
responding to safe area edge button clicks. Special handling for Android
ensures real-time updates when the keyboard appears/disappears.
**Navigation and integration updates:**
* Updated `SafeAreaFeaturePage.xaml` to add a new button ("ContentView
SafeArea") that allows users to navigate to the new ContentView test
page.
* Added an event handler in `SafeAreaFeaturePage.xaml.cs` to handle
navigation when the new button is clicked, launching the
`SafeAreaContentViewPage`.
**Issue Found:**
#34847
This pull request introduces a new test page for validating SafeArea
behavior within a `ContentView`, along with associated UI and
code-behind logic. It also updates navigation in the SafeArea feature
matrix to allow launching this new test page.
**Addition of SafeArea ContentView test:**
* Added a new XAML page, `SafeAreaContentViewPage.xaml`, which provides
a UI for testing how `SafeAreaEdges` are handled when applied to a
`ContentView`. The page includes edge indicators, controls for toggling
safe area settings, and a test entry for keyboard interaction.
* Implemented the code-behind in `SafeAreaContentViewPage.xaml.cs`,
including logic for updating safe area insets, handling navigation, and
responding to safe area edge button clicks. Special handling for Android
ensures real-time updates when the keyboard appears/disappears.
**Navigation and integration updates:**
* Updated `SafeAreaFeaturePage.xaml` to add a new button ("ContentView
SafeArea") that allows users to navigate to the new ContentView test
page.
* Added an event handler in `SafeAreaFeaturePage.xaml.cs` to handle
navigation when the new button is clicked, launching the
`SafeAreaContentViewPage`.
**Issue Found:**
#34847
This pull request introduces a new test page for validating SafeArea
behavior within a `ContentView`, along with associated UI and
code-behind logic. It also updates navigation in the SafeArea feature
matrix to allow launching this new test page.
**Addition of SafeArea ContentView test:**
* Added a new XAML page, `SafeAreaContentViewPage.xaml`, which provides
a UI for testing how `SafeAreaEdges` are handled when applied to a
`ContentView`. The page includes edge indicators, controls for toggling
safe area settings, and a test entry for keyboard interaction.
* Implemented the code-behind in `SafeAreaContentViewPage.xaml.cs`,
including logic for updating safe area insets, handling navigation, and
responding to safe area edge button clicks. Special handling for Android
ensures real-time updates when the keyboard appears/disappears.
**Navigation and integration updates:**
* Updated `SafeAreaFeaturePage.xaml` to add a new button ("ContentView
SafeArea") that allows users to navigate to the new ContentView test
page.
* Added an event handler in `SafeAreaFeaturePage.xaml.cs` to handle
navigation when the new button is clicked, launching the
`SafeAreaContentViewPage`.
**Issue Found:**
#34847
This pull request introduces a new test page for validating SafeArea
behavior within a `ContentView`, along with associated UI and
code-behind logic. It also updates navigation in the SafeArea feature
matrix to allow launching this new test page.
**Addition of SafeArea ContentView test:**
* Added a new XAML page, `SafeAreaContentViewPage.xaml`, which provides
a UI for testing how `SafeAreaEdges` are handled when applied to a
`ContentView`. The page includes edge indicators, controls for toggling
safe area settings, and a test entry for keyboard interaction.
* Implemented the code-behind in `SafeAreaContentViewPage.xaml.cs`,
including logic for updating safe area insets, handling navigation, and
responding to safe area edge button clicks. Special handling for Android
ensures real-time updates when the keyboard appears/disappears.
**Navigation and integration updates:**
* Updated `SafeAreaFeaturePage.xaml` to add a new button ("ContentView
SafeArea") that allows users to navigate to the new ContentView test
page.
* Added an event handler in `SafeAreaFeaturePage.xaml.cs` to handle
navigation when the new button is clicked, launching the
`SafeAreaContentViewPage`.
**Issue Found:**
#34847
This pull request introduces a new test page for validating SafeArea
behavior within a `ContentView`, along with associated UI and
code-behind logic. It also updates navigation in the SafeArea feature
matrix to allow launching this new test page.
**Addition of SafeArea ContentView test:**
* Added a new XAML page, `SafeAreaContentViewPage.xaml`, which provides
a UI for testing how `SafeAreaEdges` are handled when applied to a
`ContentView`. The page includes edge indicators, controls for toggling
safe area settings, and a test entry for keyboard interaction.
* Implemented the code-behind in `SafeAreaContentViewPage.xaml.cs`,
including logic for updating safe area insets, handling navigation, and
responding to safe area edge button clicks. Special handling for Android
ensures real-time updates when the keyboard appears/disappears.
**Navigation and integration updates:**
* Updated `SafeAreaFeaturePage.xaml` to add a new button ("ContentView
SafeArea") that allows users to navigate to the new ContentView test
page.
* Added an event handler in `SafeAreaFeaturePage.xaml.cs` to handle
navigation when the new button is clicked, launching the
`SafeAreaContentViewPage`.
**Issue Found:**
#34847
This pull request introduces a new test page for validating SafeArea behavior within a
ContentView, along with associated UI and code-behind logic. It also updates navigation in the SafeArea feature matrix to allow launching this new test page.Addition of SafeArea ContentView test:
SafeAreaContentViewPage.xaml, which provides a UI for testing howSafeAreaEdgesare handled when applied to aContentView. The page includes edge indicators, controls for toggling safe area settings, and a test entry for keyboard interaction.SafeAreaContentViewPage.xaml.cs, including logic for updating safe area insets, handling navigation, and responding to safe area edge button clicks. Special handling for Android ensures real-time updates when the keyboard appears/disappears.Navigation and integration updates:
SafeAreaFeaturePage.xamlto add a new button ("ContentView SafeArea") that allows users to navigate to the new ContentView test page.SafeAreaFeaturePage.xaml.csto handle navigation when the new button is clicked, launching theSafeAreaContentViewPage.Issue Found:
#34847