macOS IM: per-keydown command queue for Zhuyin TCIM
2b95292
Source/WebKit/UIProcess/mac/WebViewImpl.h
- std::optional<Vector<WebCore::KeypressCommand>> m_collectedKeypressCommands;
- Vector<Function<void()>> m_interpretKeyEventHoldingTank;
+ Deque<Vector<WebCore::KeypressCommand>> m_collectedKeypressCommands;
+ Deque<Function<void()>> m_interpretKeyEventHoldingTank;
WebKit on macOS routes keyboard events through NSTextInputClient's handleEventByInputMethod:, which dispatches asynchronously to system input methods over XPC. A prior fix (297270@main) introduced m_interpretKeyEventHoldingTank to enforce DOM event ordering: keydown must reach the web process before any compositionstart/update events the IM emits. All keyboard events were serialized through that tank — but the Traditional Chinese Zhuyin IM uses its XPC queue depth as a liveness signal, and the empty queue stalled its main thread. The fix makes keydowns bypass the tank, feeding the IM continuously, while keyups remain serialized through a Deque so the front slot always corresponds to the keydown the IM is currently processing.
Significance
This replaces a flat holding tank with a per-keydown Deque that allows multiple keydowns to be simultaneously in-flight to the IM — a meaningful concurrency-model change to a security-sensitive input pipeline.
Audit directions
a Aaaaaaa Aaaaaaaa Aaaaaaaaaaaa Aaaa Aaaaa Aa Aaaaaa Aaa Aaaaaaa Aaa Aa Aa Aaaaaaaaa Aaaaaaaaaaa Aa Aa Aaaaaaaaaa Aaaaa Aa Aaaaaa Aaaaaaaaaaaaaa Aaa Aaaaaaaa Aa Aaaaaa Aaaaa a Aaaaaaaaaaa Aa Aaaaaaaaaaaaaaaaaa Aaaaa Aaaaaa Aaaa Aaaaa Aaaaaaaaaaaaaaaaaaaaaaa Aaaaaaaaaaaaaa Aa Aaaaaaaaaaaaaaaa Aaaaaaaaa Aaa Aa Aaaaa Aaaaa Aaaaaaa Aaa Aaaaaaaaaaaaaa Aaaaaaaaaaa Aaa Aaaaaaaa Aaaaaaaa Aaaa Aaa Aaaaaaaaa Aaaa Aaaaaaaaa Aaaaaa
a Aaaaaaa Aaaaaaaaaaaaaa Aaaaaaaaaa Aa Aaa Aaaa Aaaaaaaa Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Aaaa Aaaaaaaaa Aaaaa Aaa Aa Aaaa Aaaa Aaaaaaaaa Aaa Aaaaaaaaa Aaaaaaaaaa Aa Aaaaa Aaaaaaaaa Aaa Aaaaaaaaaaaa Aaaaa Aaaaa Aaa Aaaaaaaaaaa Aaaaaaa Aaaaa Aa Aaa Aaaa Aaaaa Aaaaa Aa Aaaaaaaaaaaa Aa Aaaaaaaaaa Aaaaaaa Aa Aaaaaaaaa Aaa Aaaaaa
a Aaaaaaaaaaaaaaaa Aaaaaaaaaaa Aaaaaaaaaaaaaa Aaa Aaaaaaaaaaaaaa Aaaa Aaaaaaaaaa Aaaaaaaaaaaaaaaaaaaaaaaaaaa Aaaaaaaa Aaaa Aa Aaaaaa Aaaaaaaaaa Aaaa Aaaaa Aaaaaa Aaa Aaaaaa Aa a Aaaaaaaa Aaaaaaa Aaaaaaaaaa Aaaaa Aaaaaaaaaaaaa Aa Aaaaa Aaaaa Aaaaaaaaaa Aaa Aaaa Aaaaaaaaa Aaaaaaaaaa Aaaaa Aaaa Aaaaa Aaa Aaaaaaa Aaaaaa Aaaaa Aa Aaaaa Aa Aaa Aaaaa a Aaa Aaaaaaaaaa Aaaaa Aaa Aaa Aaaaaaa Aaa Aaaa Aaaaaaaaaaaa
a Aaaaaaaaaaaaaaaaaaaaaaa Aaaaaaaaaaaa Aa Aaaaa Aaaaaaaaaa Aaaaaaaaaa a Aaaaaaaaaaaaaaaaaaaaaaaaaaa Aaa Aaaaaaa Aaaa Aaaaaaa Aaaaaa Aa Aaa Aaaaaaaaa Aa Aaaa Aaaaaaaaaa Aaaa Aaaaaa
🔒New concurrent in-flight keydown model introduces ordering invariants and async re-entrancy paths worth auditing for command misrouting and memory safety.
더 확인하려면 구독해 주세요