Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / Security / Permissions / UIPermission.cs / 1 / UIPermission.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// UIPermission.cs
//
namespace System.Security.Permissions
{
using System;
using System.Security;
using System.Security.Util;
using System.IO;
using System.Runtime.Serialization;
using System.Reflection;
using System.Collections;
using System.Globalization;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum UIPermissionWindow
{
// No window use allowed at all.
NoWindows = 0x0,
// Only allow safe subwindow use (for embedded components).
SafeSubWindows = 0x01,
// Safe top-level window use only (see specification for details).
SafeTopLevelWindows = 0x02,
// All windows and all event may be used.
AllWindows = 0x03,
}
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum UIPermissionClipboard
{
// No clipboard access is allowed.
NoClipboard = 0x0,
// Paste from the same app domain only.
OwnClipboard = 0x1,
// Any clipboard access is allowed.
AllClipboard = 0x2,
}
[System.Runtime.InteropServices.ComVisible(true)]
[Serializable()] sealed public class UIPermission
: CodeAccessPermission, IUnrestrictedPermission, IBuiltInPermission
{
//------------------------------------------------------
//
// PRIVATE STATE DATA
//
//-----------------------------------------------------
private UIPermissionWindow m_windowFlag;
private UIPermissionClipboard m_clipboardFlag;
//-----------------------------------------------------
//
// PUBLIC CONSTRUCTORS
//
//-----------------------------------------------------
public UIPermission(PermissionState state)
{
if (state == PermissionState.Unrestricted)
{
SetUnrestricted( true );
}
else if (state == PermissionState.None)
{
SetUnrestricted( false );
Reset();
}
else
{
throw new ArgumentException(Environment.GetResourceString("Argument_InvalidPermissionState"));
}
}
public UIPermission(UIPermissionWindow windowFlag, UIPermissionClipboard clipboardFlag )
{
VerifyWindowFlag( windowFlag );
VerifyClipboardFlag( clipboardFlag );
m_windowFlag = windowFlag;
m_clipboardFlag = clipboardFlag;
}
public UIPermission(UIPermissionWindow windowFlag )
{
VerifyWindowFlag( windowFlag );
m_windowFlag = windowFlag;
}
public UIPermission(UIPermissionClipboard clipboardFlag )
{
VerifyClipboardFlag( clipboardFlag );
m_clipboardFlag = clipboardFlag;
}
//------------------------------------------------------
//
// PUBLIC ACCESSOR METHODS
//
//-----------------------------------------------------
public UIPermissionWindow Window
{
set
{
VerifyWindowFlag(value);
m_windowFlag = value;
}
get
{
return m_windowFlag;
}
}
public UIPermissionClipboard Clipboard
{
set
{
VerifyClipboardFlag(value);
m_clipboardFlag = value;
}
get
{
return m_clipboardFlag;
}
}
//------------------------------------------------------
//
// PRIVATE AND PROTECTED HELPERS FOR ACCESSORS AND CONSTRUCTORS
//
//------------------------------------------------------
private static void VerifyWindowFlag(UIPermissionWindow flag)
{
if (flag < UIPermissionWindow.NoWindows || flag > UIPermissionWindow.AllWindows)
{
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Arg_EnumIllegalVal"), (int)flag));
}
}
private static void VerifyClipboardFlag(UIPermissionClipboard flag)
{
if (flag < UIPermissionClipboard.NoClipboard || flag > UIPermissionClipboard.AllClipboard)
{
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Arg_EnumIllegalVal"), (int)flag));
}
}
private void Reset()
{
m_windowFlag = UIPermissionWindow.NoWindows;
m_clipboardFlag = UIPermissionClipboard.NoClipboard;
}
private void SetUnrestricted( bool unrestricted )
{
if (unrestricted)
{
m_windowFlag = UIPermissionWindow.AllWindows;
m_clipboardFlag = UIPermissionClipboard.AllClipboard;
}
}
#if false
//-----------------------------------------------------
//
// OBJECT METHOD OVERRIDES
//
//------------------------------------------------------
public String ToString()
{
#if _DEBUG
StringBuilder sb = new StringBuilder();
sb.Append("UIPermission(");
if (IsUnrestricted())
{
sb.Append("Unrestricted");
}
else
{
sb.Append(m_stateNameTableWindow[m_windowFlag]);
sb.Append(", ");
sb.Append(m_stateNameTableClipboard[m_clipboardFlag]);
}
sb.Append(")");
return sb.ToString();
#else
return super.ToString();
#endif
}
#endif
//-----------------------------------------------------
//
// CODEACCESSPERMISSION IMPLEMENTATION
//
//-----------------------------------------------------
public bool IsUnrestricted()
{
return m_windowFlag == UIPermissionWindow.AllWindows && m_clipboardFlag == UIPermissionClipboard.AllClipboard;
}
//-----------------------------------------------------
//
// IPERMISSION IMPLEMENTATION
//
//------------------------------------------------------
public override bool IsSubsetOf(IPermission target)
{
if (target == null)
{
// Only safe subset if this is empty
return m_windowFlag == UIPermissionWindow.NoWindows && m_clipboardFlag == UIPermissionClipboard.NoClipboard;
}
try
{
UIPermission operand = (UIPermission)target;
if (operand.IsUnrestricted())
return true;
else if (this.IsUnrestricted())
return false;
else
return this.m_windowFlag <= operand.m_windowFlag && this.m_clipboardFlag <= operand.m_clipboardFlag;
}
catch (InvalidCastException)
{
throw new
ArgumentException(
String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)
);
}
}
public override IPermission Intersect(IPermission target)
{
if (target == null)
{
return null;
}
else if (!VerifyType(target))
{
throw new
ArgumentException(
String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)
);
}
UIPermission operand = (UIPermission)target;
UIPermissionWindow isectWindowFlags = m_windowFlag < operand.m_windowFlag ? m_windowFlag : operand.m_windowFlag;
UIPermissionClipboard isectClipboardFlags = m_clipboardFlag < operand.m_clipboardFlag ? m_clipboardFlag : operand.m_clipboardFlag;
if (isectWindowFlags == UIPermissionWindow.NoWindows && isectClipboardFlags == UIPermissionClipboard.NoClipboard)
return null;
else
return new UIPermission(isectWindowFlags, isectClipboardFlags);
}
public override IPermission Union(IPermission target)
{
if (target == null)
{
return this.Copy();
}
else if (!VerifyType(target))
{
throw new
ArgumentException(
String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)
);
}
UIPermission operand = (UIPermission)target;
UIPermissionWindow isectWindowFlags = m_windowFlag > operand.m_windowFlag ? m_windowFlag : operand.m_windowFlag;
UIPermissionClipboard isectClipboardFlags = m_clipboardFlag > operand.m_clipboardFlag ? m_clipboardFlag : operand.m_clipboardFlag;
if (isectWindowFlags == UIPermissionWindow.NoWindows && isectClipboardFlags == UIPermissionClipboard.NoClipboard)
return null;
else
return new UIPermission(isectWindowFlags, isectClipboardFlags);
}
public override IPermission Copy()
{
return new UIPermission(this.m_windowFlag, this.m_clipboardFlag);
}
public override SecurityElement ToXml()
{
SecurityElement esd = CodeAccessPermission.CreatePermissionElement( this, "System.Security.Permissions.UIPermission" );
if (!IsUnrestricted())
{
if (m_windowFlag != UIPermissionWindow.NoWindows)
{
esd.AddAttribute( "Window", Enum.GetName( typeof( UIPermissionWindow ), m_windowFlag ) );
}
if (m_clipboardFlag != UIPermissionClipboard.NoClipboard)
{
esd.AddAttribute( "Clipboard", Enum.GetName( typeof( UIPermissionClipboard ), m_clipboardFlag ) );
}
}
else
{
esd.AddAttribute( "Unrestricted", "true" );
}
return esd;
}
public override void FromXml(SecurityElement esd)
{
CodeAccessPermission.ValidateElement( esd, this );
if (XMLUtil.IsUnrestricted( esd ))
{
SetUnrestricted( true );
return;
}
m_windowFlag = UIPermissionWindow.NoWindows;
m_clipboardFlag = UIPermissionClipboard.NoClipboard;
String window = esd.Attribute( "Window" );
if (window != null)
m_windowFlag = (UIPermissionWindow)Enum.Parse( typeof( UIPermissionWindow ), window );
String clipboard = esd.Attribute( "Clipboard" );
if (clipboard != null)
m_clipboardFlag = (UIPermissionClipboard)Enum.Parse( typeof( UIPermissionClipboard ), clipboard );
}
///
int IBuiltInPermission.GetTokenIndex()
{
return UIPermission.GetTokenIndex();
}
internal static int GetTokenIndex()
{
return BuiltInPermissionIndex.UIPermissionIndex;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// UIPermission.cs
//
namespace System.Security.Permissions
{
using System;
using System.Security;
using System.Security.Util;
using System.IO;
using System.Runtime.Serialization;
using System.Reflection;
using System.Collections;
using System.Globalization;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum UIPermissionWindow
{
// No window use allowed at all.
NoWindows = 0x0,
// Only allow safe subwindow use (for embedded components).
SafeSubWindows = 0x01,
// Safe top-level window use only (see specification for details).
SafeTopLevelWindows = 0x02,
// All windows and all event may be used.
AllWindows = 0x03,
}
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum UIPermissionClipboard
{
// No clipboard access is allowed.
NoClipboard = 0x0,
// Paste from the same app domain only.
OwnClipboard = 0x1,
// Any clipboard access is allowed.
AllClipboard = 0x2,
}
[System.Runtime.InteropServices.ComVisible(true)]
[Serializable()] sealed public class UIPermission
: CodeAccessPermission, IUnrestrictedPermission, IBuiltInPermission
{
//------------------------------------------------------
//
// PRIVATE STATE DATA
//
//-----------------------------------------------------
private UIPermissionWindow m_windowFlag;
private UIPermissionClipboard m_clipboardFlag;
//-----------------------------------------------------
//
// PUBLIC CONSTRUCTORS
//
//-----------------------------------------------------
public UIPermission(PermissionState state)
{
if (state == PermissionState.Unrestricted)
{
SetUnrestricted( true );
}
else if (state == PermissionState.None)
{
SetUnrestricted( false );
Reset();
}
else
{
throw new ArgumentException(Environment.GetResourceString("Argument_InvalidPermissionState"));
}
}
public UIPermission(UIPermissionWindow windowFlag, UIPermissionClipboard clipboardFlag )
{
VerifyWindowFlag( windowFlag );
VerifyClipboardFlag( clipboardFlag );
m_windowFlag = windowFlag;
m_clipboardFlag = clipboardFlag;
}
public UIPermission(UIPermissionWindow windowFlag )
{
VerifyWindowFlag( windowFlag );
m_windowFlag = windowFlag;
}
public UIPermission(UIPermissionClipboard clipboardFlag )
{
VerifyClipboardFlag( clipboardFlag );
m_clipboardFlag = clipboardFlag;
}
//------------------------------------------------------
//
// PUBLIC ACCESSOR METHODS
//
//-----------------------------------------------------
public UIPermissionWindow Window
{
set
{
VerifyWindowFlag(value);
m_windowFlag = value;
}
get
{
return m_windowFlag;
}
}
public UIPermissionClipboard Clipboard
{
set
{
VerifyClipboardFlag(value);
m_clipboardFlag = value;
}
get
{
return m_clipboardFlag;
}
}
//------------------------------------------------------
//
// PRIVATE AND PROTECTED HELPERS FOR ACCESSORS AND CONSTRUCTORS
//
//------------------------------------------------------
private static void VerifyWindowFlag(UIPermissionWindow flag)
{
if (flag < UIPermissionWindow.NoWindows || flag > UIPermissionWindow.AllWindows)
{
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Arg_EnumIllegalVal"), (int)flag));
}
}
private static void VerifyClipboardFlag(UIPermissionClipboard flag)
{
if (flag < UIPermissionClipboard.NoClipboard || flag > UIPermissionClipboard.AllClipboard)
{
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Arg_EnumIllegalVal"), (int)flag));
}
}
private void Reset()
{
m_windowFlag = UIPermissionWindow.NoWindows;
m_clipboardFlag = UIPermissionClipboard.NoClipboard;
}
private void SetUnrestricted( bool unrestricted )
{
if (unrestricted)
{
m_windowFlag = UIPermissionWindow.AllWindows;
m_clipboardFlag = UIPermissionClipboard.AllClipboard;
}
}
#if false
//-----------------------------------------------------
//
// OBJECT METHOD OVERRIDES
//
//------------------------------------------------------
public String ToString()
{
#if _DEBUG
StringBuilder sb = new StringBuilder();
sb.Append("UIPermission(");
if (IsUnrestricted())
{
sb.Append("Unrestricted");
}
else
{
sb.Append(m_stateNameTableWindow[m_windowFlag]);
sb.Append(", ");
sb.Append(m_stateNameTableClipboard[m_clipboardFlag]);
}
sb.Append(")");
return sb.ToString();
#else
return super.ToString();
#endif
}
#endif
//-----------------------------------------------------
//
// CODEACCESSPERMISSION IMPLEMENTATION
//
//-----------------------------------------------------
public bool IsUnrestricted()
{
return m_windowFlag == UIPermissionWindow.AllWindows && m_clipboardFlag == UIPermissionClipboard.AllClipboard;
}
//-----------------------------------------------------
//
// IPERMISSION IMPLEMENTATION
//
//------------------------------------------------------
public override bool IsSubsetOf(IPermission target)
{
if (target == null)
{
// Only safe subset if this is empty
return m_windowFlag == UIPermissionWindow.NoWindows && m_clipboardFlag == UIPermissionClipboard.NoClipboard;
}
try
{
UIPermission operand = (UIPermission)target;
if (operand.IsUnrestricted())
return true;
else if (this.IsUnrestricted())
return false;
else
return this.m_windowFlag <= operand.m_windowFlag && this.m_clipboardFlag <= operand.m_clipboardFlag;
}
catch (InvalidCastException)
{
throw new
ArgumentException(
String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)
);
}
}
public override IPermission Intersect(IPermission target)
{
if (target == null)
{
return null;
}
else if (!VerifyType(target))
{
throw new
ArgumentException(
String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)
);
}
UIPermission operand = (UIPermission)target;
UIPermissionWindow isectWindowFlags = m_windowFlag < operand.m_windowFlag ? m_windowFlag : operand.m_windowFlag;
UIPermissionClipboard isectClipboardFlags = m_clipboardFlag < operand.m_clipboardFlag ? m_clipboardFlag : operand.m_clipboardFlag;
if (isectWindowFlags == UIPermissionWindow.NoWindows && isectClipboardFlags == UIPermissionClipboard.NoClipboard)
return null;
else
return new UIPermission(isectWindowFlags, isectClipboardFlags);
}
public override IPermission Union(IPermission target)
{
if (target == null)
{
return this.Copy();
}
else if (!VerifyType(target))
{
throw new
ArgumentException(
String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName)
);
}
UIPermission operand = (UIPermission)target;
UIPermissionWindow isectWindowFlags = m_windowFlag > operand.m_windowFlag ? m_windowFlag : operand.m_windowFlag;
UIPermissionClipboard isectClipboardFlags = m_clipboardFlag > operand.m_clipboardFlag ? m_clipboardFlag : operand.m_clipboardFlag;
if (isectWindowFlags == UIPermissionWindow.NoWindows && isectClipboardFlags == UIPermissionClipboard.NoClipboard)
return null;
else
return new UIPermission(isectWindowFlags, isectClipboardFlags);
}
public override IPermission Copy()
{
return new UIPermission(this.m_windowFlag, this.m_clipboardFlag);
}
public override SecurityElement ToXml()
{
SecurityElement esd = CodeAccessPermission.CreatePermissionElement( this, "System.Security.Permissions.UIPermission" );
if (!IsUnrestricted())
{
if (m_windowFlag != UIPermissionWindow.NoWindows)
{
esd.AddAttribute( "Window", Enum.GetName( typeof( UIPermissionWindow ), m_windowFlag ) );
}
if (m_clipboardFlag != UIPermissionClipboard.NoClipboard)
{
esd.AddAttribute( "Clipboard", Enum.GetName( typeof( UIPermissionClipboard ), m_clipboardFlag ) );
}
}
else
{
esd.AddAttribute( "Unrestricted", "true" );
}
return esd;
}
public override void FromXml(SecurityElement esd)
{
CodeAccessPermission.ValidateElement( esd, this );
if (XMLUtil.IsUnrestricted( esd ))
{
SetUnrestricted( true );
return;
}
m_windowFlag = UIPermissionWindow.NoWindows;
m_clipboardFlag = UIPermissionClipboard.NoClipboard;
String window = esd.Attribute( "Window" );
if (window != null)
m_windowFlag = (UIPermissionWindow)Enum.Parse( typeof( UIPermissionWindow ), window );
String clipboard = esd.Attribute( "Clipboard" );
if (clipboard != null)
m_clipboardFlag = (UIPermissionClipboard)Enum.Parse( typeof( UIPermissionClipboard ), clipboard );
}
///
int IBuiltInPermission.GetTokenIndex()
{
return UIPermission.GetTokenIndex();
}
internal static int GetTokenIndex()
{
return BuiltInPermissionIndex.UIPermissionIndex;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WindowsAuthenticationModule.cs
- RunClient.cs
- IntegrationExceptionEventArgs.cs
- FixedSOMSemanticBox.cs
- Region.cs
- Decimal.cs
- ClientTarget.cs
- WebConfigurationManager.cs
- cryptoapiTransform.cs
- DesignerGenericWebPart.cs
- Control.cs
- BitVector32.cs
- GlyphElement.cs
- MultiPartWriter.cs
- XmlNodeChangedEventArgs.cs
- WorkBatch.cs
- SQLGuidStorage.cs
- DynamicActionMessageFilter.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- PageBuildProvider.cs
- Keyboard.cs
- FormsAuthenticationEventArgs.cs
- ConfigurationLocation.cs
- Cursor.cs
- FamilyCollection.cs
- IdentitySection.cs
- GcHandle.cs
- MatchAllMessageFilter.cs
- SqlNamer.cs
- EnumMember.cs
- InputScopeAttribute.cs
- ConditionalDesigner.cs
- BufferedWebEventProvider.cs
- userdatakeys.cs
- ResourceDescriptionAttribute.cs
- EmptyElement.cs
- WebBrowserDocumentCompletedEventHandler.cs
- RijndaelCryptoServiceProvider.cs
- TemplatedAdorner.cs
- XmlTypeMapping.cs
- WindowsTreeView.cs
- XmlCharacterData.cs
- XmlHierarchyData.cs
- FormattedTextSymbols.cs
- TypeValidationEventArgs.cs
- PixelFormatConverter.cs
- ConfigXmlElement.cs
- figurelengthconverter.cs
- WindowInteractionStateTracker.cs
- SpoolingTask.cs
- XmlSchemaAttributeGroupRef.cs
- WrapperSecurityCommunicationObject.cs
- BulletedListEventArgs.cs
- ToolStripContentPanelRenderEventArgs.cs
- EmbeddedMailObjectCollectionEditor.cs
- CaseStatementSlot.cs
- TrailingSpaceComparer.cs
- DrawingServices.cs
- ApplicationFileParser.cs
- EnumerableRowCollectionExtensions.cs
- LabelAutomationPeer.cs
- SevenBitStream.cs
- DataContractJsonSerializer.cs
- SqlDataSourceQuery.cs
- DBNull.cs
- SoapObjectInfo.cs
- DragAssistanceManager.cs
- XmlSchemaRedefine.cs
- MailDefinition.cs
- SafeEventHandle.cs
- StreamUpdate.cs
- TextDpi.cs
- QilIterator.cs
- GridViewRowEventArgs.cs
- StoreItemCollection.cs
- Typography.cs
- LZCodec.cs
- ThicknessKeyFrameCollection.cs
- ExtendedPropertyDescriptor.cs
- BasicBrowserDialog.cs
- StickyNoteAnnotations.cs
- ItemsControl.cs
- StrokeDescriptor.cs
- IInstanceContextProvider.cs
- StylusTip.cs
- ZipIOExtraFieldZip64Element.cs
- CompressStream.cs
- Mapping.cs
- DecimalAverageAggregationOperator.cs
- SQLDoubleStorage.cs
- GenericTextProperties.cs
- StaticDataManager.cs
- UnsafeNativeMethods.cs
- AttributeCollection.cs
- DocumentPageViewAutomationPeer.cs
- ReachPageContentCollectionSerializer.cs
- SuppressMessageAttribute.cs
- DocumentSequenceHighlightLayer.cs
- LoginViewDesigner.cs
- PageBreakRecord.cs