fix: lock screen via IOHID Power press on iOS 27#1171
Conversation
|
|
|
The change lg. Could you sign the CLA as well? @agrim0312 |
Yup, done !! |
|
The CLA is linked to the git commit's email address. It might be different from your signed email cc @agrim0312 |
You're right — when I opened this PR, my commit's author email was tied to a CLA signed under a different email than the one associated with this account. After seeing the CLA check fail, I've now re-signed the CLA using the email linked to @agrim0312. Could you please advise on the next steps to get the check to pass? |
|
Either may work:
|
b2f10a9 to
4eee26b
Compare
Thanks a lot, @KazuCocoa! 🙏 That did the trick — I amended the commit to use the email my CLA is signed under (there was a small typo in the original author email) and force-pushed. The CLA check is passing now. Appreciate you pointing me in the right direction. |
## [15.1.5](v15.1.4...v15.1.5) (2026-07-12) ### Bug Fixes * lock screen via IOHID Power press on iOS 27 ([#1171](#1171)) ([64be238](64be238))
|
🎉 This PR is included in version 15.1.5 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Problem
On iOS 27,
[XCUIDevice pressLockButton]no longer locks the screen. It routesthrough
testmanagerd, which waits on aButtonEventsCompletedconfirmationthat iOS 27 never fires — so it times out and never locks, and
POST /wda/lockfails with
Timed out while waiting until the screen gets locked.testmanagerd : Timed out after waiting 5.0s for ButtonEventsCompleted,
event will be implicitly confirmed with no error other than this log message.
Fix
On iOS 27+, lock via a direct IOHID Power press (
fb_performIOHIDEventWithPage:,page
0x0C/ usage0x30,0.5s) instead ofpressLockButton. Older iOS isunchanged. The existing
FBRunLoopSpinnerwait on thecom.apple.springboard.lockstatenotification stays, so success is stillconfirmed by the screen actually locking. Scoped to
fb_lockScreen:.Testing
Verified on a physical iOS 27 device: unlocked (
/wda/locked→false),POST /wda/lockreturned 200 in ~2s (no timeout),/wda/locked→true.Syslog on the fixed path — the injected event (
page 12/usage 48=0x0C/0x30,0.50s) is confirmed cleanly and the device locks: