diff --git a/src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/Permissions/XamlAccessLevel.cs b/src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/Permissions/XamlAccessLevel.cs
index 32f5f5d5943..f7320d39129 100644
--- a/src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/Permissions/XamlAccessLevel.cs
+++ b/src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/Permissions/XamlAccessLevel.cs
@@ -7,11 +7,6 @@
namespace System.Xaml.Permissions
{
- ///
- /// This class is immutable. Various consumers copy references into SecurityCritical fields,
- /// and their security depends on the immutability of the members defined here.
- /// Derived classes may add mutable members, those have no impact on the consumers of this class.
- ///
[Serializable]
public class XamlAccessLevel
{
@@ -23,59 +18,28 @@ private XamlAccessLevel(string assemblyName, string typeName)
public static XamlAccessLevel AssemblyAccessTo(Assembly assembly)
{
- if (assembly == null)
- {
- throw new ArgumentNullException(nameof(assembly));
- }
return new XamlAccessLevel(assembly.FullName, null);
}
public static XamlAccessLevel AssemblyAccessTo(AssemblyName assemblyName)
{
- if (assemblyName == null)
- {
- throw new ArgumentNullException(nameof(assemblyName));
- }
- ValidateAssemblyName(assemblyName, "assemblyName");
return new XamlAccessLevel(assemblyName.FullName, null);
}
public static XamlAccessLevel PrivateAccessTo(Type type)
{
- if (type == null)
- {
- throw new ArgumentNullException(nameof(type));
- }
return new XamlAccessLevel(type.Assembly.FullName, type.FullName);
}
public static XamlAccessLevel PrivateAccessTo(string assemblyQualifiedTypeName)
{
- if (assemblyQualifiedTypeName == null)
- {
- throw new ArgumentNullException(nameof(assemblyQualifiedTypeName));
- }
int nameBoundary = assemblyQualifiedTypeName.IndexOf(',');
- if (nameBoundary < 0)
- {
- throw new ArgumentException(SR.Get(SRID.ExpectedQualifiedTypeName, assemblyQualifiedTypeName), nameof(assemblyQualifiedTypeName));
- }
-
string typeName = assemblyQualifiedTypeName.Substring(0, nameBoundary).Trim();
string assemblyFullName = assemblyQualifiedTypeName.Substring(nameBoundary + 1).Trim();
AssemblyName assemblyName = new AssemblyName(assemblyFullName);
- ValidateAssemblyName(assemblyName, "assemblyQualifiedTypeName");
-
return new XamlAccessLevel(assemblyName.FullName, typeName);
- }
-
- // Read-only: these properties should not be allowed to be modified once this object
- // has been passed to XamlLoadPermission
-
- // Stored as string: we need to store the assembly and type names, rather than Assembly or
- // Type references, because permissions can be serialized, and we don't want to force an
- // assembly load on deserialization in a different AppDomain.
-
+ }
+
public AssemblyName AssemblyAccessToAssemblyName
{
get { return new AssemblyName(AssemblyNameString); }
@@ -84,67 +48,5 @@ public AssemblyName AssemblyAccessToAssemblyName
public string PrivateAccessToTypeName { get; private set; }
internal string AssemblyNameString { get; private set; }
-
- internal XamlAccessLevel AssemblyOnly()
- {
- return new XamlAccessLevel(AssemblyNameString, null);
- }
-
- internal static XamlAccessLevel FromXml(SecurityElement elem)
- {
- if (elem.Tag != XmlConstants.XamlAccessLevel)
- {
- throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedTag, elem.Tag, XmlConstants.XamlAccessLevel), nameof(elem));
- }
-
- string assemblyNameString = elem.Attribute(XmlConstants.AssemblyName);
- if (assemblyNameString == null)
- {
- throw new ArgumentException(SR.Get(SRID.SecurityXmlMissingAttribute, XmlConstants.AssemblyName), nameof(elem));
- }
- AssemblyName assemblyName = new AssemblyName(assemblyNameString);
- ValidateAssemblyName(assemblyName, "elem");
-
- string typeName = elem.Attribute(XmlConstants.TypeName);
- if (typeName != null)
- {
- typeName = typeName.Trim();
- }
-
- return new XamlAccessLevel(assemblyName.FullName, typeName);
- }
-
- internal bool Includes(XamlAccessLevel other)
- {
- return other.AssemblyNameString == AssemblyNameString &&
- (other.PrivateAccessToTypeName == null || other.PrivateAccessToTypeName == PrivateAccessToTypeName);
- }
-
- internal SecurityElement ToXml()
- {
- SecurityElement element = new SecurityElement(XmlConstants.XamlAccessLevel);
- element.AddAttribute(XmlConstants.AssemblyName, AssemblyNameString);
- if (PrivateAccessToTypeName != null)
- {
- element.AddAttribute(XmlConstants.TypeName, PrivateAccessToTypeName);
- }
- return element;
- }
-
- private static void ValidateAssemblyName(AssemblyName assemblyName, string argName)
- {
- if (assemblyName.Name == null || assemblyName.Version == null ||
- assemblyName.CultureInfo == null || assemblyName.GetPublicKeyToken() == null)
- {
- throw new ArgumentException(SR.Get(SRID.ExpectedQualifiedAssemblyName, assemblyName.FullName), argName);
- }
- }
-
- private static class XmlConstants
- {
- public const string XamlAccessLevel = "XamlAccessLevel";
- public const string AssemblyName = "AssemblyName";
- public const string TypeName = "TypeName";
- }
}
}
diff --git a/src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/Permissions/XamlLoadPermission.cs b/src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/Permissions/XamlLoadPermission.cs
index 6c239c6c12a..7b1597ba86e 100644
--- a/src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/Permissions/XamlLoadPermission.cs
+++ b/src/Microsoft.DotNet.Wpf/src/System.Xaml/System/Xaml/Permissions/XamlLoadPermission.cs
@@ -4,7 +4,6 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
-using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
@@ -14,327 +13,21 @@ namespace System.Xaml.Permissions
[Serializable]
public sealed class XamlLoadPermission : CodeAccessPermission, IUnrestrictedPermission
{
- private static IList s_emptyAccessLevel;
- private bool _isUnrestricted;
-
- public XamlLoadPermission(PermissionState state)
- {
- Init(state == PermissionState.Unrestricted, null);
- }
-
- public XamlLoadPermission(XamlAccessLevel allowedAccess)
- {
- if (allowedAccess == null)
- {
- throw new ArgumentNullException(nameof(allowedAccess));
- }
- Init(false, new XamlAccessLevel[] { allowedAccess });
- }
-
- public XamlLoadPermission(IEnumerable allowedAccess)
- {
- if (allowedAccess == null)
- {
- throw new ArgumentNullException(nameof(allowedAccess));
- }
- List accessList = new List(allowedAccess);
- foreach (XamlAccessLevel accessLevel in allowedAccess)
- {
- if (accessLevel == null)
- {
- throw new ArgumentException(SR.Get(SRID.CollectionCannotContainNulls, "allowedAccess"));
- }
- accessList.Add(accessLevel);
- }
- Init(false, accessList);
- }
-
-#if NETCOREAPP3_0
-
+ public XamlLoadPermission(PermissionState state) { }
+ public XamlLoadPermission(XamlAccessLevel allowedAccess) { }
+ public XamlLoadPermission(IEnumerable allowedAccess) { }
[ComVisible(false)]
- public override bool Equals(object obj)
- {
- IPermission perm = obj as IPermission;
- if (obj != null && perm == null)
- {
- return false;
- }
-
- try
- {
- if (!IsSubsetOf(perm))
- {
- return false;
- }
-
- if (perm != null && !perm.IsSubsetOf(this))
- {
- return false;
- }
- }
- catch (ArgumentException)
- {
- // Any argument exception implies inequality
- // Note that we require a try/catch here because we have to deal with
- // custom permissions that may throw exceptions indiscriminately
- return false;
- }
-
- return true;
- }
-
+ public override bool Equals(object obj) { return false; }
[ComVisible(false)]
- public override int GetHashCode()
- {
- // This implementation is only to silence a compiler warning
- return base.GetHashCode();
- }
-
-#endif
-
- // copy ctor. We can reuse the list of the existing instance, because it is a
- // ReadOnlyCollection over a privately created array, hence is never mutated,
- // even if the other instance is mutated via FromXml().
- private XamlLoadPermission(XamlLoadPermission other)
- {
- _isUnrestricted = other._isUnrestricted;
- AllowedAccess = other.AllowedAccess;
- }
-
- private void Init(bool isUnrestricted, IList allowedAccess)
- {
- _isUnrestricted = isUnrestricted;
- if (allowedAccess == null)
- {
- if (s_emptyAccessLevel == null)
- {
- s_emptyAccessLevel = new ReadOnlyCollection(Array.Empty());
- }
- AllowedAccess = s_emptyAccessLevel;
- }
- else
- {
- Debug.Assert(!isUnrestricted);
- AllowedAccess = new ReadOnlyCollection(allowedAccess);
- }
- }
-
- public IList AllowedAccess { get; private set; } // ReadOnlyCollection
-
- public override IPermission Copy()
- {
- return new XamlLoadPermission(this);
- }
-
- public override void FromXml(SecurityElement elem)
- {
- if (elem == null)
- {
- throw new ArgumentNullException(nameof(elem));
- }
- if (elem.Tag != XmlConstants.IPermission)
- {
- throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedTag, elem.Tag, XmlConstants.IPermission), nameof(elem));
- }
-
- string className = elem.Attribute(XmlConstants.Class);
- if (!className.StartsWith(GetType().FullName, false, TypeConverterHelper.InvariantEnglishUS))
- {
- throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedValue, className, XmlConstants.Class, GetType().FullName), nameof(elem));
- }
-
- string version = elem.Attribute(XmlConstants.Version);
- if (version != null && version != XmlConstants.VersionNumber)
- {
- throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedValue, className, XmlConstants.Version, XmlConstants.VersionNumber), nameof(elem));
- }
-
- string unrestricted = elem.Attribute(XmlConstants.Unrestricted);
- if (unrestricted != null && bool.Parse(unrestricted))
- {
- Init(true, null);
- }
- else
- {
- List allowedAccess = null;
- if (elem.Children != null)
- {
- allowedAccess = new List(elem.Children.Count);
- foreach (SecurityElement child in elem.Children)
- {
- allowedAccess.Add(XamlAccessLevel.FromXml(child));
- }
- }
- Init(false, allowedAccess);
- }
- }
-
- public bool Includes(XamlAccessLevel requestedAccess)
- {
- if (requestedAccess == null)
- {
- throw new ArgumentNullException(nameof(requestedAccess));
- }
- if (_isUnrestricted)
- {
- return true;
- }
- foreach (XamlAccessLevel allowedAccess in AllowedAccess)
- {
- if (allowedAccess.Includes(requestedAccess))
- {
- return true;
- }
- }
- return false;
- }
-
- public override IPermission Intersect(IPermission target)
- {
- if (target == null)
- {
- return null;
- }
- XamlLoadPermission other = CastPermission(target, "target");
- if (other.IsUnrestricted())
- {
- return Copy();
- }
- if (IsUnrestricted())
- {
- return other.Copy();
- }
-
- List result = new List();
- // We could optimize this with a hash, but we don't expect people to be creating
- // large unions of access levels.
- foreach (XamlAccessLevel accessLevel in AllowedAccess)
- {
- // First try the full access level
- if (other.Includes(accessLevel))
- {
- result.Add(accessLevel);
- }
- // Then try the assembly subset
- else if (accessLevel.PrivateAccessToTypeName != null)
- {
- XamlAccessLevel assemblyAccess = accessLevel.AssemblyOnly();
- if (other.Includes(assemblyAccess))
- {
- result.Add(assemblyAccess);
- }
- }
- }
- return new XamlLoadPermission(result);
- }
-
- public override bool IsSubsetOf(IPermission target)
- {
- if (target == null)
- {
- bool isEmpty = !IsUnrestricted() && AllowedAccess.Count == 0;
- return isEmpty;
- }
- XamlLoadPermission other = CastPermission(target, "target");
- if (other.IsUnrestricted())
- {
- return true;
- }
- if (IsUnrestricted())
- {
- return false;
- }
-
- foreach (XamlAccessLevel accessLevel in AllowedAccess)
- {
- if (!other.Includes(accessLevel))
- {
- return false;
- }
- }
- return true;
- }
-
- public override SecurityElement ToXml()
- {
- SecurityElement securityElement = new SecurityElement(XmlConstants.IPermission);
- securityElement.AddAttribute(XmlConstants.Class, GetType().AssemblyQualifiedName);
- securityElement.AddAttribute(XmlConstants.Version, XmlConstants.VersionNumber);
-
- if (IsUnrestricted())
- {
- securityElement.AddAttribute(XmlConstants.Unrestricted, Boolean.TrueString);
- }
- else
- {
- foreach (XamlAccessLevel accessLevel in AllowedAccess)
- {
- securityElement.AddChild(accessLevel.ToXml());
- }
- }
-
- return securityElement;
- }
-
- public override IPermission Union(IPermission other)
- {
- if (other == null)
- {
- return Copy();
- }
- XamlLoadPermission xamlOther = CastPermission(other, "other");
- if (IsUnrestricted() || xamlOther.IsUnrestricted())
- {
- return new XamlLoadPermission(PermissionState.Unrestricted);
- }
-
- List mergedAccess = new List(AllowedAccess);
- foreach (XamlAccessLevel accessLevel in xamlOther.AllowedAccess)
- {
- if (!Includes(accessLevel))
- {
- mergedAccess.Add(accessLevel);
- if (accessLevel.PrivateAccessToTypeName != null)
- {
- // If we have an entry for access to just the assembly of this type, it is now redundant
- for (int i = 0; i < mergedAccess.Count; i++)
- {
- if (mergedAccess[i].PrivateAccessToTypeName == null &&
- mergedAccess[i].AssemblyNameString == accessLevel.AssemblyNameString)
- {
- mergedAccess.RemoveAt(i);
- break;
- }
- }
- }
- }
- }
- return new XamlLoadPermission(mergedAccess);
- }
-
- public bool IsUnrestricted()
- {
- return _isUnrestricted;
- }
-
- private static XamlLoadPermission CastPermission(IPermission other, string argName)
- {
- XamlLoadPermission result = other as XamlLoadPermission;
- if (result == null)
- {
- throw new ArgumentException(SR.Get(SRID.ExpectedLoadPermission), argName);
- }
- return result;
- }
-
- private static class XmlConstants
- {
- public const string IPermission = "IPermission";
- public const string Class = "class";
- public const string Version = "version";
- public const string VersionNumber = "1";
- public const string Unrestricted = "Unrestricted";
- }
+ public override int GetHashCode() { return base.GetHashCode(); }
+ public IList AllowedAccess {get; private set;} = new ReadOnlyCollection(Array.Empty());
+ public override IPermission Copy() { return new XamlLoadPermission(PermissionState.Unrestricted); }
+ public override void FromXml(SecurityElement elem) { }
+ public bool Includes(XamlAccessLevel requestedAccess) { return true; }
+ public override IPermission Intersect(IPermission target) { return new XamlLoadPermission(PermissionState.Unrestricted); }
+ public override bool IsSubsetOf(IPermission target) { return true; }
+ public override SecurityElement ToXml() { return default(SecurityElement); }
+ public override IPermission Union(IPermission other) { return new XamlLoadPermission(PermissionState.Unrestricted); }
+ public bool IsUnrestricted() { return true; }
}
-
}
diff --git a/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Security/Permissions/MediaPermission.cs b/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Security/Permissions/MediaPermission.cs
index 7c49e1d3538..cdb17e33fd4 100644
--- a/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Security/Permissions/MediaPermission.cs
+++ b/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Security/Permissions/MediaPermission.cs
@@ -1,687 +1,59 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
-
-//
-//
-// Description:
-// The MediaPermission controls the ability to create rich Media in Avalon.
-//
-//
-//
-//
-
-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;
-using MS.Internal.WindowsBase;
-
-namespace System.Security.Permissions
+namespace System.Security.Permissions
{
- ///
- /// Enum of audio permission levels.
- ///
public enum MediaPermissionAudio
{
- ///
- /// NoAudio - no sound allowed to play.
- ///
NoAudio,
-
- ///
- /// SiteOfOriginAudio - only allow audio from site of origin.
- ///
- SiteOfOriginAudio,
-
- ///
- /// SafeAudio - allowed to play audio with some restrictions.
- ///
+ SiteOfOriginAudio,
SafeAudio,
-
- ///
- /// Allowed to play audio with no restrictions
- ///
AllAudio
-}
-
- ///
- /// Enum of video permission levels.
- ///
+ }
public enum MediaPermissionVideo
{
- ///
- /// NoVideo - no video allowed to play.
- ///
NoVideo,
-
- ///
- /// SiteOfOriginVideo - only allow video from site of origin.
- ///
- SiteOfOriginVideo,
-
- ///
- /// SafeVideo - allowed to play video with some restrictions.
- ///
+ SiteOfOriginVideo,
SafeVideo,
-
- ///
- /// allowed to play video with no restrictions
- ///
AllVideo,
-}
-
- ///
- /// Enum of image permission levels.
- ///
+ }
public enum MediaPermissionImage
{
- ///
- /// NoImage - no images allowed to display
- ///
NoImage,
-
- ///
- /// SiteOfOriginImage -only allow image from site of origin.
- ///
- SiteOfOriginImage,
-
- ///
- /// SafeImage - allowed to display images with some restrictions.
- /// Only certified codecs allowed.
- ///
+ SiteOfOriginImage,
SafeImage,
-
- ///
- /// Allowed to display images with no restrictions.
- ///
AllImage,
-}
-
- ///
- /// The MediaPermission controls the ability for richMedia to work in partial trust.
- ///
- /// There are 3 enum values that control the type of media that can work.
- ///
- /// MediaPermissionAudio - controls the level of audio support.
- /// MediaPermissionVideo - controls the level of video supported.
- /// MeidaPermissionImage - controls the level of image display supported.
- ///
+ }
[Serializable()]
- sealed public class MediaPermission : CodeAccessPermission, IUnrestrictedPermission
+ sealed public class MediaPermission : CodeAccessPermission, IUnrestrictedPermission
{
- //------------------------------------------------------
- //
- // Constructors
- //
- //------------------------------------------------------
-
- #region Constructors
-
- ///
- /// MediaPermission ctor.
- ///
- public MediaPermission()
- {
- InitDefaults();
- }
-
- ///
- /// MediaPermission ctor.
- ///
- public MediaPermission(PermissionState state)
- {
- if (state == PermissionState.Unrestricted)
- {
- _mediaPermissionAudio = MediaPermissionAudio.AllAudio;
- _mediaPermissionVideo = MediaPermissionVideo.AllVideo;
- _mediaPermissionImage = MediaPermissionImage.AllImage;
- }
- else if (state == PermissionState.None)
- {
- _mediaPermissionAudio = MediaPermissionAudio.NoAudio;
- _mediaPermissionVideo = MediaPermissionVideo.NoVideo;
- _mediaPermissionImage = MediaPermissionImage.NoImage;
- }
- else
- {
- throw new ArgumentException( SR.Get(SRID.InvalidPermissionState) );
- }
- }
-
- ///
- /// MediaPermission ctor.
- ///
- public MediaPermission(MediaPermissionAudio permissionAudio )
- {
- VerifyMediaPermissionAudio( permissionAudio ) ;
- InitDefaults();
-
- _mediaPermissionAudio = permissionAudio ;
- }
-
- ///
- /// MediaPermission ctor.
- ///
- public MediaPermission(MediaPermissionVideo permissionVideo )
- {
- VerifyMediaPermissionVideo( permissionVideo ) ;
- InitDefaults();
-
- _mediaPermissionVideo = permissionVideo ;
- }
-
- ///
- /// MediaPermission ctor.
- ///
- public MediaPermission(MediaPermissionImage permissionImage )
- {
- VerifyMediaPermissionImage( permissionImage );
- InitDefaults();
-
- _mediaPermissionImage = permissionImage ;
- }
-
- ///
- /// MediaPermission ctor.
- ///
- public MediaPermission(MediaPermissionAudio permissionAudio,
- MediaPermissionVideo permissionVideo,
- MediaPermissionImage permissionImage )
- {
- VerifyMediaPermissionAudio( permissionAudio );
- VerifyMediaPermissionVideo( permissionVideo );
- VerifyMediaPermissionImage( permissionImage );
-
- _mediaPermissionAudio = permissionAudio ;
- _mediaPermissionVideo = permissionVideo ;
- _mediaPermissionImage = permissionImage ;
- }
-
- #endregion Constructors
-
- //------------------------------------------------------
- //
- // Public Methods
- //
- //------------------------------------------------------
-
- #region Public Methods
-
-
- //
- // IUnrestrictedPermission implementation
- //
-
- ///
- /// Is this an unrestricted permisison ?
- ///
- public bool IsUnrestricted()
- {
- return EqualsLevel( MediaPermissionAudio.AllAudio ,
- MediaPermissionVideo.AllVideo,
- MediaPermissionImage.AllImage ) ;
- }
-
- //
- // CodeAccessPermission implementation
- //
-
-
- ///
- /// Is this a subsetOf the target ?
- ///
- public override bool IsSubsetOf(IPermission target)
- {
- if (target == null)
- {
- return EqualsLevel( MediaPermissionAudio.NoAudio,
- MediaPermissionVideo.NoVideo,
- MediaPermissionImage.NoImage ) ;
- }
-
- MediaPermission operand = target as MediaPermission ;
- if ( operand != null )
- {
- return ( ( this._mediaPermissionAudio <= operand._mediaPermissionAudio) &&
- ( this._mediaPermissionVideo <= operand._mediaPermissionVideo ) &&
- ( this._mediaPermissionImage <= operand._mediaPermissionImage ) ) ;
- }
- else
- {
- throw new ArgumentException(SR.Get(SRID.TargetNotMediaPermissionLevel));
- }
- }
-
- ///
- /// Return the intersection with the target
- ///
- public override IPermission Intersect(IPermission target)
- {
- if (target == null)
- {
- return null;
- }
-
- MediaPermission operand = target as MediaPermission ;
- if ( operand != null )
- {
- //
- // Construct a permission that is the aggregate of the
- // least priveleged level of the 3 enums.
- //
- MediaPermissionAudio audioIntersectLevel = _mediaPermissionAudio < operand._mediaPermissionAudio
- ? _mediaPermissionAudio : operand._mediaPermissionAudio;
-
- MediaPermissionVideo videoIntersectLevel = _mediaPermissionVideo < operand._mediaPermissionVideo
- ? _mediaPermissionVideo : operand._mediaPermissionVideo;
-
- MediaPermissionImage imageIntersectLevel = _mediaPermissionImage < operand._mediaPermissionImage
- ? _mediaPermissionImage : operand._mediaPermissionImage ;
-
- if ( ( audioIntersectLevel == MediaPermissionAudio.NoAudio ) &&
- ( videoIntersectLevel == MediaPermissionVideo.NoVideo ) &&
- ( imageIntersectLevel == MediaPermissionImage.NoImage ) )
-
- {
- return null;
- }
- else
- {
- return new MediaPermission( audioIntersectLevel, videoIntersectLevel, imageIntersectLevel ) ;
- }
- }
- else
- {
- throw new ArgumentException(SR.Get(SRID.TargetNotMediaPermissionLevel));
- }
- }
-
- ///
- /// Return the Union with the target
- ///
- public override IPermission Union(IPermission target)
- {
- if (target == null)
- {
- return this.Copy();
- }
-
- MediaPermission operand = target as MediaPermission ;
- if ( operand != null )
- {
- //
- // Construct a permission that is the aggregate of the
- // most priveleged level of the 3 enums.
- //
- MediaPermissionAudio audioUnionLevel = _mediaPermissionAudio > operand._mediaPermissionAudio
- ? _mediaPermissionAudio : operand._mediaPermissionAudio;
-
- MediaPermissionVideo videoUnionLevel = _mediaPermissionVideo > operand._mediaPermissionVideo
- ? _mediaPermissionVideo : operand._mediaPermissionVideo;
-
- MediaPermissionImage imageUnionLevel = _mediaPermissionImage > operand._mediaPermissionImage
- ? _mediaPermissionImage : operand._mediaPermissionImage ;
-
- if ( ( audioUnionLevel == MediaPermissionAudio.NoAudio ) &&
- ( videoUnionLevel == MediaPermissionVideo.NoVideo ) &&
- ( imageUnionLevel == MediaPermissionImage.NoImage ) )
- {
- return null;
- }
- else
- {
- return new MediaPermission( audioUnionLevel, videoUnionLevel, imageUnionLevel ) ;
- }
- }
- else
- {
- throw new ArgumentException(SR.Get(SRID.TargetNotMediaPermissionLevel));
- }
- }
-
- ///
- /// Copy this permission.
- ///
- public override IPermission Copy()
- {
- return new MediaPermission(
- this._mediaPermissionAudio,
- this._mediaPermissionVideo,
- this._mediaPermissionImage );
- }
-
- ///
- /// Return an XML instantiation of this permisson.
- ///
- 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("Audio", _mediaPermissionAudio.ToString());
- securityElement.AddAttribute("Video", _mediaPermissionVideo.ToString());
- securityElement.AddAttribute("Image", _mediaPermissionImage.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))
- {
- _mediaPermissionAudio = MediaPermissionAudio.AllAudio ;
- _mediaPermissionVideo = MediaPermissionVideo.AllVideo ;
- _mediaPermissionImage = MediaPermissionImage.AllImage;
- return;
- }
-
- InitDefaults();
-
- String audio = securityElement.Attribute("Audio");
-
- if (audio != null)
- {
- _mediaPermissionAudio = (MediaPermissionAudio)Enum.Parse(typeof(MediaPermissionAudio), audio );
- }
- else
- {
- throw new ArgumentException(SR.Get(SRID.BadXml,"audio")); // bad XML
- }
-
- String video = securityElement.Attribute("Video");
-
- if (video != null)
- {
- _mediaPermissionVideo = (MediaPermissionVideo)Enum.Parse(typeof(MediaPermissionVideo), video );
- }
- else
- {
- throw new ArgumentException(SR.Get(SRID.BadXml,"video")); // bad XML
- }
-
- String image = securityElement.Attribute("Image");
-
- if (image != null)
- {
- _mediaPermissionImage = (MediaPermissionImage)Enum.Parse(typeof(MediaPermissionImage), image );
- }
- else
- {
- throw new ArgumentException(SR.Get(SRID.BadXml,"image")); // bad XML
- }
-}
-
-
- #endregion Public Methods
-
- //------------------------------------------------------
- //
- // Public Properties
- //
- //------------------------------------------------------
-
- #region Public Properties
-
- ///
- /// Current value of allowed audio permission level
- ///
- public MediaPermissionAudio Audio
- {
- get
- {
- return _mediaPermissionAudio ;
- }
- }
-
- ///
- /// Current value of allowed video permission level
- ///
- public MediaPermissionVideo Video
- {
- get
- {
- return _mediaPermissionVideo ;
- }
- }
-
- ///
- /// Current value of allowed image permission level
- ///
- public MediaPermissionImage Image
- {
- get
- {
- return _mediaPermissionImage ;
- }
- }
-
- #endregion Public Properties
-
- //------------------------------------------------------
- //
- // Internal Methods
- //
- //------------------------------------------------------
-
- #region Internal Methods
-
- internal static void VerifyMediaPermissionAudio(MediaPermissionAudio level)
- {
- if (level < MediaPermissionAudio.NoAudio || level > MediaPermissionAudio.AllAudio )
- {
- throw new ArgumentException(SR.Get(SRID.InvalidPermissionLevel));
- }
- }
-
- internal static void VerifyMediaPermissionVideo(MediaPermissionVideo level)
- {
- if (level < MediaPermissionVideo.NoVideo || level > MediaPermissionVideo.AllVideo )
- {
- throw new ArgumentException(SR.Get(SRID.InvalidPermissionLevel));
- }
- }
-
- internal static void VerifyMediaPermissionImage(MediaPermissionImage level)
- {
- if (level < MediaPermissionImage.NoImage || level > MediaPermissionImage.AllImage )
- {
- throw new ArgumentException(SR.Get(SRID.InvalidPermissionLevel));
- }
- }
-
-
- #endregion Internal Methods
-
- //------------------------------------------------------
- //
- // Private Methods
- //
- //------------------------------------------------------
-
- #region Private Methods
-
- private void InitDefaults()
- {
- _mediaPermissionAudio = MediaPermissionAudio.SafeAudio;
- _mediaPermissionVideo = MediaPermissionVideo.SafeVideo;
- _mediaPermissionImage = MediaPermissionImage.SafeImage;
- }
-
- ///
- /// Private helper to compare the level of the 3 enum fields.
- ///
- private bool EqualsLevel( MediaPermissionAudio audioLevel,
- MediaPermissionVideo videoLevel,
- MediaPermissionImage imageLevel )
- {
- return ( ( _mediaPermissionAudio == audioLevel ) &&
- ( _mediaPermissionVideo == videoLevel ) &&
- ( _mediaPermissionImage == imageLevel ) ) ;
- }
-
- #endregion Private Methods
-
- //
- // Private fields:
- //
-
-
- private MediaPermissionAudio _mediaPermissionAudio ;
- private MediaPermissionVideo _mediaPermissionVideo ;
- private MediaPermissionImage _mediaPermissionImage ;
-}
-
-
- ///
- /// Imperative attribute to create a MediaPermission.
- ///
- [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Assembly, AllowMultiple = true, Inherited = false )]
- sealed public class MediaPermissionAttribute : CodeAccessSecurityAttribute
- {
- //------------------------------------------------------
- //
- // Constructors
- //
- //------------------------------------------------------
-
- #region Constructors
-
- ///
- /// Imperative attribute to create a MediaPermission.
- ///
- public MediaPermissionAttribute(SecurityAction action) : base(action)
- {
-}
-
- #endregion Constructors
-
-
- //------------------------------------------------------
- //
- // Public Methods
- //
- //------------------------------------------------------
-
- #region Public Methods
-
- ///
- /// Create a MediaPermisison.
- ///
- public override IPermission CreatePermission()
- {
- if (Unrestricted)
- {
- return new MediaPermission(PermissionState.Unrestricted);
- }
-
- else
- {
- return new MediaPermission( _mediaPermissionAudio,
- _mediaPermissionVideo,
- _mediaPermissionImage );
- }
- }
-
- #endregion Public Methods
-
- //------------------------------------------------------
- //
- // Public Properties
- //
- //------------------------------------------------------
-
- #region Public Properties
-
- ///
- /// Current audio level.
- ///
- public MediaPermissionAudio Audio
- {
- get
- {
- return _mediaPermissionAudio ;
- }
-
- set
- {
- MediaPermission.VerifyMediaPermissionAudio(value);
- _mediaPermissionAudio = value;
- }
- }
-
- ///
- /// Current Video level.
- ///
- public MediaPermissionVideo Video
- {
- get
- {
- return _mediaPermissionVideo ;
- }
-
- set
- {
- MediaPermission.VerifyMediaPermissionVideo(value);
- _mediaPermissionVideo = value;
- }
- }
-
- ///
- /// Current Image level.
- ///
- public MediaPermissionImage Image
- {
- get
- {
- return _mediaPermissionImage ;
- }
-
- set
- {
- MediaPermission.VerifyMediaPermissionImage(value);
- _mediaPermissionImage = value;
- }
- }
-
- #endregion Public Properties
-
- //
- // Private fields:
- //
-
- private MediaPermissionAudio _mediaPermissionAudio ;
- private MediaPermissionVideo _mediaPermissionVideo ;
- private MediaPermissionImage _mediaPermissionImage ;
-}
+ public MediaPermission() { }
+ public MediaPermission(PermissionState state) { }
+ public MediaPermission(MediaPermissionAudio permissionAudio) { }
+ public MediaPermission(MediaPermissionVideo permissionVideo) { }
+ public MediaPermission(MediaPermissionImage permissionImage) { }
+ public MediaPermission(MediaPermissionAudio permissionAudio,
+ MediaPermissionVideo permissionVideo,
+ MediaPermissionImage permissionImage)
+ { }
+ public bool IsUnrestricted() { return true; }
+ public override bool IsSubsetOf(IPermission target) { return true; }
+ public override IPermission Intersect(IPermission target) { return new MediaPermission(); }
+ public override IPermission Union(IPermission target) { return new MediaPermission(); }
+ public override IPermission Copy() { return new MediaPermission(); }
+ public override SecurityElement ToXml() { return default(SecurityElement); }
+ public override void FromXml(SecurityElement securityElement) { }
+ public MediaPermissionAudio Audio { get { return MediaPermissionAudio.AllAudio; } }
+ public MediaPermissionVideo Video { get { return MediaPermissionVideo.AllVideo; } }
+ public MediaPermissionImage Image { get { return MediaPermissionImage.AllImage; } }
+ }
+ [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Assembly, AllowMultiple = true, Inherited = false)]
+ sealed public class MediaPermissionAttribute : CodeAccessSecurityAttribute
+ {
+ public MediaPermissionAttribute(SecurityAction action) : base(action) { }
+ public override IPermission CreatePermission() { return new MediaPermission(); }
+ public MediaPermissionAudio Audio { get { return MediaPermissionAudio.AllAudio; } set { } }
+ public MediaPermissionVideo Video { get { return MediaPermissionVideo.AllVideo; } set { } }
+ public MediaPermissionImage Image { get { return MediaPermissionImage.AllImage; } set { } }
+ }
}
diff --git a/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Security/Permissions/WebBrowserPermission.cs b/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Security/Permissions/WebBrowserPermission.cs
index ccacc1250c1..6cc77c81b20 100644
--- a/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Security/Permissions/WebBrowserPermission.cs
+++ b/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Security/Permissions/WebBrowserPermission.cs
@@ -1,427 +1,36 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-//
-//
-// Description:
-// The WebBrowserPermission controls the ability to create the WebBrowsercontrol.
-// In avalon - this control creates the ability for frames to navigate to html.
-//
-//
-//
-//
-
-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;
-using MS.Internal.WindowsBase;
-
-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;
-}
-}
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+namespace System.Security.Permissions
+{
+ public enum WebBrowserPermissionLevel
+ {
+ None,
+ Safe,
+ Unrestricted
+ }
+
+ [Serializable()]
+ sealed public class WebBrowserPermission : CodeAccessPermission, IUnrestrictedPermission
+ {
+ public WebBrowserPermission() { }
+ public WebBrowserPermission(PermissionState state) { }
+ public WebBrowserPermission(WebBrowserPermissionLevel webBrowserPermissionLevel) { }
+ public bool IsUnrestricted() { return true; }
+ public override bool IsSubsetOf(IPermission target) { return true; }
+ public override IPermission Intersect(IPermission target) { return new WebBrowserPermission(); }
+ public override IPermission Union(IPermission target) { return new WebBrowserPermission(); }
+ public override IPermission Copy() { return new WebBrowserPermission(); }
+ public override SecurityElement ToXml() { return default(SecurityElement); }
+ public override void FromXml(SecurityElement securityElement) { }
+ public WebBrowserPermissionLevel Level { get { return WebBrowserPermissionLevel.Unrestricted; } set { } }
+ }
+
+ [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Assembly, AllowMultiple = true, Inherited = false )]
+ sealed public class WebBrowserPermissionAttribute : CodeAccessSecurityAttribute
+ {
+ public WebBrowserPermissionAttribute(SecurityAction action) : base(action) { }
+ public override IPermission CreatePermission() { return new WebBrowserPermission(); }
+ public WebBrowserPermissionLevel Level { get { return WebBrowserPermissionLevel.Unrestricted; } set { } }
+ }
+}
diff --git a/src/Microsoft.DotNet.Wpf/test/DRT/DrtXaml/DrtXaml/Tests/LoadPermissionTests.cs b/src/Microsoft.DotNet.Wpf/test/DRT/DrtXaml/DrtXaml/Tests/LoadPermissionTests.cs
deleted file mode 100644
index 79ac5b6fb73..00000000000
--- a/src/Microsoft.DotNet.Wpf/test/DRT/DrtXaml/DrtXaml/Tests/LoadPermissionTests.cs
+++ /dev/null
@@ -1,223 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Security.Permissions;
-using System.Xaml;
-using System.Xaml.Permissions;
-using DRT;
-using DrtXaml.XamlTestFramework;
-
-namespace DrtXaml.Tests
-{
- [TestClass]
- sealed class LoadPermissionTests : XamlTestSuite
- {
- public LoadPermissionTests()
- : base("LoadPermissionTests")
- {
- }
-
- public override DrtTest[] PrepareTests()
- {
- DrtTest[] tests = DrtTestFinder.FindTests(this);
- return tests;
- }
-
- [TestMethod]
- public void Unrestricted()
- {
- VerifyInvariants(s_UnrestrictedPerm, isUnrestricted : true);
-
- XamlAccessLevel assemblyAccess = XamlAccessLevel.AssemblyAccessTo(typeof(LoadPermissionTests).Assembly);
- Assert.IsTrue(s_UnrestrictedPerm.Includes(assemblyAccess));
- }
-
- [TestMethod]
- public void Empty()
- {
- VerifyInvariants(s_EmptyPerm);
- XamlLoadPermission emptyPerm = new XamlLoadPermission(new XamlAccessLevel[0]);
- VerifyInvariants(emptyPerm);
- Assert.AreEqual(s_EmptyPerm, emptyPerm);
-
- XamlAccessLevel assemblyAccess = XamlAccessLevel.AssemblyAccessTo(typeof(LoadPermissionTests).Assembly);
- Assert.IsFalse(s_EmptyPerm.Includes(assemblyAccess));
- }
-
- [TestMethod]
- public void SingleAssembly()
- {
- XamlAccessLevel assemblyAccess = XamlAccessLevel.AssemblyAccessTo(typeof(LoadPermissionTests).Assembly);
- XamlLoadPermission assemblyPerm = new XamlLoadPermission(assemblyAccess);
- VerifyInvariants(assemblyPerm);
-
- XamlLoadPermission testPerm, intersect, union;
-
- // Identical permission
- XamlAccessLevel sameAssemblyAccess = XamlAccessLevel.AssemblyAccessTo(typeof(LoadPermissionTests).Assembly);
- testPerm = new XamlLoadPermission(sameAssemblyAccess);
- VerifyInvariants(testPerm);
- Assert.AreEqual(assemblyPerm, testPerm);
- Assert.IsTrue(testPerm.IsSubsetOf(assemblyPerm));
- Assert.IsTrue(assemblyPerm.IsSubsetOf(testPerm));
- intersect = (XamlLoadPermission)testPerm.Intersect(assemblyPerm);
- Assert.AreEqual(assemblyPerm, intersect);
- union = (XamlLoadPermission)testPerm.Union(assemblyPerm);
- Assert.AreEqual(assemblyPerm, union);
- Assert.IsTrue(testPerm.Includes(sameAssemblyAccess));
-
- // Type permission to same assembly
- XamlAccessLevel typeAccess = XamlAccessLevel.PrivateAccessTo(typeof(LoadPermissionTests));
- testPerm = new XamlLoadPermission(typeAccess);
- VerifyInvariants(testPerm);
- Assert.AreNotEqual(assemblyPerm, testPerm);
- Assert.IsFalse(testPerm.IsSubsetOf(assemblyPerm));
- Assert.IsTrue(assemblyPerm.IsSubsetOf(testPerm));
- intersect = (XamlLoadPermission)testPerm.Intersect(assemblyPerm);
- Assert.AreEqual(assemblyPerm, intersect);
- union = (XamlLoadPermission)testPerm.Union(assemblyPerm);
- Assert.AreEqual(testPerm, union);
- Assert.IsTrue(testPerm.Includes(sameAssemblyAccess));
- Assert.IsTrue(testPerm.Includes(typeAccess));
-
- // Assembly permission on different assembly
- XamlAccessLevel diffAssemblyAccess = XamlAccessLevel.AssemblyAccessTo(typeof(string).Assembly);
- testPerm = new XamlLoadPermission(diffAssemblyAccess);
- VerifyInvariants(testPerm);
- Assert.AreNotEqual(assemblyPerm, testPerm);
- Assert.IsFalse(testPerm.IsSubsetOf(assemblyPerm));
- Assert.IsFalse(assemblyPerm.IsSubsetOf(testPerm));
- intersect = (XamlLoadPermission)testPerm.Intersect(assemblyPerm);
- Assert.AreEqual(s_EmptyPerm, intersect);
- union = (XamlLoadPermission)testPerm.Union(assemblyPerm);
- Assert.IsTrue(testPerm.IsSubsetOf(union));
- Assert.IsTrue(assemblyPerm.IsSubsetOf(union));
- Assert.IsFalse(testPerm.Includes(sameAssemblyAccess));
- Assert.IsFalse(testPerm.Includes(typeAccess));
- }
-
- [TestMethod]
- public void SingleType()
- {
- XamlAccessLevel typeAccess = XamlAccessLevel.PrivateAccessTo(typeof(LoadPermissionTests));
- XamlLoadPermission typePerm = new XamlLoadPermission(typeAccess);
- VerifyInvariants(typePerm);
-
- XamlLoadPermission testPerm, intersect, union;
-
- // Identical permission
- XamlAccessLevel sameTypeAccess = XamlAccessLevel.PrivateAccessTo(typeof(LoadPermissionTests));
- testPerm = new XamlLoadPermission(sameTypeAccess);
- VerifyInvariants(testPerm);
- Assert.AreEqual(typePerm, testPerm);
- Assert.IsTrue(testPerm.IsSubsetOf(typePerm));
- Assert.IsTrue(typePerm.IsSubsetOf(testPerm));
- intersect = (XamlLoadPermission)testPerm.Intersect(typePerm);
- Assert.AreEqual(typePerm, intersect);
- union = (XamlLoadPermission)testPerm.Union(typePerm);
- Assert.AreEqual(typePerm, union);
-
- // Assembly permission to the same assembly
- XamlAccessLevel assemblyAccess = XamlAccessLevel.AssemblyAccessTo(typeof(LoadPermissionTests).Assembly);
- testPerm = new XamlLoadPermission(assemblyAccess);
- VerifyInvariants(testPerm);
- Assert.AreNotEqual(typePerm, testPerm);
- Assert.IsTrue(testPerm.IsSubsetOf(typePerm));
- Assert.IsFalse(typePerm.IsSubsetOf(testPerm));
- intersect = (XamlLoadPermission)testPerm.Intersect(typePerm);
- Assert.AreEqual(testPerm, intersect);
- union = (XamlLoadPermission)testPerm.Union(typePerm);
- Assert.AreEqual(typePerm, union);
-
- // Type permission on different type in same assembly
- XamlAccessLevel sameAsmTypeAccess = XamlAccessLevel.PrivateAccessTo(typeof(SchemaTests));
- testPerm = new XamlLoadPermission(sameAsmTypeAccess);
- VerifyInvariants(testPerm);
- Assert.AreNotEqual(typePerm, testPerm);
- Assert.IsFalse(testPerm.IsSubsetOf(typePerm));
- Assert.IsFalse(typePerm.IsSubsetOf(testPerm));
- intersect = (XamlLoadPermission)testPerm.Intersect(typePerm);
- XamlLoadPermission assemblyPerm = new XamlLoadPermission(assemblyAccess);
- Assert.AreEqual(assemblyPerm, intersect);
- union = (XamlLoadPermission)testPerm.Union(typePerm);
- Assert.IsTrue(testPerm.IsSubsetOf(union));
- Assert.IsTrue(typePerm.IsSubsetOf(union));
- Assert.IsTrue(assemblyPerm.IsSubsetOf(union));
-
- // Type permission in different assembly
- XamlAccessLevel diffTypeAccess = XamlAccessLevel.PrivateAccessTo(typeof(string));
- testPerm = new XamlLoadPermission(diffTypeAccess);
- VerifyInvariants(testPerm);
- Assert.AreNotEqual(typePerm, testPerm);
- Assert.IsFalse(testPerm.IsSubsetOf(typePerm));
- Assert.IsFalse(typePerm.IsSubsetOf(testPerm));
- intersect = (XamlLoadPermission)testPerm.Intersect(typePerm);
- Assert.AreEqual(s_EmptyPerm, intersect);
- union = (XamlLoadPermission)testPerm.Union(typePerm);
- Assert.IsTrue(testPerm.IsSubsetOf(union));
- Assert.IsTrue(typePerm.IsSubsetOf(union));
- }
-
- [TestMethod]
- public void AccessLevelCtorsPositive()
- {
- XamlAccessLevel byRef = XamlAccessLevel.AssemblyAccessTo(typeof(LoadPermissionTests).Assembly);
- XamlAccessLevel byName = XamlAccessLevel.AssemblyAccessTo(typeof(LoadPermissionTests).Assembly.GetName());
- Assert.AreEqual(new XamlLoadPermission(byRef), new XamlLoadPermission(byName));
-
- byRef = XamlAccessLevel.PrivateAccessTo(typeof(LoadPermissionTests));
- byName = XamlAccessLevel.PrivateAccessTo(typeof(LoadPermissionTests).AssemblyQualifiedName);
- Assert.AreEqual(new XamlLoadPermission(byRef), new XamlLoadPermission(byName));
- }
-
- [TestMethod, TestExpectedException(typeof(ArgumentException))]
- public void AccessLevelCtorUnqualifiedAssemblyName()
- {
- XamlAccessLevel.AssemblyAccessTo(new AssemblyName("DRTXaml"));
- }
-
- [TestMethod, TestExpectedException(typeof(ArgumentException))]
- public void AccessLevelCtorUnqualifiedTypeName()
- {
- XamlAccessLevel.PrivateAccessTo(typeof(LoadPermissionTests).FullName);
- }
-
- private void VerifyInvariants(XamlLoadPermission original, bool isUnrestricted = false)
- {
- Assert.AreEqual(original, original);
- Assert.AreEqual(isUnrestricted, original.IsUnrestricted());
-
- XamlLoadPermission copy = (XamlLoadPermission)original.Copy();
- Assert.AreEqual(original, copy);
- Assert.AreEqual(original.IsUnrestricted(), copy.IsUnrestricted());
- Assert.IsTrue(original.IsSubsetOf(copy));
- Assert.IsTrue(copy.IsSubsetOf(original));
-
- XamlLoadPermission xmlCopy = new XamlLoadPermission(PermissionState.None);
- xmlCopy.FromXml(original.ToXml());
- Assert.AreEqual(original, xmlCopy);
-
- var intersect = (XamlLoadPermission)original.Intersect(copy);
- Assert.AreEqual(original, intersect);
- var union = (XamlLoadPermission)original.Union(copy);
- Assert.AreEqual(original, union);
-
- intersect = (XamlLoadPermission)original.Intersect(s_EmptyPerm);
- Assert.AreEqual(s_EmptyPerm, intersect);
- union = (XamlLoadPermission)original.Union(s_EmptyPerm);
- Assert.AreEqual(original, union);
-
- intersect = (XamlLoadPermission)original.Intersect(s_UnrestrictedPerm);
- Assert.AreEqual(original, intersect);
- union = (XamlLoadPermission)original.Union(s_UnrestrictedPerm);
- Assert.AreEqual(s_UnrestrictedPerm, union);
- }
-
- static XamlLoadPermission s_EmptyPerm = new XamlLoadPermission(PermissionState.None);
- static XamlLoadPermission s_UnrestrictedPerm = new XamlLoadPermission(PermissionState.Unrestricted);
- }
-}