MCPcopy Create free account
hub / github.com/apache/cloudstack / extendedClipboardProvide

Function extendedClipboardProvide

systemvm/agent/noVNC/core/rfb.js:3349–3385  ·  view source on GitHub ↗
(sock, formats, inData)

Source from the content-addressed store, hash-verified

3347 },
3348
3349 extendedClipboardProvide(sock, formats, inData) {
3350 // Deflate incoming data and their sizes
3351 let deflator = new Deflator();
3352 let dataToDeflate = [];
3353
3354 for (let i = 0; i < formats.length; i++) {
3355 // We only support the format Text at this time
3356 if (formats[i] != extendedClipboardFormatText) {
3357 throw new Error("Unsupported extended clipboard format for Provide message.");
3358 }
3359
3360 // Change lone \r or \n into \r\n as defined in rfbproto
3361 inData[i] = inData[i].replace(/\r\n|\r|\n/gm, "\r\n");
3362
3363 // Check if it already has \0
3364 let text = encodeUTF8(inData[i] + "\0");
3365
3366 dataToDeflate.push( (text.length >> 24) & 0xFF,
3367 (text.length >> 16) & 0xFF,
3368 (text.length >> 8) & 0xFF,
3369 (text.length & 0xFF));
3370
3371 for (let j = 0; j < text.length; j++) {
3372 dataToDeflate.push(text.charCodeAt(j));
3373 }
3374 }
3375
3376 let deflatedData = deflator.deflate(new Uint8Array(dataToDeflate));
3377
3378 // Build data to send
3379 let data = new Uint8Array(4 + deflatedData.length);
3380 data.set(RFB.messages._buildExtendedClipboardFlags([extendedClipboardActionProvide],
3381 formats));
3382 data.set(deflatedData, 4);
3383
3384 RFB.messages.clientCutText(sock, data, true);
3385 },
3386
3387 extendedClipboardNotify(sock, formats) {
3388 let flags = RFB.messages._buildExtendedClipboardFlags([extendedClipboardActionNotify],

Callers

nothing calls this directly

Calls 4

deflateMethod · 0.95
encodeUTF8Function · 0.90
replaceMethod · 0.80
setMethod · 0.65

Tested by

no test coverage detected