private void OnNavigationRequest(object sender, NavigatingCancelEventArgs e)
        {
            if (!(WebBrowser.Document is HTMLDocument document))
            {
                return;
            }

            OnNavigating?.Invoke(document);
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetTheme(Android.Resource.Style.ThemeDeviceDefaultDialogNoActionBar);

            BrowserView = new WebView(this);
            var client = new BrowserViewClient(d => OnNavigating?.Invoke(d));

            BrowserView.Settings.UserAgentString   = UserAgentString;
            BrowserView.Settings.JavaScriptEnabled = true;
            BrowserView.SetWebViewClient(client);
            SetContentView(BrowserView);

            var startUri = Intent.GetStringExtra(AuthorizationUriAcquirer.IntentStartUriKey);

            BrowserView.LoadUrl(startUri);
        }
        private BeforeRouterResult Navigate(RouteContext to)
        {
            var routingEventArgs = new RoutingEventArgs(to, Route, _ViewModel);

            OnNavigating?.Invoke(this, routingEventArgs);

            if (routingEventArgs.Cancel)
            {
                _CurrentNavigations.Dequeue();
                to.Complete();
                return(new BeforeRouterResult(false));
            }

            var redirect = routingEventArgs.RedirectedTo;

            if (string.IsNullOrEmpty(redirect))
            {
                _ViewModel = to.ViewModel;
                return(new BeforeRouterResult(null));
            }

            to.Redirect(redirect, GetViewModelFromRoute(redirect));
            return(new BeforeRouterResult(redirect));
        }
 public WebViewController(string startUri)
 {
     StartUri        = startUri;
     WebViewDelegate = new NavDelegate(d => OnNavigating?.Invoke(d));
 }