Example #1
0
        private void Timer_Elapsed(object sender, ElapsedEventArgs args)
        {
            try
            {
                var authorization = ("Authorization", $"Bearer {oauth2Token}");
                var content       = $"timestamp={ToUnixTimestamp(DateTime.Now)}&ping-number={++pingNumber}";
                var contentType   = "application/x-www-form-urlencoded";
                var token         = ("SEBConnectionToken", connectionToken);
                var success       = TryExecute(HttpMethod.Post, api.PingEndpoint, out var response, content, contentType, authorization, token);

                if (success)
                {
                    if (TryParseInstruction(response.Content, out var instruction) && instruction == "SEB_QUIT")
                    {
                        Task.Run(() => TerminationRequested?.Invoke());
                    }
                }
                else
                {
                    logger.Error($"Failed to send ping: {ToString(response)}");
                }
            }
            catch (Exception e)
            {
                logger.Error("Failed to send ping!", e);
            }

            timer.Start();
        }
Example #2
0
        private void RequestHandler_QuitUrlVisited(string url)
        {
            Task.Run(() =>
            {
                if (settings.ConfirmQuitUrl)
                {
                    var message   = text.Get(TextKey.MessageBox_BrowserQuitUrlConfirmation);
                    var title     = text.Get(TextKey.MessageBox_BrowserQuitUrlConfirmationTitle);
                    var result    = messageBox.Show(message, title, MessageBoxAction.YesNo, MessageBoxIcon.Question, window);
                    var terminate = result == MessageBoxResult.Yes;

                    if (terminate)
                    {
                        logger.Info($"User confirmed termination via quit URL '{url}', forwarding request...");
                        TerminationRequested?.Invoke();
                    }
                    else
                    {
                        logger.Info($"User aborted termination via quit URL '{url}'.");
                    }
                }
                else
                {
                    logger.Info($"Automatically requesting termination due to quit URL '{url}'...");
                    TerminationRequested?.Invoke();
                }
            });
        }
Example #3
0
 internal void Terminate()
 {
     if (browser.IsDisposed)
     {
         browser.LoadError    -= Browser_LoadError;
         browser.TitleChanged -= Browser_TitleChanged;
         browser.Dispose();
     }
     TerminationRequested?.Invoke();
 }
Example #4
0
        private void CreateNewInstance(string url = null)
        {
            var id             = ++instanceIdCounter;
            var isMainInstance = instances.Count == 0;
            var instanceLogger = logger.CloneFor($"Browser Instance #{id}");
            var startUrl       = url ?? settings.StartUrl;
            var instance       = new BrowserApplicationInstance(appConfig, settings, id, isMainInstance, fileSystemDialog, messageBox, instanceLogger, text, uiFactory, startUrl);

            instance.ConfigurationDownloadRequested += (fileName, args) => ConfigurationDownloadRequested?.Invoke(fileName, args);
            instance.PopupRequested       += Instance_PopupRequested;
            instance.Terminated           += Instance_Terminated;
            instance.TerminationRequested += () => TerminationRequested?.Invoke();

            instance.Initialize();
            instances.Add(instance);

            logger.Info($"Created browser instance {instance.Id}.");
            WindowsChanged?.Invoke();
        }
Example #5
0
        public BrowserApplicationInstance(
            AppSettings appSettings,
            IMessageBox messageBox,
            int id,
            bool isMainInstance,
            int numWindows,
            string startUrl,
            IModuleLogger logger,
            IText text)
        {
            this.appSettings                         = appSettings;
            this.messageBox                          = messageBox;
            this.Id                                  = id;
            this.isMainInstance                      = isMainInstance;
            this.logger                              = logger;
            this.text                                = text;
            this.startUrl                            = startUrl;
            this.settings                            = new BrowserSettings();
            settings.QuitUrl                         = appSettings.QuitUrl;
            settings.DownloadDirectory               = appSettings.DownloadDirectory;
            settings.AllowDownloads                  = true;
            settings.MainWindow.AllowReloading       = appSettings.AllowReload;
            settings.AdditionalWindow.AllowReloading = appSettings.AllowReload;

            var instanceLogger = new ModuleLogger(logger, nameof(MainWindow));

            window = new MainWindow(appSettings, settings, messageBox, id, isMainInstance, numWindows, startUrl, instanceLogger, text);
            window.TerminationRequested += () => TerminationRequested?.Invoke();
            window.IconChanged          += (i) => IconChanged?.Invoke(i);

            Handle = window.Handle;
            Icon   = new BrowserIconResource();

            window.Closing        += Control_Closing;
            window.TitleChanged   += Control_TitleChanged;
            window.PopupRequested += Control_PopupRequested;
        }
 private void Instance_TerminationRequested()
 {
     logger.Info("Attempting to shutdown as requested by the browser...");
     TerminationRequested?.Invoke();
 }