Example #1
0
        public VsAppShell(ITelemetryService telemetryService)
        {
            _appConstants  = new ApplicationConstants();
            ProgressDialog = new VsProgressDialog(this);
            FileDialog     = new VsFileDialog(this);

            var loggingPermissions = new LoggingPermissions(_appConstants, telemetryService, new RegistryImpl());

            _coreServices = new CoreServices(_appConstants, telemetryService, new VsTaskService(), new ProcessServices(), loggingPermissions, this, new SecurityService(this));
        }
Example #2
0
        public CoreServices(IApplicationConstants appConstants
                            , ITelemetryService telemetry
                            , ITaskService tasks
                            , IMainThread mainThread
                            , ISecurityService security)
        {
            Registry           = new RegistryImpl();
            LoggingPermissions = new LoggingPermissions(appConstants, telemetry, Registry);
            Telemetry          = telemetry;
            Security           = security;
            Tasks = tasks;

            ProcessServices = new ProcessServices();
            FileSystem      = new FileSystem();
            MainThread      = mainThread;

            Log = new Logger(appConstants.ApplicationName, Path.GetTempPath(), LoggingPermissions);
        }
Example #3
0
        public static ICoreServices CreateReal()
        {
            var appConstants       = new TestAppConstants();
            var telemetryService   = new TelemetryTestService();
            var registry           = new RegistryImpl();
            var loggingPermissions = new LoggingPermissions(appConstants, telemetryService, registry);
            var log             = new Logger(new NullLogWriter(), loggingPermissions);
            var fileSystem      = new FileSystem();
            var processServices = new ProcessServices();

            return(new CoreServices(
                       telemetryService,
                       loggingPermissions,
                       new SecurityServiceStub(),
                       new TestTaskService(),
                       UIThreadHelper.Instance,
                       log,
                       fileSystem,
                       processServices));
        }
Example #4
0
        public void Overrides(bool telemetryEnabled, int?logVerbosity, int?feedbackSetting, LogVerbosity expectedMaxLogLevel, bool expectedFeedback)
        {
            var rtvsKey = Substitute.For <IRegistryKey>();

            rtvsKey.GetValue(LoggingPermissions.LogVerbosityValueName).Returns(logVerbosity);
            rtvsKey.GetValue(LoggingPermissions.FeedbackValueName).Returns(feedbackSetting);

            var hklm = Substitute.For <IRegistryKey>();

            hklm.OpenSubKey("rtvs").Returns(rtvsKey);

            var registry = Substitute.For <IRegistry>();

            registry.LocalMachineHive.Returns("rtvs");
            registry.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).Returns(hklm);

            var telemetry = Substitute.For <ITelemetryService>();

            telemetry.IsEnabled.Returns(telemetryEnabled);

            var services = new ServiceManager()
                           .AddService(telemetry)
                           .AddService(registry);

            var permissions = new LoggingPermissions(services);

            permissions.MaxVerbosity.Should().Be(expectedMaxLogLevel);
            permissions.IsFeedbackPermitted.Should().Be(expectedFeedback);

            if (logVerbosity.HasValue)
            {
                var values = Enum.GetValues(typeof(LogVerbosity));
                foreach (var v in values)
                {
                    permissions.CurrentVerbosity = (LogVerbosity)v;
                    ((int)permissions.CurrentVerbosity).Should().BeGreaterOrEqualTo((int)LogVerbosity.None);
                    ((int)permissions.CurrentVerbosity).Should().BeLessOrEqualTo((int)permissions.MaxVerbosity);
                }
            }
        }
Example #5
0
        private void ConfigureServices()
        {
            var platformServices   = new VsPlatformServices();
            var telemetry          = new VsTelemetryService();
            var componentModel     = (IComponentModel)VsPackage.GetGlobalService(typeof(SComponentModel));
            var loggingPermissions = new LoggingPermissions(platformServices, telemetry, new RegistryImpl());
            var settings           = new RToolsSettingsImplementation(this, new VsSettingsStorage(), loggingPermissions);
            var compositionCatalog = new CompositionCatalog(componentModel.DefaultCompositionService, componentModel.DefaultExportProvider);
            var exportProvider     = componentModel.DefaultExportProvider;

            _services
            .AddService(componentModel)
            .AddService(componentModel.DefaultCompositionService)
            .AddService(exportProvider)
            .AddService(compositionCatalog)
            .AddService(new VsMainThread())
            .AddService(new VsTaskService())
            .AddService(_idleTimeService)
            .AddService(new VsUIServices(this))
            .AddService(new SecurityService(this))
            .AddService(loggingPermissions)
            .AddService(new Logger(ApplicationName, Path.GetTempPath(), loggingPermissions))
            .AddService(platformServices)
            .AddService(settings)
            .AddService(new REditorSettings(new LanguageSettingsStorage(this, RGuidList.RLanguageServiceGuid, RGuidList.RPackageGuid, new string[] { RPackage.ProductName })))
            .AddService(new ImageService(exportProvider.GetExportedValue <IGlyphService>()))
            .AddService(new VsEditorSupport(this))
            .AddService(telemetry)
            .AddService(new FileSystem())
            .AddService(new ProcessServices())
            .AddService(new RegistryImpl())
            .AddService(new MicrosoftRClientInstaller())
            .AddWindowsRInterpretersServices()
            .AddWindowsHostClientServices();
            // TODO: add more

            settings.LoadSettings();
        }