예제 #1
0
        public OutputToolWindowControl()
        {
            InitializeComponent();

            ThreadHelper.JoinableTaskFactory.Run(async() =>
            {
                await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
                Dte = (DTE)await OutputToolWindowCommand.Instance.ServiceProvider.GetServiceAsync(typeof(DTE));

                Events                       = Dte.Events;
                SolutionEvents               = Events.SolutionEvents;
                SolutionEvents.Opened       += () => Clear();
                SolutionEvents.AfterClosing += () => Clear();
            });

            ScriptManager = new ScriptManager(Dte);
            FCCOutputBrowser.ObjectForScripting = ScriptManager;

            TestContainerDiscoverer.UpdateOutputWindow += (sender, args) =>
            {
                ThreadHelper.JoinableTaskFactory.Run(async() =>
                {
                    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                    if (string.IsNullOrWhiteSpace(args?.HtmlContent))
                    {
                        Clear();
                        return;
                    }

                    FCCOutputBrowser.NavigateToString(args.HtmlContent);
                    FCCOutputBrowser.Visibility = Visibility.Visible;
                });
            };
        }
예제 #2
0
        public void Handle(NewReportMessage message)
        {
            ThreadHelper.JoinableTaskFactory.Run(async() =>
            {
                await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                FCCOutputBrowser.NavigateToString(message.Report);
            });
        }
예제 #3
0
 private void InvokeScript(string scriptName, params object[] args)
 {
     try
     {
         if (FCCOutputBrowser.Document != null)
         {
             try
             {
                 // Can use FCCOutputBrowser.IsLoaded but
                 // it is possible for this to be successful when IsLoaded false.
                 FCCOutputBrowser.InvokeScript(scriptName, args);
             }
             catch
             {
                 // missed are not important.  Important go through NewReportMessage and NavigateToString
             }
         }
     }
     catch (ObjectDisposedException) { }
 }