Commit 74b35c7
Dogfood the modal navigation seam in the in-box Tizen backend
The seam was so far only exercised by tests and by external backends. This
makes the framework its own first consumer: the Tizen presentation now lives
in TizenModalNavigationPlatform, an IModalNavigationPlatform written entirely
against IModalNavigationHost with no access to ModalNavigationManager
internals. If the contract were insufficient for a real backend, this
refactor could not have been written — which is the point.
The Tizen partial keeps the platform hooks but delegates to that type, and
its stack bookkeeping now mirrors PushModalWithOverrideAsync /
PopModalWithOverrideAsync exactly, so the fallback path and the seam path
apply identical ordering.
This is a mechanical translation. Every call and its order is preserved: pop
still sends Disappearing, no-ops when the modal has no platform handler, pops
the native stack, sends Appearing on the revealed page and disposes the
handler; push still sends Disappearing, realizes the view, pushes, and sends
Appearing only if the modal is still current. The one reordering is moving
_platformModalPages.Add ahead of the platform call to satisfy the seam
contract, which is equivalent because CurrentPage is computed from the
requested stack, not from _platformModalPages.
Deliberately no DI registration: with no factory registered the built-in path
runs, and a registered IModalNavigationPlatformFactory still takes precedence
and short-circuits before this type is ever constructed. So this changes no
resolution behavior and needs no precedence rules.
Note on verification. Tizen has IncludeTizenTargetFrameworks=false in CI
("Disabled until net10.0-tizen is available") and the Tizen SDK pack is not
installable locally, so this code compiles nowhere in the normal build. It
was instead validated by compiling both files against the real seam
interfaces with stubs standing in only for the Tizen-native calls, which
checks interface conformance, signatures, nullability and name resolution;
the Tizen-native calls themselves are copied verbatim from the shipped file.
Adds a test asserting the no-factory path maintains PlatformModalStack with
the same ordering the seam promises, since the Tizen delegation now depends
on that invariant.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>1 parent 2f80937 commit 74b35c7
3 files changed
Lines changed: 128 additions & 33 deletions
File tree
- src/Controls
- tests/Core.UnitTests
Lines changed: 19 additions & 33 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
8 | 7 | | |
9 | 8 | | |
10 | | - | |
11 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
12 | 16 | | |
13 | 17 | | |
14 | 18 | | |
15 | 19 | | |
16 | | - | |
| 20 | + | |
17 | 21 | | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
| 22 | + | |
| 23 | + | |
22 | 24 | | |
23 | 25 | | |
24 | 26 | | |
25 | 27 | | |
26 | | - | |
27 | 28 | | |
28 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
29 | 32 | | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
| 33 | + | |
37 | 34 | | |
38 | 35 | | |
39 | 36 | | |
40 | | - | |
| 37 | + | |
41 | 38 | | |
42 | | - | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
43 | 42 | | |
44 | 43 | | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
| 44 | + | |
59 | 45 | | |
60 | 46 | | |
61 | 47 | | |
Lines changed: 78 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
Lines changed: 31 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
116 | 147 | | |
117 | 148 | | |
118 | 149 | | |
| |||
0 commit comments