Example #1
0
 public virtual void ShowWebBrowser(NavigateToUrlEventArgs e)
 {
     if (!e.Handled && e.Uri != null)
     {
         System.Diagnostics.Process.Start(e.Uri.ToString());
         e.SetHandled();
     }
 }
Example #2
0
 void HandleNavigateToUrl(object sender, NavigateToUrlEventArgs e)
 {
     if (NavigateToUrlEnabled)
     {
         ((IRichTextViewEventSink)EventSink).OnNavigateToUrl(e.Uri);
         e.SetHandled();
     }
 }
Example #3
0
 protected override void OnNavigateToUrl(NavigateToUrlEventArgs e)
 {
     foreach (var action in actions)
     {
         action?.Invoke();
     }
     e.SetHandled();
     base.OnNavigateToUrl(e);
 }
Example #4
0
 public virtual void ShowWebBrowser(NavigateToUrlEventArgs e)
 {
     if (!e.Handled && e.Uri != null) {
         System.Diagnostics.Process.Start (e.Uri.ToString ());
         e.SetHandled ();
     }
 }
Example #5
0
 void HandleNavigateToUrl(object sender, NavigateToUrlEventArgs e)
 {
     ApplicationContext.InvokeUserCode(delegate {
         ((IRichTextViewEventSink)EventSink).OnNavigateToUrl(e.Uri);
     });
 }
        void WebView_NavigateToUrl(object sender, NavigateToUrlEventArgs e)
        {
            /*Console.WriteLine(e.Uri);
             * if (e.Uri.ToString().StartsWith("urn:ietf:wg:oauth:2.0:oob", StringComparison.InvariantCultureIgnoreCase))
             * {
             *  Console.WriteLine("MAGICAL SPECIAL HANDLING");
             *  Application.Invoke(delegate { progressIndicator.Indeterminate = true; progressIndicator.Fraction = 0;});
             * }*/

            if (e == null)
            {
                return;
            }

            string requestUrlString = e.Uri.ToString();

            if (requestUrlString.StartsWith(BrokerConstants.BrowserExtPrefix, StringComparison.OrdinalIgnoreCase))
            {
                var result = new AuthorizationResult(AuthorizationStatus.ProtocolError)
                {
                    Error            = "Unsupported request",
                    ErrorDescription = "Server is redirecting client to browser. This behavior is not yet defined on Mac OS X."
                };
                callbackMethod(result);
                webView.StopLoading();
                Application.Invoke(delegate { Close(); });
                return;
            }

            if (requestUrlString.ToLower(CultureInfo.InvariantCulture).StartsWith(callback.ToLower(CultureInfo.InvariantCulture), StringComparison.OrdinalIgnoreCase) ||
                requestUrlString.StartsWith(BrokerConstants.BrowserExtInstallPrefix, StringComparison.OrdinalIgnoreCase))
            {
                callbackMethod(new AuthorizationResult(AuthorizationStatus.Success, requestUrlString));
                webView.StopLoading();
                Application.Invoke(delegate { Close(); });
                return;
            }

            if (requestUrlString.StartsWith(BrokerConstants.DeviceAuthChallengeRedirect, StringComparison.CurrentCultureIgnoreCase))
            {
                var    uri   = new Uri(requestUrlString);
                string query = uri.Query;
                if (query.StartsWith("?", StringComparison.OrdinalIgnoreCase))
                {
                    query = query.Substring(1);
                }

                Dictionary <string, string> keyPair = EncodingHelper.ParseKeyValueList(query, '&', true, false, null);
                string responseHeader = PlatformPlugin.DeviceAuthHelper.CreateDeviceAuthChallengeResponse(keyPair).Result;

                /*var newRequest = WebRequest.CreateHttp(keyPair["SubmitUrl"]);
                 * newRequest.Headers[BrokerConstants.ChallengeResponseHeader] = responseHeader;
                 * var newRequest = (NSMutableUrlRequest)request.MutableCopy();
                 * newRequest.Url = new NSUrl(keyPair["SubmitUrl"]);
                 * newRequest[BrokerConstants.ChallengeResponseHeader] = responseHeader;
                 * webView.MainFrame.LoadRequest(newRequest);
                 * WebView.DecideIgnore(decisionToken);*/
                return;
            }

            if (!e.Uri.AbsoluteUri.Equals("about:blank", StringComparison.CurrentCultureIgnoreCase) && !e.Uri.Scheme.Equals("https", StringComparison.CurrentCultureIgnoreCase))
            {
                var result = new AuthorizationResult(AuthorizationStatus.ErrorHttp);
                result.Error            = AdalError.NonHttpsRedirectNotSupported;
                result.ErrorDescription = AdalErrorMessage.NonHttpsRedirectNotSupported;
                callbackMethod(result);
                webView.StopLoading();
                Application.Invoke(delegate { Close(); });
            }
        }