Ejemplo n.º 1
0
        private void LifeSpanHandler_PopupRequested(PopupRequestedEventArgs args)
        {
            var validCurrentUri = Uri.TryCreate(control.Address, UriKind.Absolute, out var currentUri);
            var validNewUri     = Uri.TryCreate(args.Url, UriKind.Absolute, out var newUri);
            var sameHost        = validCurrentUri && validNewUri && string.Equals(currentUri.Host, newUri.Host, StringComparison.OrdinalIgnoreCase);

            switch (settings.PopupPolicy)
            {
            case PopupPolicy.Allow:
            case PopupPolicy.AllowSameHost when sameHost:
                logger.Debug($"Forwarding request to open new window for '{args.Url}'...");
                PopupRequested?.Invoke(args);
                break;

            case PopupPolicy.AllowSameWindow:
            case PopupPolicy.AllowSameHostAndWindow when sameHost:
                logger.Info($"Discarding request to open new window and loading '{args.Url}' directly...");
                control.NavigateTo(args.Url);
                break;

            case PopupPolicy.AllowSameHost when !sameHost:
            case PopupPolicy.AllowSameHostAndWindow when !sameHost:
                logger.Info($"Blocked request to open new window for '{args.Url}' as it targets a different host.");
                break;

            default:
                logger.Info($"Blocked request to open new window for '{args.Url}'.");
                break;
            }
        }
        private void HomeNavigationRequested()
        {
            if (isMainInstance && (settings.UseStartUrlAsHomeUrl || !string.IsNullOrWhiteSpace(settings.HomeUrl)))
            {
                var navigate = false;
                var url      = settings.UseStartUrlAsHomeUrl ? settings.StartUrl : settings.HomeUrl;

                if (settings.HomeNavigationRequiresPassword && !string.IsNullOrWhiteSpace(settings.HomePasswordHash))
                {
                    var message = text.Get(TextKey.PasswordDialog_BrowserHomePasswordRequired);
                    var title   = !string.IsNullOrWhiteSpace(settings.HomeNavigationMessage) ? settings.HomeNavigationMessage : text.Get(TextKey.PasswordDialog_BrowserHomePasswordRequiredTitle);
                    var dialog  = uiFactory.CreatePasswordDialog(message, title);
                    var result  = dialog.Show(window);

                    if (result.Success)
                    {
                        var passwordHash = hashAlgorithm.GenerateHashFor(result.Password);

                        if (settings.HomePasswordHash.Equals(passwordHash, StringComparison.OrdinalIgnoreCase))
                        {
                            navigate = true;
                        }
                        else
                        {
                            messageBox.Show(TextKey.MessageBox_InvalidHomePassword, TextKey.MessageBox_InvalidHomePasswordTitle, icon: MessageBoxIcon.Warning, parent: window);
                        }
                    }
                }
                else
                {
                    var message = text.Get(TextKey.MessageBox_BrowserHomeQuestion);
                    var title   = !string.IsNullOrWhiteSpace(settings.HomeNavigationMessage) ? settings.HomeNavigationMessage : text.Get(TextKey.MessageBox_BrowserHomeQuestionTitle);
                    var result  = messageBox.Show(message, title, MessageBoxAction.YesNo, MessageBoxIcon.Question, window);

                    navigate = result == MessageBoxResult.Yes;
                }

                if (navigate)
                {
                    control.NavigateTo(url);
                }
            }
        }
Ejemplo n.º 3
0
        private void Window_AddressChanged(string address)
        {
            var isValid = Uri.TryCreate(address, UriKind.Absolute, out _) || Uri.TryCreate($"https://{address}", UriKind.Absolute, out _);

            if (isValid)
            {
                logger.Debug($"The user requested to navigate to '{address}', the URI is valid.");
                control.NavigateTo(address);
            }
            else
            {
                logger.Debug($"The user requested to navigate to '{address}', but the URI is not valid.");
                window.UpdateAddress(string.Empty);
            }
        }