Merge branch 'latin1' of https://github.com/CendioOssman/noVNC
This commit is contained in:
commit
2d559fb2e1
25
core/rfb.js
25
core/rfb.js
|
@ -490,10 +490,27 @@ export default class RFB extends EventTargetMixin {
|
||||||
this._clipboardText = text;
|
this._clipboardText = text;
|
||||||
RFB.messages.extendedClipboardNotify(this._sock, [extendedClipboardFormatText]);
|
RFB.messages.extendedClipboardNotify(this._sock, [extendedClipboardFormatText]);
|
||||||
} else {
|
} else {
|
||||||
let data = new Uint8Array(text.length);
|
let length, i;
|
||||||
for (let i = 0; i < text.length; i++) {
|
let data;
|
||||||
// FIXME: text can have values outside of Latin1/Uint8
|
|
||||||
data[i] = text.charCodeAt(i);
|
length = 0;
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
for (let codePoint of text) {
|
||||||
|
length++;
|
||||||
|
}
|
||||||
|
|
||||||
|
data = new Uint8Array(length);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
for (let codePoint of text) {
|
||||||
|
let code = codePoint.codePointAt(0);
|
||||||
|
|
||||||
|
/* Only ISO 8859-1 is supported */
|
||||||
|
if (code > 0xff) {
|
||||||
|
code = 0x3f; // '?'
|
||||||
|
}
|
||||||
|
|
||||||
|
data[i++] = code;
|
||||||
}
|
}
|
||||||
|
|
||||||
RFB.messages.clientCutText(this._sock, data);
|
RFB.messages.clientCutText(this._sock, data);
|
||||||
|
|
|
@ -29,12 +29,6 @@ chai.use(function (_chai, utils) {
|
||||||
|
|
||||||
_chai.Assertion.addMethod('sent', function (targetData) {
|
_chai.Assertion.addMethod('sent', function (targetData) {
|
||||||
const obj = this._obj;
|
const obj = this._obj;
|
||||||
obj.inspect = () => {
|
|
||||||
const res = { _websocket: obj._websocket, rQi: obj._rQi, _rQ: new Uint8Array(obj._rQ.buffer, 0, obj._rQlen),
|
|
||||||
_sQ: new Uint8Array(obj._sQ.buffer, 0, obj._sQlen) };
|
|
||||||
res.prototype = obj;
|
|
||||||
return res;
|
|
||||||
};
|
|
||||||
const data = obj._websocket._getSentData();
|
const data = obj._websocket._getSentData();
|
||||||
let same = true;
|
let same = true;
|
||||||
if (data.length != targetData.length) {
|
if (data.length != targetData.length) {
|
||||||
|
|
|
@ -111,11 +111,12 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Avoiding printing the entire Websock buffer on errors
|
// Avoiding printing the entire Websock buffer on errors
|
||||||
Websock.prototype.toString = function () { return "[object Websock]"; };
|
Websock.prototype.inspect = function () { return "[object Websock]"; };
|
||||||
});
|
});
|
||||||
|
|
||||||
after(function () {
|
after(function () {
|
||||||
delete Websock.prototype.toString;
|
Websock.prototype._allocateBuffers = Websock.prototype._oldAllocateBuffers;
|
||||||
|
delete Websock.prototype.inspect;
|
||||||
this.clock.restore();
|
this.clock.restore();
|
||||||
window.requestAnimationFrame = raf;
|
window.requestAnimationFrame = raf;
|
||||||
window.ResizeObserver = realObserver;
|
window.ResizeObserver = realObserver;
|
||||||
|
@ -432,6 +433,22 @@ describe('Remote Frame Buffer Protocol Client', function () {
|
||||||
new Uint8Array([97, 98, 99]));
|
new Uint8Array([97, 98, 99]));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should mask unsupported characters', function () {
|
||||||
|
client.clipboardPasteFrom('abc€');
|
||||||
|
|
||||||
|
expect(RFB.messages.clientCutText).to.have.been.calledOnce;
|
||||||
|
expect(RFB.messages.clientCutText).to.have.been.calledWith(client._sock,
|
||||||
|
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 () {
|
it('should send an notify if extended clipboard is supported by server', function () {
|
||||||
// Send our capabilities
|
// Send our capabilities
|
||||||
let data = [3, 0, 0, 0];
|
let data = [3, 0, 0, 0];
|
||||||
|
|
Loading…
Reference in New Issue