@@ -11,7 +11,7 @@ import { CellData } from 'common/buffer/CellData';
1111import { Attributes , UnderlineStyle } from 'common/buffer/Constants' ;
1212import { AttributeData } from 'common/buffer/AttributeData' ;
1313import { Params } from 'common/parser/Params' ;
14- import { MockCoreService , MockBufferService , MockOptionsService , MockLogService , MockCoreMouseService , MockCharsetService , MockUnicodeService , MockOscLinkService } from 'common/TestUtils.test' ;
14+ import { MockCoreService , MockBufferService , MockOptionsService , MockLogService , MockCoreMouseService , MockCharsetService , MockUnicodeService , MockOscLinkService , MockOscClipboardService } from 'common/TestUtils.test' ;
1515import { IBufferService , ICoreService } from 'common/services/Services' ;
1616import { DEFAULT_OPTIONS } from 'common/services/OptionsService' ;
1717import { clone } from 'common/Clone' ;
@@ -67,7 +67,7 @@ describe('InputHandler', () => {
6767 bufferService . resize ( 80 , 30 ) ;
6868 coreService = new CoreService ( ( ) => { } , bufferService , new MockLogService ( ) , optionsService ) ;
6969
70- inputHandler = new TestInputHandler ( bufferService , new MockCharsetService ( ) , coreService , new MockLogService ( ) , optionsService , new MockOscLinkService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
70+ inputHandler = new TestInputHandler ( bufferService , new MockCharsetService ( ) , coreService , new MockLogService ( ) , optionsService , new MockOscLinkService ( ) , new MockOscClipboardService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
7171 } ) ;
7272
7373 describe ( 'SL/SR/DECIC/DECDC' , ( ) => {
@@ -236,7 +236,7 @@ describe('InputHandler', () => {
236236 describe ( 'setMode' , ( ) => {
237237 it ( 'should toggle bracketedPasteMode' , ( ) => {
238238 const coreService = new MockCoreService ( ) ;
239- const inputHandler = new TestInputHandler ( new MockBufferService ( 80 , 30 ) , new MockCharsetService ( ) , coreService , new MockLogService ( ) , new MockOptionsService ( ) , new MockOscLinkService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
239+ const inputHandler = new TestInputHandler ( new MockBufferService ( 80 , 30 ) , new MockCharsetService ( ) , coreService , new MockLogService ( ) , new MockOptionsService ( ) , new MockOscLinkService ( ) , new MockOscClipboardService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
240240 // Set bracketed paste mode
241241 inputHandler . setModePrivate ( Params . fromArray ( [ 2004 ] ) ) ;
242242 assert . equal ( coreService . decPrivateModes . bracketedPasteMode , true ) ;
@@ -261,6 +261,7 @@ describe('InputHandler', () => {
261261 new MockLogService ( ) ,
262262 new MockOptionsService ( ) ,
263263 new MockOscLinkService ( ) ,
264+ new MockOscClipboardService ( ) ,
264265 new MockCoreMouseService ( ) ,
265266 new MockUnicodeService ( )
266267 ) ;
@@ -307,6 +308,7 @@ describe('InputHandler', () => {
307308 new MockLogService ( ) ,
308309 new MockOptionsService ( ) ,
309310 new MockOscLinkService ( ) ,
311+ new MockOscClipboardService ( ) ,
310312 new MockCoreMouseService ( ) ,
311313 new MockUnicodeService ( )
312314 ) ;
@@ -357,6 +359,7 @@ describe('InputHandler', () => {
357359 new MockLogService ( ) ,
358360 new MockOptionsService ( ) ,
359361 new MockOscLinkService ( ) ,
362+ new MockOscClipboardService ( ) ,
360363 new MockCoreMouseService ( ) ,
361364 new MockUnicodeService ( )
362365 ) ;
@@ -394,6 +397,7 @@ describe('InputHandler', () => {
394397 new MockLogService ( ) ,
395398 new MockOptionsService ( ) ,
396399 new MockOscLinkService ( ) ,
400+ new MockOscClipboardService ( ) ,
397401 new MockCoreMouseService ( ) ,
398402 new MockUnicodeService ( )
399403 ) ;
@@ -444,6 +448,7 @@ describe('InputHandler', () => {
444448 new MockLogService ( ) ,
445449 new MockOptionsService ( ) ,
446450 new MockOscLinkService ( ) ,
451+ new MockOscClipboardService ( ) ,
447452 new MockCoreMouseService ( ) ,
448453 new MockUnicodeService ( )
449454 ) ;
@@ -570,6 +575,7 @@ describe('InputHandler', () => {
570575 new MockLogService ( ) ,
571576 new MockOptionsService ( ) ,
572577 new MockOscLinkService ( ) ,
578+ new MockOscClipboardService ( ) ,
573579 new MockCoreMouseService ( ) ,
574580 new MockUnicodeService ( )
575581 ) ;
@@ -593,7 +599,7 @@ describe('InputHandler', () => {
593599
594600 beforeEach ( ( ) => {
595601 bufferService = new MockBufferService ( 80 , 30 ) ;
596- handler = new TestInputHandler ( bufferService , new MockCharsetService ( ) , new MockCoreService ( ) , new MockLogService ( ) , new MockOptionsService ( ) , new MockOscLinkService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
602+ handler = new TestInputHandler ( bufferService , new MockCharsetService ( ) , new MockCoreService ( ) , new MockLogService ( ) , new MockOptionsService ( ) , new MockOscLinkService ( ) , new MockOscClipboardService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
597603 } ) ;
598604 it ( 'should handle DECSET/DECRST 47 (alt screen buffer)' , async ( ) => {
599605 await handler . parseP ( '\x1b[?47h\r\n\x1b[31mJUNK\x1b[?47lTEST' ) ;
@@ -790,7 +796,7 @@ describe('InputHandler', () => {
790796 describe ( 'colon notation' , ( ) => {
791797 let inputHandler2 : TestInputHandler ;
792798 beforeEach ( ( ) => {
793- inputHandler2 = new TestInputHandler ( bufferService , new MockCharsetService ( ) , coreService , new MockLogService ( ) , optionsService , new MockOscLinkService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
799+ inputHandler2 = new TestInputHandler ( bufferService , new MockCharsetService ( ) , coreService , new MockLogService ( ) , optionsService , new MockOscLinkService ( ) , new MockOscClipboardService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
794800 } ) ;
795801 describe ( 'should equal to semicolon' , ( ) => {
796802 it ( 'CSI 38:2::50:100:150 m' , async ( ) => {
@@ -1951,6 +1957,34 @@ describe('InputHandler', () => {
19511957 assert . deepEqual ( stack , [ [ { type : ColorRequestType . SET , index : 0 , color : [ 170 , 187 , 204 ] } , { type : ColorRequestType . SET , index : 123 , color : [ 0 , 17 , 34 ] } ] ] ) ;
19521958 stack . length = 0 ;
19531959 } ) ;
1960+ describe ( '52: manipulate selection data' , async ( ) => {
1961+ const testData = Buffer . from ( 'hello world' ) . toString ( 'base64' ) ;
1962+
1963+ it ( '52: set invalid base64 clipboard string' , async ( ) => {
1964+ const stack : string [ ] = [ ] ;
1965+ inputHandler . onClipboard ( ev => stack . push ( ev ) ) ;
1966+ await inputHandler . parseP ( `\x1b]52;c;${ testData } =\x07` ) ;
1967+ await inputHandler . parseP ( `\x1b]52;c;?\x07` ) ;
1968+ assert . deepEqual ( stack , [ '' ] ) ;
1969+ stack . length = 0 ;
1970+ } ) ;
1971+ it ( '52: set and query clipboard data' , async ( ) => {
1972+ const stack : string [ ] = [ ] ;
1973+ inputHandler . onClipboard ( ev => stack . push ( ev ) ) ;
1974+ await inputHandler . parseP ( `\x1b]52;c;${ testData } \x07` ) ;
1975+ await inputHandler . parseP ( `\x1b]52;c;?\x07` ) ;
1976+ assert . deepEqual ( stack , [ testData ] ) ;
1977+ stack . length = 0 ;
1978+ } ) ;
1979+ it ( '52: clear clipboard data' , async ( ) => {
1980+ const stack : string [ ] = [ ] ;
1981+ inputHandler . onClipboard ( ev => stack . push ( ev ) ) ;
1982+ await inputHandler . parseP ( `\x1b]52;c;!\x07` ) ;
1983+ await inputHandler . parseP ( `\x1b]52;c;?\x07` ) ;
1984+ assert . deepEqual ( stack , [ '' ] ) ;
1985+ stack . length = 0 ;
1986+ } ) ;
1987+ } ) ;
19541988 it ( '104: restore events' , async ( ) => {
19551989 const stack : IColorEvent [ ] = [ ] ;
19561990 inputHandler . onColor ( ev => stack . push ( ev ) ) ;
@@ -1963,7 +1997,7 @@ describe('InputHandler', () => {
19631997 stack . length = 0 ;
19641998 // full ANSI table restore
19651999 await inputHandler . parseP ( '\x1b]104\x07' ) ;
1966- assert . deepEqual ( stack , [ [ { type : ColorRequestType . RESTORE } ] ] ) ;
2000+ assert . deepEqual ( stack , [ [ { type : ColorRequestType . RESTORE } ] ] ) ;
19672001 } ) ;
19682002
19692003 it ( '10: FG set & query events' , async ( ) => {
@@ -2272,7 +2306,7 @@ describe('InputHandler - async handlers', () => {
22722306 coreService = new CoreService ( ( ) => { } , bufferService , new MockLogService ( ) , optionsService ) ;
22732307 coreService . onData ( data => { console . log ( data ) ; } ) ;
22742308
2275- inputHandler = new TestInputHandler ( bufferService , new MockCharsetService ( ) , coreService , new MockLogService ( ) , optionsService , new MockOscLinkService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
2309+ inputHandler = new TestInputHandler ( bufferService , new MockCharsetService ( ) , coreService , new MockLogService ( ) , optionsService , new MockOscLinkService ( ) , new MockOscClipboardService ( ) , new MockCoreMouseService ( ) , new MockUnicodeService ( ) ) ;
22762310 } ) ;
22772311
22782312 it ( 'async CUP with CPR check' , async ( ) => {
0 commit comments