mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-11-14 10:39:32 +01:00
test(terminal): guard the xterm mouse-service privates touch forwarding reads
Merge-time fix for #664: _shouldForwardTouchToApp reads terminal._core.coreMouseService.activeEncoding, an xterm private. The bundle-string loop in test/xterm-private-api.test.ts now checks coreMouseService and activeEncoding too, and both failure messages name _shouldForwardTouchToApp, so an xterm upgrade that renames either field cannot silently stop touch forwarding to native SGR tracking apps. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
971192ce02
commit
a56038ebef
1 file changed
+13
-5
@@ -49,8 +49,10 @@ describe('xterm private-API dependency guard', () => {
|
||||
'xterm moved off the verified version — re-verify _kickRenderer in a real browser ' +
|
||||
'(terminal-ui.js: _core._renderService._renderDebouncer._animationFrame) AND the ' +
|
||||
'CompositionHelper fields installEditSync() uses (terminal-keycode229-recovery.js: ' +
|
||||
'_handleAnyTextareaChanges, _coreService, _isComposing, _isSendingComposition, _dataAlreadySent), ' +
|
||||
'then update VERIFIED_XTERM_VERSION here. The accessor is optional-chained, so a renamed field ' +
|
||||
'_handleAnyTextareaChanges, _coreService, _isComposing, _isSendingComposition, _dataAlreadySent) ' +
|
||||
'and the mouse-encoding read _shouldForwardTouchToApp makes (terminal-ui.js: ' +
|
||||
'_core.coreMouseService.activeEncoding), then update VERIFIED_XTERM_VERSION here. ' +
|
||||
'The accessor is optional-chained, so a renamed field ' +
|
||||
'degrades to a silent no-op and the freeze it heals comes back unnoticed.'
|
||||
).toBe(VERIFIED_XTERM_VERSION);
|
||||
});
|
||||
@@ -60,9 +62,12 @@ describe('xterm private-API dependency guard', () => {
|
||||
// append-only diff duplicates). It reaches `_compositionHelper`, `_coreService`, `_isComposing`,
|
||||
// `_isSendingComposition` and `_dataAlreadySent`; if xterm renames any of them the install quietly
|
||||
// falls back to xterm's own handler and the duplication returns (or, for `_isSendingComposition`, a
|
||||
// composition xterm finalizes at an Enter keydown is sent twice). Property names survive
|
||||
// composition xterm finalizes at an Enter keydown is sent twice). terminal-ui.js's
|
||||
// _shouldForwardTouchToApp reads `_core.coreMouseService.activeEncoding` to forward a touch drag
|
||||
// only to an app that asked for SGR mouse reports; if either name changes the read is undefined
|
||||
// and touch quietly stops forwarding to native SGR tracking apps. Property names survive
|
||||
// minification, so a string check on the shipped bundle catches a rename on upgrade.
|
||||
it('still ships the composition-helper fields the edit-based 229 sync depends on', () => {
|
||||
it('still ships the composition-helper and mouse-service fields terminal input depends on', () => {
|
||||
const bundle = readFileSync(resolve(root, 'node_modules/@xterm/xterm/lib/xterm.js'), 'utf8');
|
||||
for (const name of [
|
||||
'_handleAnyTextareaChanges',
|
||||
@@ -71,11 +76,14 @@ describe('xterm private-API dependency guard', () => {
|
||||
'_isComposing',
|
||||
'_isSendingComposition',
|
||||
'_dataAlreadySent',
|
||||
'coreMouseService',
|
||||
'activeEncoding',
|
||||
]) {
|
||||
expect(
|
||||
bundle,
|
||||
`xterm no longer mentions ${name}: re-verify terminal-keycode229-recovery.js installEditSync() ` +
|
||||
'(src/web/public) against the new CompositionHelper before bumping VERIFIED_XTERM_VERSION'
|
||||
'against the new CompositionHelper, and terminal-ui.js _shouldForwardTouchToApp against the ' +
|
||||
'new CoreMouseService (both in src/web/public), before bumping VERIFIED_XTERM_VERSION'
|
||||
).toContain(name);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user