also looking at this
docs(ios): retire three refusal notes that outlived their refusals
#112
2 files
+14
-9
| @@ -600,9 +600,10 @@ fn applyBadge(count: i64) !i64 { | ||
| 600 | 600 | /// what happened rather than swallowing it. |
| 601 | 601 | /// |
| 602 | 602 | /// The completion handler is `nullable` in the header, so nil is legal and no |
| 603 | /// block is needed. Note that `requestAuthorizationWithOptions:`, which Swift | |
| 604 | /// also calls, is *not* nullable there — passing nil to that one crashes, which | |
| 605 | /// is part of why authorization is not attempted here. | |
| 603 | /// block is needed. `requestAuthorizationWithOptions:`, which the spec also | |
| 604 | /// calls, is *not* nullable there — passing nil to that one crashes, which is | |
| 605 | /// why it needs a real block. It has one now: `requestBadgeAuthorization` | |
| 606 | /// above asks before this writes, so this function no longer runs unasked. | |
| 606 | 607 | fn setBadgeThroughNotificationCenter(count: c_long) bool { |
| 607 | 608 | const UNCenterClass = objc.objc_getClass("UNUserNotificationCenter") orelse return false; |
| 608 | 609 | const sel_current = objc.sel_registerName("currentNotificationCenter") orelse return false; |
| @@ -65,8 +65,10 @@ | ||
| 65 | 65 | //! those took actions *away* from the shim because the shim's answers were |
| 66 | 66 | //! fabricated or broken; these shim answers are real, and taking them away |
| 67 | 67 | //! would trade working behaviour for a tidier table. The cost is that the |
| 68 | //! conformance ratchet keeps counting `openSettings` as not-yet-migrated — | |
| 69 | //! which is the truth. | |
| 68 | //! conformance ratchet keeps counting the payload values above — location, | |
| 69 | //! photos, contacts, calendar, reminders — against `requestPermission`, which | |
| 70 | //! is the truth. It no longer applies to `openSettings`: that one is claimed, | |
| 71 | //! and the ratchet counts it as migrated. | |
| 70 | 72 | //! |
| 71 | 73 | //! ## What is carried across exactly |
| 72 | 74 | //! |
| @@ -123,10 +125,12 @@ const Id = ?*anyopaque; | ||
| 123 | 125 | |
| 124 | 126 | /// The action names, spelled exactly as the Swift `case` labels spell them. |
| 125 | 127 | /// |
| 126 | /// `openSettings` is deliberately absent — see the module comment. Adding it | |
| 127 | /// here without first giving `ios_async` a boolean-literal reply would ship | |
| 128 | /// the truthy-`"denied"` bug, and the conformance scan would count the action | |
| 129 | /// as migrated while the shim was still the only honest server of it. | |
| 128 | /// All three are claimed. `openSettings` was not, and this comment said so | |
| 129 | /// long after it stopped being true — the module comment above records both | |
| 130 | /// the original objection and why a module-owned global block answered it. | |
| 131 | /// A doc comment that contradicts the `A` block three lines below it is worse | |
| 132 | /// than none: `scheduleNotification` sat with the shim for days after its | |
| 133 | /// blocker was fixed because nobody re-read the note that described it. | |
| 130 | 134 | pub const A = struct { |
| 131 | 135 | pub const check_permission = "checkPermission"; |
| 132 | 136 | pub const request_permission = "requestPermission"; |