diff --git a/src/VisualStudio/TestUtilities/InProcess/CSharpInteractiveWindow_InProc.cs b/src/VisualStudio/TestUtilities/InProcess/CSharpInteractiveWindow_InProc.cs index 2d5a17c8acbdde25f33121246fabdab4acacca45..d419b09d91ebbb4e13a87ca77e59e284e79d86da 100644 --- a/src/VisualStudio/TestUtilities/InProcess/CSharpInteractiveWindow_InProc.cs +++ b/src/VisualStudio/TestUtilities/InProcess/CSharpInteractiveWindow_InProc.cs @@ -5,7 +5,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess { - public class CSharpInteractiveWindow_InProc : InteractiveWindow_InProc + internal class CSharpInteractiveWindow_InProc : InteractiveWindow_InProc { private const string ViewCommand = "View.C#Interactive"; private const string WindowTitle = "C# Interactive"; diff --git a/src/VisualStudio/TestUtilities/InProcess/Editor_InProc.cs b/src/VisualStudio/TestUtilities/InProcess/Editor_InProc.cs index e31d21cb5641a391e13fe360d93300ce9388885f..b674b5f47c504dbf3f4d57a6300bb65bba3cab2d 100644 --- a/src/VisualStudio/TestUtilities/InProcess/Editor_InProc.cs +++ b/src/VisualStudio/TestUtilities/InProcess/Editor_InProc.cs @@ -12,7 +12,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess { - public class Editor_InProc : InProcComponent + internal class Editor_InProc : InProcComponent { private static readonly Guid IWpfTextViewId = new Guid("8C40265E-9FDB-4F54-A0FD-EBB72B7D0476"); diff --git a/src/VisualStudio/TestUtilities/InProcess/InProcComponent.cs b/src/VisualStudio/TestUtilities/InProcess/InProcComponent.cs index 0be13963ae261f475b9ee1a5254c22ab918f98d8..6bc0d0accd6a77a6166bb95663d881aeddcaae7b 100644 --- a/src/VisualStudio/TestUtilities/InProcess/InProcComponent.cs +++ b/src/VisualStudio/TestUtilities/InProcess/InProcComponent.cs @@ -14,7 +14,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess /// Base class for all components that run inside of the Visual Studio process. Every in-proc component /// must provide a public, static, parameterless "Create" method. /// - public abstract class InProcComponent : MarshalByRefObject + internal abstract class InProcComponent : MarshalByRefObject { protected InProcComponent() { } diff --git a/src/VisualStudio/TestUtilities/InProcess/InteractiveWindow_InProc.cs b/src/VisualStudio/TestUtilities/InProcess/InteractiveWindow_InProc.cs index feb74aa4d94e796e0ede756db702151733f7262e..4759944e6b1b7f4375a8580874f9a6f33f25b337 100644 --- a/src/VisualStudio/TestUtilities/InProcess/InteractiveWindow_InProc.cs +++ b/src/VisualStudio/TestUtilities/InProcess/InteractiveWindow_InProc.cs @@ -12,7 +12,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess /// /// This object exists in the Visual Studio host and is marhsalled across the process boundary. /// - public abstract class InteractiveWindow_InProc : InProcComponent + internal abstract class InteractiveWindow_InProc : InProcComponent { private const string ResetCommand = "InteractiveConsole.Reset"; private const string ReplSubmissionText = ". "; diff --git a/src/VisualStudio/TestUtilities/InProcess/SolutionExplorer_InProc.cs b/src/VisualStudio/TestUtilities/InProcess/SolutionExplorer_InProc.cs index 2bcdfb33713facde64d179a982b4e746eeeb33e2..c5581d10d5ae177b6629172c65afbe921072bf2b 100644 --- a/src/VisualStudio/TestUtilities/InProcess/SolutionExplorer_InProc.cs +++ b/src/VisualStudio/TestUtilities/InProcess/SolutionExplorer_InProc.cs @@ -7,7 +7,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess { - public class SolutionExplorer_InProc : InProcComponent + internal class SolutionExplorer_InProc : InProcComponent { private EnvDTE80.Solution2 _solution; private string _fileName; diff --git a/src/VisualStudio/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs b/src/VisualStudio/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs index 7e6056c9b7c234ded862c75f5a12012dfa4f634d..2f7ec0e72184dc65739b2f79f6fc0ac0161554d4 100644 --- a/src/VisualStudio/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs +++ b/src/VisualStudio/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs @@ -13,7 +13,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess { - public class VisualStudioWorkspace_InProc : InProcComponent + internal class VisualStudioWorkspace_InProc : InProcComponent { private static readonly Guid RoslynPackageId = new Guid("6cf2e545-6109-4730-8883-cf43d7aec3e1"); private readonly VisualStudioWorkspace _visualStudioWorkspace; diff --git a/src/VisualStudio/TestUtilities/InProcess/VisualStudio_InProc.cs b/src/VisualStudio/TestUtilities/InProcess/VisualStudio_InProc.cs index d5c4ae0047c0934ae198bf03268f6af100387584..c853c68db1c6510175e5e5805d6ea90ac9061f88 100644 --- a/src/VisualStudio/TestUtilities/InProcess/VisualStudio_InProc.cs +++ b/src/VisualStudio/TestUtilities/InProcess/VisualStudio_InProc.cs @@ -3,7 +3,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess { - public class VisualStudio_InProc : InProcComponent + internal class VisualStudio_InProc : InProcComponent { private VisualStudio_InProc() { } diff --git a/src/VisualStudio/TestUtilities/OutOfProcess/CSharpInteractiveWindow_OutOfProc.cs b/src/VisualStudio/TestUtilities/OutOfProcess/CSharpInteractiveWindow_OutOfProc.cs index c5e5ea25ba032c6cb4c124cc46216917abd22119..ffb5b008530544d78c281bd92411819dc68602fc 100644 --- a/src/VisualStudio/TestUtilities/OutOfProcess/CSharpInteractiveWindow_OutOfProc.cs +++ b/src/VisualStudio/TestUtilities/OutOfProcess/CSharpInteractiveWindow_OutOfProc.cs @@ -4,11 +4,16 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess { - public class CSharpInteractiveWindow_OutOfProc : InteractiveWindow_OutOfProc + public class CSharpInteractiveWindow_OutOfProc : InteractiveWindow_OutOfProc { public CSharpInteractiveWindow_OutOfProc(VisualStudioInstance visualStudioInstance) : base(visualStudioInstance) { } + + internal override InteractiveWindow_InProc CreateInProcComponent(VisualStudioInstance visualStudioInstance) + { + return CreateInProcComponent(visualStudioInstance); + } } } diff --git a/src/VisualStudio/TestUtilities/OutOfProcess/Editor_OutOfProc.cs b/src/VisualStudio/TestUtilities/OutOfProcess/Editor_OutOfProc.cs index ca1822aa2dfd6a0e0afc39fdd2f435083f608fb9..64547fe54507386dd42d05aae9a607cb42c7fab8 100644 --- a/src/VisualStudio/TestUtilities/OutOfProcess/Editor_OutOfProc.cs +++ b/src/VisualStudio/TestUtilities/OutOfProcess/Editor_OutOfProc.cs @@ -10,33 +10,36 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess /// /// Provides a means of interacting with the Visual Studio editor by remoting calls into Visual Studio. /// - public partial class Editor_OutOfProc : OutOfProcComponent + public partial class Editor_OutOfProc : OutOfProcComponent { + private readonly Editor_InProc _inProc; + internal Editor_OutOfProc(VisualStudioInstance visualStudioInstance) : base(visualStudioInstance) { + this._inProc = CreateInProcComponent(visualStudioInstance); } - public void Activate() => InProc.Activate(); + public void Activate() => _inProc.Activate(); - public string GetText() => InProc.GetText(); - public void SetText(string value) => InProc.SetText(value); + public string GetText() => _inProc.GetText(); + public void SetText(string value) => _inProc.SetText(value); - public string GetCurrentLineText() => InProc.GetCurrentLineText(); - public int GetCaretPosition() => InProc.GetCaretPosition(); - public string GetLineTextBeforeCaret() => InProc.GetLineTextBeforeCaret(); - public string GetLineTextAfterCaret() => InProc.GetLineTextAfterCaret(); + public string GetCurrentLineText() => _inProc.GetCurrentLineText(); + public int GetCaretPosition() => _inProc.GetCaretPosition(); + public string GetLineTextBeforeCaret() => _inProc.GetLineTextBeforeCaret(); + public string GetLineTextAfterCaret() => _inProc.GetLineTextAfterCaret(); - public void MoveCaret(int position) => InProc.MoveCaret(position); + public void MoveCaret(int position) => _inProc.MoveCaret(position); - public string[] GetCompletionItems() => InProc.GetCompletionItems(); - public string GetCurrentCompletionItem() => InProc.GetCurrentCompletionItem(); - public bool IsCompletionActive() => InProc.IsCompletionActive(); + public string[] GetCompletionItems() => _inProc.GetCompletionItems(); + public string GetCurrentCompletionItem() => _inProc.GetCurrentCompletionItem(); + public bool IsCompletionActive() => _inProc.IsCompletionActive(); - public Signature[] GetSignatures() => InProc.GetSignatures(); - public Signature GetCurrentSignature() => InProc.GetCurrentSignature(); + public Signature[] GetSignatures() => _inProc.GetSignatures(); + public Signature GetCurrentSignature() => _inProc.GetCurrentSignature(); - public bool IsCaretOnScreen() => InProc.IsCaretOnScreen(); + public bool IsCaretOnScreen() => _inProc.IsCaretOnScreen(); public void SendKeys(params object[] keys) { diff --git a/src/VisualStudio/TestUtilities/OutOfProcess/InteractiveWindow_OutOfProc.cs b/src/VisualStudio/TestUtilities/OutOfProcess/InteractiveWindow_OutOfProc.cs index bbee86fe6639b431a2878558e22eb92559a8516c..1043b266182068c3c83f53ba5a0712ea1b64f53d 100644 --- a/src/VisualStudio/TestUtilities/OutOfProcess/InteractiveWindow_OutOfProc.cs +++ b/src/VisualStudio/TestUtilities/OutOfProcess/InteractiveWindow_OutOfProc.cs @@ -7,17 +7,21 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess /// /// Provides a means of interacting with the interactive window in the Visual Studio host. /// - public abstract class InteractiveWindow_OutOfProc : OutOfProcComponent - where TInProcComponent : InteractiveWindow_InProc + public abstract class InteractiveWindow_OutOfProc : OutOfProcComponent { + private readonly InteractiveWindow_InProc _inProc; + internal InteractiveWindow_OutOfProc(VisualStudioInstance visualStudioInstance) : base (visualStudioInstance) { + _inProc = CreateInProcComponent(visualStudioInstance); } + internal abstract InteractiveWindow_InProc CreateInProcComponent(VisualStudioInstance visualStudioInstance); + public void Initialize() { - InProc.Initialize(); + _inProc.Initialize(); } /// @@ -25,12 +29,12 @@ public void Initialize() /// public string GetLastReplOutput() { - return InProc.GetLastReplOutput(); + return _inProc.GetLastReplOutput(); } public string GetReplText() { - return InProc.GetReplText(); + return _inProc.GetReplText(); } /// @@ -38,32 +42,32 @@ public string GetReplText() /// public string GetReplTextWithoutPrompt() { - return InProc.GetReplTextWithoutPrompt(); + return _inProc.GetReplTextWithoutPrompt(); } public void ShowWindow(bool waitForPrompt = true) { - InProc.ShowWindow(waitForPrompt); + _inProc.ShowWindow(waitForPrompt); } public void Reset(bool waitForPrompt = true) { - InProc.Reset(waitForPrompt); + _inProc.Reset(waitForPrompt); } public void SubmitText(string text, bool waitForPrompt = true) { - InProc.SubmitText(text, waitForPrompt); + _inProc.SubmitText(text, waitForPrompt); } public void WaitForReplOutput(string outputText) { - InProc.WaitForReplOutput(outputText); + _inProc.WaitForReplOutput(outputText); } public void CleanUpInteractiveWindow() { - InProc.CloseWindow(); + _inProc.CloseWindow(); } } } diff --git a/src/VisualStudio/TestUtilities/OutOfProcess/OutOfProcComponent.cs b/src/VisualStudio/TestUtilities/OutOfProcess/OutOfProcComponent.cs index 1fcbad4fb706d5517d039982debf4a91c5ca3bb5..e6cdb1073f921948d4a47f6dc111bbc1df3e3ff2 100644 --- a/src/VisualStudio/TestUtilities/OutOfProcess/OutOfProcComponent.cs +++ b/src/VisualStudio/TestUtilities/OutOfProcess/OutOfProcComponent.cs @@ -7,23 +7,20 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess /// /// Base class for all components that run outside of the Visual Studio process. /// - public abstract class OutOfProcComponent - where TInProcComponent : InProcComponent + public abstract class OutOfProcComponent { protected readonly VisualStudioInstance VisualStudioInstance; - protected readonly TInProcComponent InProc; protected OutOfProcComponent(VisualStudioInstance visualStudioInstance) { VisualStudioInstance = visualStudioInstance; - - InProc = CreateInProcComponent(); } - private TInProcComponent CreateInProcComponent() + internal static TInProcComponent CreateInProcComponent(VisualStudioInstance visualStudioInstance) + where TInProcComponent : InProcComponent { // Create MarshalByRefObject that can be used to execute code in the VS process. - return VisualStudioInstance.ExecuteInHostProcess( + return visualStudioInstance.ExecuteInHostProcess( type: typeof(TInProcComponent), methodName: "Create"); } diff --git a/src/VisualStudio/TestUtilities/OutOfProcess/SolutionExplorer_OutOfProc.cs b/src/VisualStudio/TestUtilities/OutOfProcess/SolutionExplorer_OutOfProc.cs index 907fe3b4fbc54f34765d3968851f72bd15940d84..14792cd4b621fd92b27774132613a4f900c75ef0 100644 --- a/src/VisualStudio/TestUtilities/OutOfProcess/SolutionExplorer_OutOfProc.cs +++ b/src/VisualStudio/TestUtilities/OutOfProcess/SolutionExplorer_OutOfProc.cs @@ -4,36 +4,42 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess { - public class SolutionExplorer_OutOfProc : OutOfProcComponent + public class SolutionExplorer_OutOfProc : OutOfProcComponent { + private readonly SolutionExplorer_InProc _inProc; + public SolutionExplorer_OutOfProc(VisualStudioInstance visualStudioInstance) : base(visualStudioInstance) { + this._inProc = CreateInProcComponent(visualStudioInstance); } - public void CloseSolution(bool saveFirst = false) => InProc.CloseSolution(saveFirst); + public void CloseSolution(bool saveFirst = false) + { + _inProc.CloseSolution(saveFirst); + } /// /// Creates and loads a new solution in the host process, optionally saving the existing solution if one exists. /// public void CreateSolution(string solutionName, bool saveExistingSolutionIfExists = false) { - InProc.CreateSolution(solutionName, saveExistingSolutionIfExists); + _inProc.CreateSolution(solutionName, saveExistingSolutionIfExists); } public void OpenSolution(string path, bool saveExistingSolutionIfExists = false) { - InProc.OpenSolution(path, saveExistingSolutionIfExists); + _inProc.OpenSolution(path, saveExistingSolutionIfExists); } public void AddProject(string projectName, string projectTemplate, string languageName) { - InProc.AddProject(projectName, projectTemplate, languageName); + _inProc.AddProject(projectName, projectTemplate, languageName); } public void CleanUpOpenSolution() { - InProc.CleanUpOpenSolution(); + _inProc.CleanUpOpenSolution(); } } } diff --git a/src/VisualStudio/TestUtilities/OutOfProcess/VisualStudioWorkspace_OutOfProc.cs b/src/VisualStudio/TestUtilities/OutOfProcess/VisualStudioWorkspace_OutOfProc.cs index 9ad726db91449b705129dea8fd93808974074430..70dbf0601f36a1c18d44accfbb9bfc5dea5abc4d 100644 --- a/src/VisualStudio/TestUtilities/OutOfProcess/VisualStudioWorkspace_OutOfProc.cs +++ b/src/VisualStudio/TestUtilities/OutOfProcess/VisualStudioWorkspace_OutOfProc.cs @@ -4,54 +4,57 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess { - public class VisualStudioWorkspace_OutOfProc : OutOfProcComponent + public class VisualStudioWorkspace_OutOfProc : OutOfProcComponent { + private readonly VisualStudioWorkspace_InProc _inProc; + internal VisualStudioWorkspace_OutOfProc(VisualStudioInstance visualStudioInstance) : base(visualStudioInstance) { + this._inProc = CreateInProcComponent(visualStudioInstance); } public bool UseSuggestionMode { get { - return InProc.UseSuggestionMode; + return _inProc.UseSuggestionMode; } set { - InProc.UseSuggestionMode = value; + _inProc.UseSuggestionMode = value; } } public bool IsPrettyListingOn(string languageName) { - return InProc.IsPrettyListingOn(languageName); + return _inProc.IsPrettyListingOn(languageName); } public void SetPrettyListing(string languageName, bool value) { - InProc.SetPrettyListing(languageName, value); + _inProc.SetPrettyListing(languageName, value); } public void WaitForAsyncOperations(string featuresToWaitFor, bool waitForWorkspaceFirst = true) { - InProc.WaitForAsyncOperations(featuresToWaitFor, waitForWorkspaceFirst); + _inProc.WaitForAsyncOperations(featuresToWaitFor, waitForWorkspaceFirst); } public void WaitForAllAsyncOperations() { - InProc.WaitForAllAsyncOperations(); + _inProc.WaitForAllAsyncOperations(); } public void CleanUpWorkspace() { - InProc.CleanUpWorkspace(); + _inProc.CleanUpWorkspace(); } public void CleanUpWaitingService() { - InProc.CleanUpWaitingService(); + _inProc.CleanUpWaitingService(); } } }