Correctly mask non-BMP clipboard characters

JavaScript strings use UTF-16 encoding under the hood, but we only want
a single '?' per character we replace. So we need to be more careful
which methods we use when iterating over the clipboard string.
This commit is contained in:
Pierre Ossman
2022-10-27 16:19:58 +02:00
parent 6b555f1f74
commit 6eb17b27a0
2 changed files with 23 additions and 4 deletions
+8
View File
@@ -441,6 +441,14 @@ describe('Remote Frame Buffer Protocol Client', function () {
new Uint8Array([97, 98, 99, 63]));
});
it('should mask characters, not UTF-16 code points', function () {
client.clipboardPasteFrom('😂');
expect(RFB.messages.clientCutText).to.have.been.calledOnce;
expect(RFB.messages.clientCutText).to.have.been.calledWith(client._sock,
new Uint8Array([63]));
});
it('should send an notify if extended clipboard is supported by server', function () {
// Send our capabilities
let data = [3, 0, 0, 0];