private void SignInWebBrowserControl_Navigated(object sender, NavigationEventArgs e) { // navigate if at empty page, and a idp hrd url is available if (null == e.Uri && null != _selectedIdentityProvider) { BrowserSigninControl.Navigate(new Uri(_selectedIdentityProvider.LoginUrl)); } else { if (_navigatingToIdentityProvider) { lock (_setBrowserVisibleLock) { _setBrowserVisible = true; } Thread show = new Thread(() => { System.Threading.Thread.CurrentThread.Join(250); lock (_setBrowserVisibleLock) { if (_setBrowserVisible && _navigatingToIdentityProvider) { Dispatcher.BeginInvoke(() => { ShowBrowser(); }); } } }); show.Start(); } } }
private void NavigateToIdentityProvider(IdentityProviderInformation identityProvider) { if (null != identityProvider) { ShowProgressBar(String.Format(String.Format("Contacting {0}", identityProvider.Name))); lock (_navigatingToIdentityProviderLock) { _navigatingToIdentityProvider = true; BrowserSigninControl.Navigated += new EventHandler <NavigationEventArgs>(SignInWebBrowserControl_Navigated); BrowserSigninControl.Navigating += new EventHandler <NavigatingEventArgs>(SignInWebBrowserControl_Navigating); BrowserSigninControl.ScriptNotify += new EventHandler <NotifyEventArgs>(SignInWebBrowserControl_ScriptNotify); _selectedIdentityProvider = identityProvider; BrowserSigninControl.NavigateToString("<html><head><title></title></head><body></body></html>"); } } }