internal static LaunchResult SafeLaunchBrowserOnlyIfPossible(Uri originatingUri, Uri destinationUri, string targetName, bool fIsTopLevel) { LaunchResult launchResult = LaunchResult.NotLaunched; bool flag = destinationUri.Scheme == Uri.UriSchemeHttp || destinationUri.Scheme == Uri.UriSchemeHttps || destinationUri.IsFile; bool flag2 = string.Compare(destinationUri.Scheme, Uri.UriSchemeMailto, StringComparison.OrdinalIgnoreCase) == 0; if (!BrowserInteropHelper.IsInitialViewerNavigation && SecurityHelper.CallerHasUserInitiatedNavigationPermission() && ((fIsTopLevel && flag) || flag2)) { if (flag) { IBrowserCallbackServices browserCallbackServices = (Application.Current != null) ? Application.Current.BrowserCallbackServices : null; if (browserCallbackServices != null) { launchResult = AppSecurityManager.CanNavigateToUrlWithZoneCheck(originatingUri, destinationUri); if (launchResult == LaunchResult.Launched) { browserCallbackServices.DelegateNavigation(BindUriHelper.UriToString(destinationUri), targetName, AppSecurityManager.GetHeaders(destinationUri)); launchResult = LaunchResult.Launched; } } } else if (flag2) { UnsafeNativeMethods.ShellExecute(new HandleRef(null, IntPtr.Zero), null, BindUriHelper.UriToString(destinationUri), null, null, 0); launchResult = LaunchResult.Launched; } } return(launchResult); }
internal static int MapUrlToZone(Uri url) { AppSecurityManager.EnsureSecurityManager(); int result; AppSecurityManager._secMgr.MapUrlToZone(BindUriHelper.UriToString(url), out result, 0); return(result); }
internal static void SafeLaunchBrowserDemandWhenUnsafe(Uri originatingUri, Uri destinationUri, bool fIsTopLevel) { LaunchResult launchResult = AppSecurityManager.SafeLaunchBrowserOnlyIfPossible(originatingUri, destinationUri, fIsTopLevel); if (launchResult == LaunchResult.NotLaunched) { SecurityHelper.DemandUnmanagedCode(); AppSecurityManager.UnsafeLaunchBrowser(destinationUri, null); } }
internal static void UnsafeLaunchBrowser(Uri uri, string targetFrame = null) { if (Application.Current != null && Application.Current.CheckAccess()) { IBrowserCallbackServices browserCallbackServices = Application.Current.BrowserCallbackServices; if (browserCallbackServices != null) { browserCallbackServices.DelegateNavigation(BindUriHelper.UriToString(uri), targetFrame, AppSecurityManager.GetHeaders(uri)); return; } } AppSecurityManager.ShellExecuteDefaultBrowser(uri); }
private static LaunchResult CheckBlockNavigation(Uri originatingUri, Uri destinationUri, bool fEnabled) { if (!fEnabled) { return(LaunchResult.Launched); } if (UnsafeNativeMethods.CoInternetIsFeatureZoneElevationEnabled(BindUriHelper.UriToString(originatingUri), BindUriHelper.UriToString(destinationUri), AppSecurityManager._secMgr, 2) == 1) { return(LaunchResult.Launched); } if (AppSecurityManager.IsZoneElevationSettingPrompt(destinationUri)) { return(LaunchResult.NotLaunchedDueToPrompt); } return(LaunchResult.NotLaunched); }
private static LaunchResult CanNavigateToUrlWithZoneCheck(Uri originatingUri, Uri destinationUri) { AppSecurityManager.EnsureSecurityManager(); bool flag = UnsafeNativeMethods.CoInternetIsFeatureEnabled(1, 2) != 1; int num = AppSecurityManager.MapUrlToZone(destinationUri); Uri uri = null; if (Application.Current.MimeType != MimeType.Document) { uri = BrowserInteropHelper.Source; } else if (destinationUri.IsFile && Path.GetExtension(destinationUri.LocalPath).Equals(DocumentStream.XpsFileExtension, StringComparison.OrdinalIgnoreCase)) { num = 3; } int num2; if (uri != null) { num2 = AppSecurityManager.MapUrlToZone(uri); } else { bool flag2 = SecurityHelper.CheckUnmanagedCodePermission(); if (flag2) { return(LaunchResult.Launched); } num2 = 3; uri = originatingUri; } if ((!flag && ((num2 != 3 && num2 != 4) || num != 0)) || (flag && (num2 == num || (num2 <= 4 && num <= 4 && (num2 < num || ((num2 == 2 || num2 == 1) && (num == 2 || num == 1))))))) { return(LaunchResult.Launched); } return(AppSecurityManager.CheckBlockNavigation(uri, destinationUri, flag)); }
// Token: 0x060078AD RID: 30893 RVA: 0x0022606C File Offset: 0x0022426C internal static LaunchResult SafeLaunchBrowserOnlyIfPossible(Uri originatingUri, Uri destinationUri, bool fIsTopLevel) { return(AppSecurityManager.SafeLaunchBrowserOnlyIfPossible(originatingUri, destinationUri, null, fIsTopLevel)); }