示例#1
0
            public TagComputer(
                ITextBuffer subjectBuffer,
                IForegroundNotificationService notificationService,
                IAsynchronousOperationListener asyncListener,
                ClassificationTypeMap typeMap,
                SyntacticClassificationTaggerProvider taggerProvider,
                IViewSupportsClassificationService viewSupportsClassificationServiceOpt,
                ITextBufferAssociatedViewService associatedViewService,
                IEditorClassificationService editorClassificationService,
                string languageName)
            {
                _subjectBuffer       = subjectBuffer;
                _notificationService = notificationService;
                _listener            = asyncListener;
                _typeMap             = typeMap;
                _taggerProvider      = taggerProvider;
                _viewSupportsClassificationServiceOpt = viewSupportsClassificationServiceOpt;
                _associatedViewService       = associatedViewService;
                _editorClassificationService = editorClassificationService;
                _languageName = languageName;

                _workQueue = new AsynchronousSerialWorkQueue(asyncListener);
                _reportChangeCancellationSource = new CancellationTokenSource();

                _lastLineCache = new LastLineCache();

                _workspaceRegistration = Workspace.GetWorkspaceRegistration(subjectBuffer.AsTextContainer());
                _workspaceRegistration.WorkspaceChanged += OnWorkspaceRegistrationChanged;

                ConnectToWorkspace(_workspaceRegistration.Workspace);
            }
示例#2
0
        public ProjectCodeModelFactory(
            VisualStudioWorkspace visualStudioWorkspace,
            [Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider,
            IThreadingContext threadingContext,
            IForegroundNotificationService notificationService,
            IAsynchronousOperationListenerProvider listenerProvider)
        {
            _visualStudioWorkspace = visualStudioWorkspace;
            _serviceProvider       = serviceProvider;
            _threadingContext      = threadingContext;

            _notificationService = notificationService;
            _listener            = listenerProvider.GetListener(FeatureAttribute.CodeModel);

            // Queue up notifications we hear about docs changing.  that way we don't have to fire events multiple times
            // for the same documents.  Once enough time has passed, take the documents that were changed and run
            // through them, firing their latest events.
            _documentsToFireEventsFor = new AsyncBatchingWorkQueue <DocumentId>(
                TimeSpan.FromMilliseconds(visualStudioWorkspace.Options.GetOption(InternalSolutionCrawlerOptions.AllFilesWorkerBackOffTimeSpanInMS)),
                ProcessNextDocumentBatchAsync,
                // We only care about unique doc-ids, so pass in this comparer to collapse streams of changes for a
                // single document down to one notification.
                EqualityComparer <DocumentId> .Default,
                _listener,
                threadingContext.DisposalToken);

            _visualStudioWorkspace.WorkspaceChanged += OnWorkspaceChanged;
        }
示例#3
0
 public VisualStudioErrorReportingService(
     SVsServiceProvider serviceProvider, IForegroundNotificationService foregroundNotificationService, IAsynchronousOperationListener listener)
 {
     _serviceProvider = serviceProvider;
     _foregroundNotificationService = foregroundNotificationService;
     _listener = listener;
 }
 public VisualStudioRuleSetManager(
     IVsFileChangeEx fileChangeService, IForegroundNotificationService foregroundNotificationService, IAsynchronousOperationListener listener)
 {
     _fileChangeService = fileChangeService;
     _foregroundNotificationService = foregroundNotificationService;
     _listener = listener;
 }
示例#5
0
        protected ProducerPopulatedTagSource(
            ITextBuffer subjectBuffer,
            ITagProducer <TTag> tagProducer,
            ITaggerEventSource eventSource,
            IAsynchronousOperationListener asyncListener,
            IForegroundNotificationService notificationService,
            bool removeTagsThatIntersectEdits,
            SpanTrackingMode spanTrackingMode,
            Func <ITextBuffer, ProducerPopulatedTagSource <TTag> > bufferToRelatedTagSource = null) :
            base(subjectBuffer, notificationService, asyncListener)
        {
            if (spanTrackingMode == SpanTrackingMode.Custom)
            {
                throw new ArgumentException("SpanTrackingMode.Custom not allowed.", "spanTrackingMode");
            }

            _tagProducer = tagProducer;
            _removeTagsThatIntersectEdits = removeTagsThatIntersectEdits;
            _spanTrackingMode             = spanTrackingMode;

            _cachedTags = ImmutableDictionary.Create <ITextBuffer, TagSpanIntervalTree <TTag> >();

            _eventSource = eventSource;
            _bufferToRelatedTagSource = bufferToRelatedTagSource;

            _accumulatedTextChanges = null;

            AttachEventHandlersAndStart();
        }
示例#6
0
 protected AsynchronousViewTaggerProvider(
     IThreadingContext threadingContext,
     IAsynchronousOperationListener asyncListener,
     IForegroundNotificationService notificationService)
     : base(threadingContext, asyncListener, notificationService)
 {
 }
 public AbstractDiagnosticsAdornmentTaggerProvider(
     IDiagnosticService diagnosticService,
     IForegroundNotificationService notificationService,
     IAsynchronousOperationListenerProvider listenerProvider)
     : base(diagnosticService, notificationService, listenerProvider.GetListener(FeatureAttribute.ErrorSquiggles))
 {
 }
 public DesignerAttributeIncrementalAnalyzer(
     IServiceProvider serviceProvider,
     IForegroundNotificationService notificationService,
     IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > asyncListeners) :
     base(serviceProvider, notificationService, asyncListeners)
 {
 }
 public VisualStudioErrorReportingService(
     VisualStudioWorkspaceImpl workspace, IForegroundNotificationService foregroundNotificationService, IAsynchronousOperationListener listener)
 {
     _workspace = workspace;
     _foregroundNotificationService = foregroundNotificationService;
     _listener = listener;
 }
 public DesignerAttributeIncrementalAnalyzer(
     IServiceProvider serviceProvider,
     IForegroundNotificationService notificationService,
     IEnumerable<Lazy<IAsynchronousOperationListener, FeatureMetadata>> asyncListeners) :
     base(serviceProvider, notificationService, asyncListeners)
 {
 }
示例#11
0
 public ReferenceHighlightingViewTaggerProvider(
     IThreadingContext threadingContext,
     IForegroundNotificationService notificationService,
     IAsynchronousOperationListenerProvider listenerProvider)
     : base(threadingContext, listenerProvider.GetListener(FeatureAttribute.ReferenceHighlighting), notificationService)
 {
 }
示例#12
0
 public CodeModelIncrementalAnalyzerProvider(
     IForegroundNotificationService notificationService,
     IAsynchronousOperationListenerProvider listenerProvider)
 {
     _listener            = listenerProvider.GetListener(FeatureAttribute.CodeModel);
     _notificationService = notificationService;
 }
 public CodeModelIncrementalAnalyzerProvider(
     IForegroundNotificationService notificationService,
     [ImportMany]IEnumerable<Lazy<IAsynchronousOperationListener, FeatureMetadata>> listeners)
 {
     _listener = new AggregateAsynchronousOperationListener(listeners, FeatureAttribute.CodeModel);
     _notificationService = notificationService;
 }
示例#14
0
 public DiagnosticsSquiggleTaggerProvider(
     IDiagnosticService diagnosticService,
     IForegroundNotificationService notificationService,
     [ImportMany] IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > listeners)
     : base(diagnosticService, notificationService, listeners)
 {
 }
示例#15
0
 public Analyzer(IForegroundNotificationService notificationService, IAsynchronousOperationListener listener, VisualStudioWorkspace workspace, ProjectCodeModelFactory projectCodeModelFactory)
 {
     _notificationService     = notificationService;
     _listener                = listener;
     _workspace               = workspace;
     _projectCodeModelFactory = projectCodeModelFactory;
 }
 public VisualStudioErrorReportingServiceFactory(
     VisualStudioWorkspaceImpl workspace, 
     IForegroundNotificationService foregroundNotificationService,
     [ImportMany] IEnumerable<Lazy<IAsynchronousOperationListener, FeatureMetadata>> asyncListeners)
 {
     _singleton = new VisualStudioErrorReportingService(workspace, foregroundNotificationService, new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.InfoBar));
 }
            public TagComputer(
                ITextBuffer subjectBuffer,
                IForegroundNotificationService notificationService,
                IAsynchronousOperationListener asyncListener,
                ClassificationTypeMap typeMap,
                SyntacticClassificationTaggerProvider taggerProvider)
            {
                _subjectBuffer       = subjectBuffer;
                _notificationService = notificationService;
                _listener            = asyncListener;
                _typeMap             = typeMap;
                _taggerProvider      = taggerProvider;

                _workQueue = new AsynchronousSerialWorkQueue(asyncListener);
                _reportChangeCancellationSource = new CancellationTokenSource();

                _lastLineCache = new LastLineCache();

                _workspaceRegistration = Workspace.GetWorkspaceRegistration(subjectBuffer.AsTextContainer());
                _workspaceRegistration.WorkspaceChanged += OnWorkspaceRegistrationChanged;

                if (_workspaceRegistration.Workspace != null)
                {
                    ConnectToWorkspace(_workspaceRegistration.Workspace);
                }
            }
示例#18
0
            public TagSource(
                ITextView textViewOpt,
                ITextBuffer subjectBuffer,
                AbstractAsynchronousTaggerProvider <TTag> dataSource,
                IAsynchronousOperationListener asyncListener,
                IForegroundNotificationService notificationService)
            {
                if (dataSource.SpanTrackingMode == SpanTrackingMode.Custom)
                {
                    throw new ArgumentException("SpanTrackingMode.Custom not allowed.", "spanTrackingMode");
                }

                _subjectBuffer       = subjectBuffer;
                _textViewOpt         = textViewOpt;
                _dataSource          = dataSource;
                _asyncListener       = asyncListener;
                _notificationService = notificationService;
                _tagSpanComparer     = new TagSpanComparer(_dataSource.TagComparer);

                DebugRecordInitialStackTrace();

                _workQueue          = new AsynchronousSerialWorkQueue(asyncListener);
                this.CachedTagTrees = ImmutableDictionary.Create <ITextBuffer, TagSpanIntervalTree <TTag> >();

                _eventSource = CreateEventSource();

                Connect();

                // Kick off a task to compute the initial set of tags.
                RecalculateTagsOnChanged(new TaggerEventArgs(TaggerDelay.Short));
            }
            public TagComputer(
                ITextBuffer subjectBuffer,
                IForegroundNotificationService notificationService,
                IAsynchronousOperationListener asyncListener,
                ClassificationTypeMap typeMap,
                SyntacticClassificationTaggerProvider taggerProvider,
                IViewSupportsClassificationService viewSupportsClassificationServiceOpt,
                ITextBufferAssociatedViewService associatedViewService,
                IEditorClassificationService editorClassificationService,
                string languageName)
            {
                _subjectBuffer = subjectBuffer;
                _notificationService = notificationService;
                _listener = asyncListener;
                _typeMap = typeMap;
                _taggerProvider = taggerProvider;
                _viewSupportsClassificationServiceOpt = viewSupportsClassificationServiceOpt;
                _associatedViewService = associatedViewService;
                _editorClassificationService = editorClassificationService;
                _languageName = languageName;

                _workQueue = new AsynchronousSerialWorkQueue(asyncListener);
                _reportChangeCancellationSource = new CancellationTokenSource();

                _lastLineCache = new LastLineCache();

                _workspaceRegistration = Workspace.GetWorkspaceRegistration(subjectBuffer.AsTextContainer());
                _workspaceRegistration.WorkspaceChanged += OnWorkspaceRegistrationChanged;

                ConnectToWorkspace(_workspaceRegistration.Workspace);
            }
示例#20
0
 public VisualStudioErrorReportingService(
     VisualStudioWorkspaceImpl workspace, IForegroundNotificationService foregroundNotificationService, IAsynchronousOperationListener listener)
 {
     _workspace = workspace;
     _foregroundNotificationService = foregroundNotificationService;
     _listener = listener;
 }
示例#21
0
 public VisualStudioErrorReportingServiceFactory(
     VisualStudioWorkspaceImpl workspace,
     IForegroundNotificationService foregroundNotificationService,
     [ImportMany] IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > asyncListeners)
 {
     _singleton = new VisualStudioErrorReportingService(workspace, foregroundNotificationService, new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.InfoBar));
 }
 public CodeModelIncrementalAnalyzerProvider(
     IForegroundNotificationService notificationService,
     [ImportMany] IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > listeners)
 {
     _listener            = new AggregateAsynchronousOperationListener(listeners, FeatureAttribute.CodeModel);
     _notificationService = notificationService;
 }
 protected AbstractAsynchronousTaggerProvider(
     IAsynchronousOperationListener asyncListener,
     IForegroundNotificationService notificationService)
 {
     this._asyncListener       = asyncListener;
     this._notificationService = notificationService;
 }
示例#24
0
 public AbstractDiagnosticsAdornmentTaggerProvider(
     IDiagnosticService diagnosticService,
     IForegroundNotificationService notificationService,
     IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > listeners)
     : base(diagnosticService, notificationService, new AggregateAsynchronousOperationListener(listeners, FeatureAttribute.ErrorSquiggles))
 {
 }
示例#25
0
 public ActiveStatementTaggerProvider(
     IThreadingContext threadingContext,
     IForegroundNotificationService notificationService,
     IAsynchronousOperationListenerProvider listenerProvider)
     : base(threadingContext, listenerProvider.GetListener(FeatureAttribute.Classification), notificationService)
 {
 }
 public VisualStudioRuleSetManager(
     FileChangeWatcher fileChangeWatcher, IForegroundNotificationService foregroundNotificationService, IAsynchronousOperationListener listener)
 {
     _fileChangeWatcher             = fileChangeWatcher;
     _foregroundNotificationService = foregroundNotificationService;
     _listener = listener;
 }
示例#27
0
            public TagSource(
                ITextView textViewOpt,
                ITextBuffer subjectBuffer,
                AbstractAsynchronousTaggerProvider <TTag> dataSource,
                IAsynchronousOperationListener asyncListener,
                IForegroundNotificationService notificationService)
                : base(dataSource.ThreadingContext)
            {
                if (dataSource.SpanTrackingMode == SpanTrackingMode.Custom)
                {
                    throw new ArgumentException("SpanTrackingMode.Custom not allowed.", "spanTrackingMode");
                }

                _subjectBuffer       = subjectBuffer;
                _textViewOpt         = textViewOpt;
                _dataSource          = dataSource;
                _asyncListener       = asyncListener;
                _notificationService = notificationService;
                _tagSpanComparer     = new TagSpanComparer(_dataSource.TagComparer);

                DebugRecordInitialStackTrace();

                _workQueue          = new AsynchronousSerialWorkQueue(ThreadingContext, asyncListener);
                this.CachedTagTrees = ImmutableDictionary.Create <ITextBuffer, TagSpanIntervalTree <TTag> >();

                _eventSource = CreateEventSource();

                Connect();

                // Start computing the initial set of tags immediately.  We want to get the UI
                // to a complete state as soon as possible.
                ComputeInitialTags();
            }
示例#28
0
 public DiagnosticsSquiggleTaggerProvider(
     IDiagnosticService diagnosticService,
     IForegroundNotificationService notificationService,
     IAsynchronousOperationListenerProvider listenerProvider)
     : base(diagnosticService, notificationService, listenerProvider)
 {
 }
            public TagComputer(
                ITextBuffer subjectBuffer,
                IForegroundNotificationService notificationService,
                IAsynchronousOperationListener asyncListener,
                ClassificationTypeMap typeMap,
                SyntacticClassificationTaggerProvider taggerProvider)
            {
                _subjectBuffer = subjectBuffer;
                _notificationService = notificationService;
                _listener = asyncListener;
                _typeMap = typeMap;
                _taggerProvider = taggerProvider;

                _workQueue = new AsynchronousSerialWorkQueue(asyncListener);
                _reportChangeCancellationSource = new CancellationTokenSource();

                _lastLineCache = new LastLineCache();

                _workspaceRegistration = Workspace.GetWorkspaceRegistration(subjectBuffer.AsTextContainer());
                _workspaceRegistration.WorkspaceChanged += OnWorkspaceRegistrationChanged;

                if (_workspaceRegistration.Workspace != null)
                {
                    ConnectToWorkspace(_workspaceRegistration.Workspace);
                }
            }
 protected AbstractAsyncClassificationTaggerProvider(
     IForegroundNotificationService notificationService,
     IAsynchronousOperationListenerProvider asyncListenerProvider,
     IThreadingContext threadingContext)
     : base(threadingContext, asyncListenerProvider.GetListener(FeatureAttribute.Classification), notificationService)
 {
 }
示例#31
0
 public ViewTagSource(
     ITextView textView, ITextBuffer subjectBuffer, ITagProducer <TTag> tagProducer, ITaggerEventSource eventSource,
     IAsynchronousOperationListener asyncListener, IForegroundNotificationService notificationService,
     bool removeTagsThatIntersectEdits) :
     base(subjectBuffer, tagProducer, eventSource, asyncListener, notificationService, removeTagsThatIntersectEdits, null)
 {
     _textView = textView;
 }
示例#32
0
 public ReferenceHighlightingViewTaggerProvider(
     IForegroundNotificationService notificationService,
     ISemanticChangeNotificationService semanticChangeNotificationService,
     [ImportMany] IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > asyncListeners) :
     base(new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.ReferenceHighlighting), notificationService)
 {
     _semanticChangeNotificationService = semanticChangeNotificationService;
 }
 public DiagnosticsSuggestionTaggerProvider(
     IThreadingContext threadingContext,
     IDiagnosticService diagnosticService,
     IForegroundNotificationService notificationService,
     IAsynchronousOperationListenerProvider listenerProvider)
     : base(threadingContext, diagnosticService, notificationService, listenerProvider)
 {
 }
示例#34
0
 public HighlighterViewTaggerProvider(
     IForegroundNotificationService notificationService,
     IHighlightingService highlighterService,
     [ImportMany] IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > asyncListeners)
     : base(new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.KeywordHighlighting), notificationService)
 {
     _highlighterService = highlighterService;
 }
示例#35
0
 public BraceHighlightingViewTaggerProvider(
     IBraceMatchingService braceMatcherService,
     IForegroundNotificationService notificationService,
     [ImportMany] IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > asyncListeners)
     : base(new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.BraceHighlighting), notificationService)
 {
     _braceMatcherService = braceMatcherService;
 }
示例#36
0
 public SyntacticClassificationTaggerProvider(
     ClassificationTypeMap typeMap,
     IForegroundNotificationService notificationService,
     [ImportMany] IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > asyncListeners)
     : base(new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.KeywordHighlighting), notificationService)
 {
     _typeMap = typeMap;
 }
示例#37
0
 public InlineParameterNameHintsDataTaggerProvider(
     IThreadingContext threadingContext,
     IAsynchronousOperationListenerProvider listenerProvider,
     IForegroundNotificationService notificationService)
     : base(threadingContext, listenerProvider.GetListener(FeatureAttribute.InlineParameterNameHints), notificationService)
 {
     _listener = listenerProvider.GetListener(FeatureAttribute.InlineParameterNameHints);
 }
        public VisualStudioErrorReportingService(
            VisualStudioWorkspaceImpl workspace, IForegroundNotificationService foregroundNotificationService, IAsynchronousOperationListener listener)
        {
            _workspace = workspace;
            _foregroundNotificationService = foregroundNotificationService;
            _listener = listener;

            _documentTrackingService = workspace.Services.GetService<IDocumentTrackingService>();
        }
 public VisualStudioRuleSetManagerFactory(
     SVsServiceProvider serviceProvider,
     IForegroundNotificationService foregroundNotificationService,
     [ImportMany] IEnumerable<Lazy<IAsynchronousOperationListener, FeatureMetadata>> asyncListeners)
 {
     _serviceProvider = serviceProvider;
     _foregroundNotificationService = foregroundNotificationService;
     _listener = new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.RuleSetEditor);
 }
 public VisualStudioErrorTaskList(
     SVsServiceProvider serviceProvider,
     VisualStudioWorkspace workspace,
     IForegroundNotificationService notificationService,
     IDiagnosticService diagnosticService,
     [ImportMany] IEnumerable<Lazy<IAsynchronousOperationListener, FeatureMetadata>> asyncListeners) :
     base(serviceProvider, workspace, notificationService, diagnosticService, asyncListeners)
 {
 }
 public CSharpDesignerAttributeIncrementalAnalyzerProvider(
     SVsServiceProvider serviceProvider,
     IForegroundNotificationService notificationService,
     [ImportMany] IEnumerable<Lazy<IAsynchronousOperationListener, FeatureMetadata>> asyncListeners)
 {
     _serviceProvider = serviceProvider;
     _notificationService = notificationService;
     _asyncListeners = asyncListeners;
 }
        public AbstractDesignerAttributeIncrementalAnalyzer(
            IServiceProvider serviceProvider,
            IForegroundNotificationService notificationService,
            IEnumerable<Lazy<IAsynchronousOperationListener, FeatureMetadata>> asyncListeners)
        {
            _serviceProvider = serviceProvider;
            Contract.ThrowIfNull(_serviceProvider);

            _notificationService = notificationService;

            _listener = new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.DesignerAttribute);
            _state = new DesignerAttributeState();
        }
示例#43
0
 public BatchChangeNotifier(
     ITextBuffer subjectBuffer,
     IAsynchronousOperationListener listener,
     IForegroundNotificationService notificationService,
     Action<SnapshotSpan> reportChangedSpan,
     TaggerDelay throttleDelay = TaggerDelay.Short)
 {
     Contract.ThrowIfNull(reportChangedSpan);
     _subjectBuffer = subjectBuffer;
     _listener = listener;
     _notificationService = notificationService;
     _reportChangedSpan = reportChangedSpan;
     _throttleDelay = throttleDelay;
 }
        protected AbstractVisualStudioTaskList(
            IServiceProvider serviceProvider,
            IForegroundNotificationService notificationService,
            string featureName,
            IEnumerable<Lazy<IAsynchronousOperationListener, FeatureMetadata>> asyncListeners)
        {
            Contract.ThrowIfNull(serviceProvider);
            this.ServiceProvider = serviceProvider;

            this.NotificationService = notificationService;
            this.Listener = new AggregateAsynchronousOperationListener(asyncListeners, featureName);

            // TODO: remove this type and its derived types.
            // now, new error list is installed by default, and no way to take it out.
            // set ErrorListInstalled to true
            this.ErrorListInstalled = true;
        }
        public VisualStudioTodoTaskList(
            SVsServiceProvider serviceProvider,
            IForegroundNotificationService notificationService,
            IOptionService optionService,
            ITodoListProvider todoListProvider,
            [ImportMany] IEnumerable<Lazy<IAsynchronousOperationListener, FeatureMetadata>> asyncListeners) :
            base(serviceProvider, notificationService, FeatureAttribute.TodoCommentList, asyncListeners)
        {
            // this should be called after all fields are initialized
            InitializeTaskList();

            _optionService = optionService;
            _todoListProvider = todoListProvider;

            // we return after initializing task provider since getting option information
            // require old task list provider.
            if (ErrorListInstalled)
            {
                return;
            }

            todoListProvider.TodoListUpdated += OnTodoListUpdated;
        }
 public ForegroundNotificationServiceTests()
 {
     TestWorkspace.ResetThreadAffinity();
     _service = TestExportProvider.ExportProviderWithCSharpAndVisualBasic.GetExportedValue<IForegroundNotificationService>();
 }
 private static bool Empty(IForegroundNotificationService service)
 {
     var temp = (ForegroundNotificationService)service;
     return temp.IsEmpty_TestOnly;
 }
 public ForegroundNotificationServiceTests()
 {
     TestWorkspace.ResetThreadAffinity();
     _service = new ForegroundNotificationService();
 }
 public Analyzer(IForegroundNotificationService notificationService, IAsynchronousOperationListener listener, VisualStudioWorkspaceImpl workspace)
 {
     _notificationService = notificationService;
     _listener = listener;
     _workspace = workspace;
 }