(sock, formats, inData)
| 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], |
nothing calls this directly
no test coverage detected