public void OpenUnmanaged(string url, IWebViewManager manager, bool blockDomains = true, List <string> allowedDomains = null) { if (_core.TryGetUiManager(out IUiManager ui)) { var tab = manager.CreateTab(url); var vm = new UnmanagedTabViewModel(tab, _core, blockDomains, allowedDomains); ui.Navigate(vm, false); } }
async Task <bool> GetWebViewManager() { if (_webViewManager == null) { var plugin = _core.PluginLoader.GetPlugins <IWebViewPlugin>().FirstOrDefault(); if (plugin == null) { return(false); } _webViewManager = await plugin.GetWebViewManagerAsync(); } return(true); }
public Task <IWebViewManager> GetWebViewManagerAsync() { if (_manager == null) { var args = new Dictionary <string, string>(); if (_settings.ChromiumFlags != null) { foreach (var line in _settings.ChromiumFlags .Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)) { var parts = line.Split('@'); args[parts[0]] = parts.Length > 1 ? parts[1] : null; } } _manager = new ChromiumManager(args, _core.Logger); } return(Task.FromResult(_manager)); }
public WebBrowserPageViewModel(IWebViewManager webViewManager, LinkItemProvider provider, WebBrowserPlugin plugin, PanaceaServices core) { _webViewManager = webViewManager; ItemProvider = provider; _core = core; CloseTabCommand = new RelayCommand(args => { var view = args as IWebView; if (Tabs.Contains(view)) { Tabs.Remove(view); if (Tabs.Count == 0) { CreateTab(); } else if (CurrentWebView == view) { CurrentWebView = Tabs.First(); } //SwitchToTab(CurrentWebView); } }); ItemClickCommand = new RelayCommand(args => { var link = args as Link; NavigateCommand?.Execute(link.DataUrl); }); IsFavoriteCommand = new RelayCommand((arg) => { }, (arg) => { var link = arg as Link; if (plugin.Favorites == null) { return(false); } return(plugin.Favorites.Any(l => l.Id == link.Id)); }); FavoriteCommand = new AsyncCommand(async(args) => { var game = args as Link; if (game == null) { return; } if (core.TryGetFavoritesPlugin(out IFavoritesManager _favoritesManager)) { try { if (await _favoritesManager.AddOrRemoveFavoriteAsync("WebBrowser", game)) { OnPropertyChanged(nameof(IsFavoriteCommand)); } } catch (Exception e) { core.Logger.Error(this, e.Message); } } }); NavigateCommand = new RelayCommand(async(args) => { if (_core.TryGetKeyboard(out IKeyboardPlugin keyboard)) { keyboard.HideKeyboard(); } var url = args.ToString(); if (CurrentWebView == null) { CreateTab(url); } if (url.ToLower() == "about:blank") { CurrentWebView?.Navigate(url); return; } if (core.TryGetBilling(out IBillingManager bill)) { if (!bill.IsPluginFree("WebBrowser")) { var service = await bill.GetOrRequestServiceAsync(new Translator("WebBrowser").Translate("Web browser requires service."), "WebBrowser"); if (service == null) { return; } if (_core.TryGetUiManager(out IUiManager ui)) { if (ui.CurrentPage != this) { ui.Navigate(this); } } } } if (CurrentWebView == null) { CreateTab(); } if (Uri.IsWellFormedUriString(url, UriKind.Absolute)) { var uri = new Uri(url); if (uri.Scheme != "https" && uri.Scheme != "http" && uri.Scheme != "javascript" && !uri.ToString().StartsWith("about:blank")) { //_window.ThemeManager.Toast(new Translator("WebBrowser").Translate("Access denied")); return; } WebViewContainerVisibility = Visibility.Visible; CurrentWebView?.Navigate(url); } else if (url.Contains(".") && Uri.IsWellFormedUriString("http://" + url, UriKind.Absolute)) { WebViewContainerVisibility = Visibility.Visible; CurrentWebView?.Navigate(url); } else { WebViewContainerVisibility = Visibility.Visible; CurrentWebView?.Navigate("https://www.google.com/search?q=" + url); } Keyboard.ClearFocus(); }); BackCommand = new RelayCommand(args => { CurrentWebView?.GoBack(); }, args => { return(CurrentWebView?.CanGoBack == true); }); ForwardCommand = new RelayCommand(args => { CurrentWebView?.GoForward(); }, args => { return(CurrentWebView?.CanGoForward == true); }); SwitchTabSelectorCommand = new RelayCommand((args) => { ShowTabSelector(); }); SelectTabCommand = new RelayCommand((args) => { SwitchToTab(args as IWebView); }); AddTabCommand = new RelayCommand((args) => { CreateTab(); }); }