Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Base / System / Security / permissions / WebBrowserPermission.cs / 1 / WebBrowserPermission.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
// The WebBrowserPermission controls the ability to create the WebBrowsercontrol.
// In avalon - this control creates the ability for frames to navigate to html.
//
//
// History:
// 05/18/05: [....] Created.
//---------------------------------------------------------------------------
using System;
using System.Security;
using System.Security.Permissions;
using System.IO;
using System.Runtime.Serialization;
using System.Collections;
using System.Globalization;
using System.Diagnostics.CodeAnalysis;
using System.Windows;
namespace System.Security.Permissions
{
///
/// Enum of permission levels.
///
public enum WebBrowserPermissionLevel
{
///
/// WebBrowser not allowed
///
None,
///
/// Safe. Can create webbrowser with some restrictions.
///
Safe,
///
/// Unrestricted. Can create webbrowser with no restrictions.
///
Unrestricted
}
///
/// The WebBrowserPermission controls the ability to create the WebBrowsercontrol.
/// In avalon - this permission grants the ability for frames to navigate to html.
/// The levels for this permission are :
/// None - not able to navigate frames to HTML.
/// Safe - able to navigate frames to HTML safely. This means that
/// there are several mitigations in effect. Namely.
/// Popup mitigation - unable to place an avalon popup over the weboc.
/// SiteLock - the WebOC can only be navigated to site of origin.
/// Url-Action-lockdown - the security settings of the weboc are reduced.
/// Unrestricted - able to navigate the weboc with no restrictions.
///
[Serializable()]
sealed public class WebBrowserPermission : CodeAccessPermission, IUnrestrictedPermission
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// WebBrowserPermission ctor.
///
public WebBrowserPermission()
{
_webBrowserPermissionLevel = WebBrowserPermissionLevel.Safe;
}
///
/// WebBrowserPermission ctor.
///
public WebBrowserPermission(PermissionState state)
{
if (state == PermissionState.Unrestricted)
{
_webBrowserPermissionLevel = WebBrowserPermissionLevel.Unrestricted;
}
else if (state == PermissionState.None)
{
_webBrowserPermissionLevel = WebBrowserPermissionLevel.None;
}
else
{
throw new ArgumentException( SR.Get(SRID.InvalidPermissionState) );
}
}
///
/// WebBrowserPermission ctor.
///
public WebBrowserPermission(WebBrowserPermissionLevel webBrowserPermissionLevel)
{
WebBrowserPermission.VerifyWebBrowserPermissionLevel(webBrowserPermissionLevel);
this._webBrowserPermissionLevel = webBrowserPermissionLevel;
}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
//
// IUnrestrictedPermission implementation
//
///
/// Is this an unrestricted permisison ?
///
public bool IsUnrestricted()
{
return _webBrowserPermissionLevel == WebBrowserPermissionLevel.Unrestricted ;
}
//
// CodeAccessPermission implementation
//
///
/// Is this a subsetOf the target ?
///
public override bool IsSubsetOf(IPermission target)
{
if (target == null)
{
return _webBrowserPermissionLevel == WebBrowserPermissionLevel.None;
}
WebBrowserPermission operand = target as WebBrowserPermission ;
if ( operand != null )
{
return this._webBrowserPermissionLevel <= operand._webBrowserPermissionLevel;
}
else
{
throw new ArgumentException(SR.Get(SRID.TargetNotWebBrowserPermissionLevel));
}
}
///
/// Return the intersection with the target
///
public override IPermission Intersect(IPermission target)
{
if (target == null)
{
return null;
}
WebBrowserPermission operand = target as WebBrowserPermission ;
if ( operand != null )
{
WebBrowserPermissionLevel intersectLevel = _webBrowserPermissionLevel < operand._webBrowserPermissionLevel
? _webBrowserPermissionLevel : operand._webBrowserPermissionLevel;
if (intersectLevel == WebBrowserPermissionLevel.None)
{
return null;
}
else
{
return new WebBrowserPermission(intersectLevel);
}
}
else
{
throw new ArgumentException(SR.Get(SRID.TargetNotWebBrowserPermissionLevel));
}
}
///
/// Return the Union with the target
///
public override IPermission Union(IPermission target)
{
if (target == null)
{
return this.Copy();
}
WebBrowserPermission operand = target as WebBrowserPermission ;
if ( operand != null )
{
WebBrowserPermissionLevel unionLevel = _webBrowserPermissionLevel > operand._webBrowserPermissionLevel ?
_webBrowserPermissionLevel : operand._webBrowserPermissionLevel;
if (unionLevel == WebBrowserPermissionLevel.None)
{
return null;
}
else
{
return new WebBrowserPermission(unionLevel);
}
}
else
{
throw new ArgumentException(SR.Get(SRID.TargetNotWebBrowserPermissionLevel));
}
}
///
/// Copy this permission.
///
public override IPermission Copy()
{
return new WebBrowserPermission(this._webBrowserPermissionLevel);
}
///
/// Return an XML instantiation of this permisison.
///
public override SecurityElement ToXml()
{
SecurityElement securityElement = new SecurityElement("IPermission");
securityElement.AddAttribute("class", this.GetType().AssemblyQualifiedName);
securityElement.AddAttribute("version", "1");
if (IsUnrestricted())
{
securityElement.AddAttribute("Unrestricted", Boolean.TrueString);
}
else
{
securityElement.AddAttribute("Level", _webBrowserPermissionLevel.ToString());
}
return securityElement;
}
///
/// Create a permission from XML
///
public override void FromXml(SecurityElement securityElement)
{
if (securityElement == null)
{
throw new ArgumentNullException("securityElement");
}
String className = securityElement.Attribute("class");
if (className == null || className.IndexOf(this.GetType().FullName, StringComparison.Ordinal) == -1)
{
throw new ArgumentNullException("securityElement");
}
String unrestricted = securityElement.Attribute("Unrestricted");
if (unrestricted != null && Boolean.Parse(unrestricted))
{
_webBrowserPermissionLevel = WebBrowserPermissionLevel.Unrestricted;
return;
}
this._webBrowserPermissionLevel = WebBrowserPermissionLevel.None;
String level = securityElement.Attribute("Level");
if (level != null)
{
_webBrowserPermissionLevel = (WebBrowserPermissionLevel)Enum.Parse(typeof(WebBrowserPermissionLevel), level);
}
else
{
throw new ArgumentException(SR.Get(SRID.BadXml,"level")); // bad XML
}
}
#endregion Public Methods
//------------------------------------------------------
//
// Public Properties
//
//------------------------------------------------------
#region Public Properties
///
/// Current permission level.
///
public WebBrowserPermissionLevel Level
{
get
{
return _webBrowserPermissionLevel;
}
set
{
WebBrowserPermission.VerifyWebBrowserPermissionLevel(value);
_webBrowserPermissionLevel = value;
}
}
#endregion Public Properties
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
internal static void VerifyWebBrowserPermissionLevel(WebBrowserPermissionLevel level)
{
if (level < WebBrowserPermissionLevel.None || level > WebBrowserPermissionLevel.Unrestricted )
{
throw new ArgumentException(SR.Get(SRID.InvalidPermissionLevel));
}
}
#endregion Private Methods
//
// Private fields:
//
private WebBrowserPermissionLevel _webBrowserPermissionLevel;
}
///
/// Imperative attribute to create a WebBrowserPermission.
///
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Assembly, AllowMultiple = true, Inherited = false )]
sealed public class WebBrowserPermissionAttribute : CodeAccessSecurityAttribute
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Imperative attribute to create a WebBrowserPermission.
///
public WebBrowserPermissionAttribute(SecurityAction action) : base(action)
{
}
#endregion Constructors
//-----------------------------------------------------
//
// Public Methods
//
//------------------------------------------------------
#region Public Methods
///
/// Create a WebBrowserPermisison.
///
public override IPermission CreatePermission()
{
if (Unrestricted)
{
return new WebBrowserPermission(PermissionState.Unrestricted);
}
else
{
return new WebBrowserPermission(_webBrowserPermissionLevel);
}
}
#endregion Public Methods
//-----------------------------------------------------
//
// Public Properties
//
//------------------------------------------------------
#region Public Properties
///
/// Current permission level.
///
public WebBrowserPermissionLevel Level
{
get
{
return _webBrowserPermissionLevel;
}
set
{
WebBrowserPermission.VerifyWebBrowserPermissionLevel(value);
_webBrowserPermissionLevel = value;
}
}
#endregion Public Properties
//
// Private fields:
//
private WebBrowserPermissionLevel _webBrowserPermissionLevel;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RequestCache.cs
- Transform3D.cs
- QuestionEventArgs.cs
- AdornedElementPlaceholder.cs
- StateDesigner.Helpers.cs
- RegexMatchCollection.cs
- AttributeTableBuilder.cs
- Vector3DAnimationBase.cs
- ClientSettingsSection.cs
- TextElementAutomationPeer.cs
- SafeLibraryHandle.cs
- hwndwrapper.cs
- TemplatedMailWebEventProvider.cs
- CodeThrowExceptionStatement.cs
- TransformConverter.cs
- CreateRefExpr.cs
- SettingsProperty.cs
- SamlSubjectStatement.cs
- ClassGenerator.cs
- TextRangeAdaptor.cs
- ContextStack.cs
- Rect3DValueSerializer.cs
- ObjectDataSourceEventArgs.cs
- SharedPerformanceCounter.cs
- ColorDialog.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- IResourceProvider.cs
- HostedElements.cs
- WindowsToolbar.cs
- odbcmetadatacollectionnames.cs
- Simplifier.cs
- RequestResponse.cs
- PeerPresenceInfo.cs
- SrgsDocument.cs
- cookiecontainer.cs
- EntityModelBuildProvider.cs
- ASCIIEncoding.cs
- StringDictionaryEditor.cs
- SynchronizationValidator.cs
- MissingManifestResourceException.cs
- BasicBrowserDialog.designer.cs
- WebBodyFormatMessageProperty.cs
- ActivityTypeDesigner.xaml.cs
- MimeXmlImporter.cs
- CodeChecksumPragma.cs
- JoinQueryOperator.cs
- RegexCompilationInfo.cs
- DelegatingTypeDescriptionProvider.cs
- Command.cs
- X509CertificateInitiatorServiceCredential.cs
- DifferencingCollection.cs
- DynamicPropertyReader.cs
- DataColumn.cs
- ViewStateException.cs
- ContentPlaceHolder.cs
- HMACSHA1.cs
- ToolStripHighContrastRenderer.cs
- RSATokenProvider.cs
- EtwProvider.cs
- ChangeDirector.cs
- WmlMobileTextWriter.cs
- Inflater.cs
- NoneExcludedImageIndexConverter.cs
- DataServiceExpressionVisitor.cs
- XmlNavigatorFilter.cs
- CallbackValidatorAttribute.cs
- BaseTemplateBuildProvider.cs
- HttpDebugHandler.cs
- CompModSwitches.cs
- arabicshape.cs
- JulianCalendar.cs
- Substitution.cs
- XPathAncestorQuery.cs
- KeyEventArgs.cs
- cookiecontainer.cs
- CultureInfoConverter.cs
- LinqDataSourceStatusEventArgs.cs
- FontCollection.cs
- DnsPermission.cs
- StreamUpdate.cs
- Subtree.cs
- Directory.cs
- ClientUrlResolverWrapper.cs
- StylusPointProperty.cs
- WeakEventManager.cs
- FtpCachePolicyElement.cs
- RightNameExpirationInfoPair.cs
- DisableDpiAwarenessAttribute.cs
- StorageComplexPropertyMapping.cs
- EventInfo.cs
- UnsafeNativeMethods.cs
- NotSupportedException.cs
- NativeActivityFaultContext.cs
- OpenFileDialog.cs
- safelinkcollection.cs
- ListDataBindEventArgs.cs
- SecurityVersion.cs
- ObjectStateFormatter.cs
- TargetInvocationException.cs
- ValueCollectionParameterReader.cs