Skip to content

[Testing] SafeArea Feature Matrix Test Cases for ContentView - #36065

Merged
kubaflo merged 3 commits into
dotnet:inflight/currentfrom
TamilarasanSF4853:ContentView-safearea-feature-matrix
Jul 6, 2026
Merged

kubaflo merged 3 commits into
dotnet:inflight/currentfrom
TamilarasanSF4853:ContentView-safearea-feature-matrix

Conversation

@TamilarasanSF4853

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 36065

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 36065"

@dotnet-policy-service dotnet-policy-service Bot added the community ✨ Community Contribution label Jun 22, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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.

@dotnet-policy-service dotnet-policy-service Bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Jun 22, 2026
@Ahamed-Ali Ahamed-Ali added the area-testing Unit tests, device tests label Jun 24, 2026
@sheiksyedm

Copy link
Copy Markdown
Contributor

/azp run maui-pr-uitests

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@Ahamed-Ali Ahamed-Ali added the area-safearea Issues/PRs that have to do with the SafeArea functionality label Jul 3, 2026
@sheiksyedm
sheiksyedm marked this pull request as ready for review July 3, 2026 12:43
Copilot AI review requested due to automatic review settings July 3, 2026 12:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 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 toggle SafeAreaEdges on a ContentView and 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
Comment on lines +29 to +32
private void OnContentViewSafeAreaButtonClicked(object sender, EventArgs e)
{
Application.Current.Windows[0].Page = new SafeAreaContentViewPage(_viewModel);
}
@kubaflo

This comment has been minimized.

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jul 5, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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));

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🔍 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 MauiBot added s/agent-gate-passed AI verified tests catch the bug (fail without fix, pass with fix) s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Jul 5, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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.

Gate Passed Confidence Low Platform Android


🗂️ Review Sessions — click to expand
🚦 Gate — Test Before & After Fix

Gate Result: ✅ PASSED

Platform: ANDROID

⚠️ verify-tests-fail.ps1 exited 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 mirroring SafeArea_ContentPageFeatureTests for 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 None to All/SoftInput while 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.cs is 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 --required unavailable due unauthenticated GitHub CLI.
  • Public check-run evidence: maui-pr failed; 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-analysis skill 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

  1. pr-plus-reviewer
  2. try-fix-2
  3. pr
  4. try-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.

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jul 5, 2026
@kubaflo
kubaflo changed the base branch from main to inflight/current July 6, 2026 10:17
@kubaflo
kubaflo merged commit 37a89e4 into dotnet:inflight/current Jul 6, 2026
28 of 32 checks passed
@github-actions github-actions Bot added this to the .NET 10 SR9 milestone Jul 6, 2026
kubaflo pushed a commit that referenced this pull request Jul 6, 2026
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
@kubaflo kubaflo mentioned this pull request Jul 6, 2026
PureWeen pushed a commit that referenced this pull request Jul 7, 2026
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
PureWeen pushed a commit that referenced this pull request Jul 7, 2026
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
kubaflo pushed a commit that referenced this pull request Jul 10, 2026
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
kubaflo pushed a commit that referenced this pull request Jul 15, 2026
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
kubaflo pushed a commit that referenced this pull request Jul 22, 2026
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
kubaflo pushed a commit that referenced this pull request Jul 28, 2026
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
kubaflo pushed a commit that referenced this pull request Jul 29, 2026
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
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 6, 2026
@github-actions github-actions Bot modified the milestones: .NET 10 SR9, .NET 10 SR10 Aug 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-safearea Issues/PRs that have to do with the SafeArea functionality area-testing Unit tests, device tests community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-gate-passed AI verified tests catch the bug (fail without fix, pass with fix) s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants