@@ -10,48 +10,21 @@ import { mark } from 'vs/base/common/performance';
1010import { URI } from 'vs/base/common/uri' ;
1111import { IPtyHostProcessReplayEvent , ISerializedCommandDetectionCapability } from 'vs/platform/terminal/common/capabilities/capabilities' ;
1212import { IProcessDataEvent , ITerminalChildProcess , ITerminalLaunchError , IProcessProperty , IProcessPropertyMap , ProcessPropertyType , IProcessReadyEvent , ITerminalLogService } from 'vs/platform/terminal/common/terminal' ;
13+ import { BasePty } from 'vs/workbench/contrib/terminal/common/basePty' ;
1314import { RemoteTerminalChannelClient } from 'vs/workbench/contrib/terminal/common/remote/remoteTerminalChannel' ;
1415import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService' ;
1516
16- export class RemotePty extends Disposable implements ITerminalChildProcess {
17+ export class RemotePty extends BasePty implements ITerminalChildProcess {
1718 private readonly _startBarrier : Barrier ;
18- private readonly _properties : IProcessPropertyMap = {
19- cwd : '' ,
20- initialCwd : '' ,
21- fixedDimensions : { cols : undefined , rows : undefined } ,
22- title : '' ,
23- shellType : undefined ,
24- hasChildProcesses : true ,
25- resolvedShellLaunchConfig : { } ,
26- overrideDimensions : undefined ,
27- failedShellIntegrationActivation : false ,
28- usedShellIntegrationInjection : undefined
29- } ;
30- private readonly _lastDimensions : { cols : number ; rows : number } = { cols : - 1 , rows : - 1 } ;
31-
32- private _inReplay = false ;
33-
34- private readonly _onProcessData = this . _register ( new Emitter < string | IProcessDataEvent > ( ) ) ;
35- readonly onProcessData = this . _onProcessData . event ;
36- private readonly _onProcessReplayComplete = this . _register ( new Emitter < void > ( ) ) ;
37- readonly onProcessReplayComplete = this . _onProcessReplayComplete . event ;
38- private readonly _onProcessReady = this . _register ( new Emitter < IProcessReadyEvent > ( ) ) ;
39- readonly onProcessReady = this . _onProcessReady . event ;
40- private readonly _onDidChangeProperty = this . _register ( new Emitter < IProcessProperty < any > > ( ) ) ;
41- readonly onDidChangeProperty = this . _onDidChangeProperty . event ;
42- private readonly _onProcessExit = this . _register ( new Emitter < number | undefined > ( ) ) ;
43- readonly onProcessExit = this . _onProcessExit . event ;
44- private readonly _onRestoreCommands = this . _register ( new Emitter < ISerializedCommandDetectionCapability > ( ) ) ;
45- readonly onRestoreCommands = this . _onRestoreCommands . event ;
4619
4720 constructor (
48- readonly id : number ,
49- readonly shouldPersist : boolean ,
21+ id : number ,
22+ shouldPersist : boolean ,
5023 private readonly _remoteTerminalChannel : RemoteTerminalChannelClient ,
5124 @IRemoteAgentService private readonly _remoteAgentService : IRemoteAgentService ,
5225 @ITerminalLogService private readonly _logService : ITerminalLogService
5326 ) {
54- super ( ) ;
27+ super ( id , shouldPersist ) ;
5528 this . _startBarrier = new Barrier ( ) ;
5629 }
5730
@@ -134,14 +107,6 @@ export class RemotePty extends Disposable implements ITerminalChildProcess {
134107 return this . _remoteTerminalChannel . setUnicodeVersion ( this . id , version ) ;
135108 }
136109
137- async getInitialCwd ( ) : Promise < string > {
138- return this . _properties . initialCwd ;
139- }
140-
141- async getCwd ( ) : Promise < string > {
142- return this . _properties . cwd || this . _properties . initialCwd ;
143- }
144-
145110 async refreshProperty < T extends ProcessPropertyType > ( type : T ) : Promise < IProcessPropertyMap [ T ] > {
146111 return this . _remoteTerminalChannel . refreshProperty ( this . id , type ) ;
147112 }
@@ -150,62 +115,6 @@ export class RemotePty extends Disposable implements ITerminalChildProcess {
150115 return this . _remoteTerminalChannel . updateProperty ( this . id , type , value ) ;
151116 }
152117
153- handleData ( e : string | IProcessDataEvent ) {
154- this . _onProcessData . fire ( e ) ;
155- }
156- handleExit ( e : number | undefined ) {
157- this . _onProcessExit . fire ( e ) ;
158- }
159- processBinary ( e : string ) : Promise < void > {
160- return this . _remoteTerminalChannel . processBinary ( this . id , e ) ;
161- }
162- handleReady ( e : IProcessReadyEvent ) {
163- this . _onProcessReady . fire ( e ) ;
164- }
165- handleDidChangeProperty ( { type, value } : IProcessProperty < any > ) {
166- switch ( type ) {
167- case ProcessPropertyType . Cwd :
168- this . _properties . cwd = value ;
169- break ;
170- case ProcessPropertyType . InitialCwd :
171- this . _properties . initialCwd = value ;
172- break ;
173- case ProcessPropertyType . ResolvedShellLaunchConfig :
174- if ( value . cwd && typeof value . cwd !== 'string' ) {
175- value . cwd = URI . revive ( value . cwd ) ;
176- }
177- }
178- this . _onDidChangeProperty . fire ( { type, value } ) ;
179- }
180-
181- async handleReplay ( e : IPtyHostProcessReplayEvent ) {
182- mark ( `code/terminal/willHandleReplay/${ this . id } ` ) ;
183- try {
184- this . _inReplay = true ;
185- for ( const innerEvent of e . events ) {
186- if ( innerEvent . cols !== 0 || innerEvent . rows !== 0 ) {
187- // never override with 0x0 as that is a marker for an unknown initial size
188- this . _onDidChangeProperty . fire ( { type : ProcessPropertyType . OverrideDimensions , value : { cols : innerEvent . cols , rows : innerEvent . rows , forceExactSize : true } } ) ;
189- }
190- const e : IProcessDataEvent = { data : innerEvent . data , trackCommit : true } ;
191- this . _onProcessData . fire ( e ) ;
192- await e . writePromise ;
193- }
194- } finally {
195- this . _inReplay = false ;
196- }
197-
198- if ( e . commands ) {
199- this . _onRestoreCommands . fire ( e . commands ) ;
200- }
201-
202- // remove size override
203- this . _onDidChangeProperty . fire ( { type : ProcessPropertyType . OverrideDimensions , value : undefined } ) ;
204-
205- mark ( `code/terminal/didHandleReplay/${ this . id } ` ) ;
206- this . _onProcessReplayComplete . fire ( ) ;
207- }
208-
209118 handleOrphanQuestion ( ) {
210119 this . _remoteTerminalChannel . orphanQuestionReply ( this . id ) ;
211120 }
0 commit comments