Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / 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: marka 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. //---------------------------------------------------------------------------- // //// 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: marka 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
- WhitespaceRuleReader.cs
- BinaryObjectReader.cs
- ObjectViewEntityCollectionData.cs
- ValueUtilsSmi.cs
- IisTraceWebEventProvider.cs
- CompareValidator.cs
- EditingCommands.cs
- SubqueryTrackingVisitor.cs
- TypeConverter.cs
- UnsafePeerToPeerMethods.cs
- ConfigurationLocationCollection.cs
- BitmapEffectGeneralTransform.cs
- SelectionWordBreaker.cs
- DesignerProperties.cs
- HttpHandlersSection.cs
- LogLogRecord.cs
- ErrorInfoXmlDocument.cs
- FreezableOperations.cs
- ConstructorBuilder.cs
- MemoryMappedViewStream.cs
- ControlValuePropertyAttribute.cs
- XamlSerializerUtil.cs
- AssociatedControlConverter.cs
- XmlSchemaSimpleTypeList.cs
- FormViewInsertEventArgs.cs
- AutoGeneratedField.cs
- Ops.cs
- indexingfiltermarshaler.cs
- EntityViewContainer.cs
- ArraySegment.cs
- PageFunction.cs
- AnnotationResourceCollection.cs
- TimeSpanConverter.cs
- PopupRoot.cs
- WebBrowserUriTypeConverter.cs
- ParenthesizePropertyNameAttribute.cs
- SmtpDigestAuthenticationModule.cs
- XmlElementAttributes.cs
- CollectionDataContractAttribute.cs
- PlatformNotSupportedException.cs
- NetMsmqBindingCollectionElement.cs
- x509utils.cs
- SqlNamer.cs
- SrgsOneOf.cs
- CollectionExtensions.cs
- MachinePropertyVariants.cs
- EdmItemCollection.cs
- HttpModuleActionCollection.cs
- KnownBoxes.cs
- RadioButton.cs
- ICspAsymmetricAlgorithm.cs
- NCryptSafeHandles.cs
- IteratorFilter.cs
- WebHttpSecurityElement.cs
- TrackingProfileDeserializationException.cs
- SelectionProcessor.cs
- CatalogZoneAutoFormat.cs
- DelayedRegex.cs
- TagPrefixAttribute.cs
- SqlDataAdapter.cs
- Script.cs
- nulltextnavigator.cs
- TreeNode.cs
- ScriptReferenceEventArgs.cs
- HttpListener.cs
- ComponentResourceManager.cs
- SQLStringStorage.cs
- ToolStripSystemRenderer.cs
- CacheAxisQuery.cs
- SystemDropShadowChrome.cs
- EnumValidator.cs
- WebBrowserPermission.cs
- MembershipAdapter.cs
- DynamicVirtualDiscoSearcher.cs
- PrivilegeNotHeldException.cs
- ListViewTableCell.cs
- SqlCacheDependencySection.cs
- Span.cs
- ValidatingReaderNodeData.cs
- Relationship.cs
- CodeDOMUtility.cs
- HuffCodec.cs
- PeerNodeTraceRecord.cs
- GridViewUpdateEventArgs.cs
- HeaderElement.cs
- ActivationServices.cs
- CodeDOMProvider.cs
- ImmutableObjectAttribute.cs
- ConstraintStruct.cs
- ListViewContainer.cs
- ResourcesBuildProvider.cs
- WebException.cs
- ConfigXmlAttribute.cs
- BaseAsyncResult.cs
- BypassElementCollection.cs
- FreezableCollection.cs
- SchemaReference.cs
- SourceElementsCollection.cs
- ProjectionCamera.cs
- PropertyTabChangedEvent.cs