Moving System.Security.Permissions Types from WPF
authorDilip Ojha <dilip.ojha@microsoft.com>
Fri, 14 Jun 2019 23:27:45 +0000 (16:27 -0700)
committerJeremy Barton <jbarton@microsoft.com>
Fri, 14 Jun 2019 23:27:45 +0000 (16:27 -0700)
* moved wpf types

* added new types to ref

* addressed comments

* addressing comments

* addressed more comments

* addressed comment

* updated ref

* added typeforwardedfrom and addressed comment

* updated publickeytoken

* added tests, addressed comments

* added mediapermissionattribute test

Commit migrated from https://github.com/dotnet/corefx/commit/df5bb8e4509ca5166f83abbd4cfe4a063433fee7

src/libraries/System.Security.Permissions/ref/System.Security.Permissions.cs
src/libraries/System.Security.Permissions/ref/System.Security.Permissions.csproj
src/libraries/System.Security.Permissions/src/System.Security.Permissions.csproj
src/libraries/System.Security.Permissions/src/System/Security/Permissions/MediaPermission.cs [new file with mode: 0644]
src/libraries/System.Security.Permissions/src/System/Security/Permissions/WebBrowserPermission.cs [new file with mode: 0644]
src/libraries/System.Security.Permissions/src/System/Xaml/Permissions/XamlAccessLevel.cs [new file with mode: 0644]
src/libraries/System.Security.Permissions/src/System/Xaml/Permissions/XamlLoadPermission.cs [new file with mode: 0644]
src/libraries/System.Security.Permissions/tests/PermissionTests.cs
src/libraries/System.Security.Permissions/tests/System.Security.Permissions.Tests.csproj
src/libraries/System.Security.Permissions/tests/XamlAccessLevelTests.cs [new file with mode: 0644]

index d2a496c..f38b82c 100644 (file)
@@ -1040,6 +1040,55 @@ namespace System.Security.Permissions
         ChangeAcl = 8192,
         AllFlags = 13111,
     }
+    public sealed partial class MediaPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
+    {
+        public MediaPermission() { }
+        public MediaPermission(System.Security.Permissions.MediaPermissionAudio permissionAudio) { }
+        public MediaPermission(System.Security.Permissions.MediaPermissionAudio permissionAudio, System.Security.Permissions.MediaPermissionVideo permissionVideo, System.Security.Permissions.MediaPermissionImage permissionImage) { }
+        public MediaPermission(System.Security.Permissions.MediaPermissionImage permissionImage) { }
+        public MediaPermission(System.Security.Permissions.MediaPermissionVideo permissionVideo) { }
+        public MediaPermission(System.Security.Permissions.PermissionState state) { }
+        public System.Security.Permissions.MediaPermissionAudio Audio { get { throw null; } }
+        public System.Security.Permissions.MediaPermissionImage Image { get { throw null; } }
+        public System.Security.Permissions.MediaPermissionVideo Video { get { throw null; } }
+        public override System.Security.IPermission Copy() { throw null; }
+        public override void FromXml(System.Security.SecurityElement securityElement) { }
+        public override System.Security.IPermission Intersect(System.Security.IPermission target) { throw null; }
+        public override bool IsSubsetOf(System.Security.IPermission target) { throw null; }
+        public bool IsUnrestricted() { throw null; }
+        public override System.Security.SecurityElement ToXml() { throw null; }
+        public override System.Security.IPermission Union(System.Security.IPermission target) { throw null; }
+    }
+    [System.AttributeUsageAttribute(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple = true, Inherited = false)]
+    public sealed partial class MediaPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
+    {
+        public MediaPermissionAttribute(System.Security.Permissions.SecurityAction action) : base(default(System.Security.Permissions.SecurityAction)) { }
+        public System.Security.Permissions.MediaPermissionAudio Audio { get { throw null; } set { } }
+        public System.Security.Permissions.MediaPermissionImage Image { get { throw null; } set { } }
+        public System.Security.Permissions.MediaPermissionVideo Video { get { throw null; } set { } }
+        public override System.Security.IPermission CreatePermission() { throw null; }
+    }
+    public enum MediaPermissionAudio
+    {
+        NoAudio = 0,
+        SiteOfOriginAudio = 1,
+        SafeAudio = 2,
+        AllAudio = 3,
+    }
+    public enum MediaPermissionImage
+    {
+        NoImage = 0,
+        SiteOfOriginImage = 1,
+        SafeImage = 2,
+        AllImage = 3,
+    }
+    public enum MediaPermissionVideo
+    {
+        NoVideo = 0,
+        SiteOfOriginVideo = 1,
+        SafeVideo = 2,
+        AllVideo = 3,
+    }
     [System.AttributeUsageAttribute(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
     public sealed partial class PermissionSetAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
     {
@@ -1397,6 +1446,33 @@ namespace System.Security.Permissions
         public string Url { get { throw null; } set { } }
         public override System.Security.IPermission CreatePermission() { throw null; }
     }
+    public sealed partial class WebBrowserPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
+    {
+        public WebBrowserPermission() { }
+        public WebBrowserPermission(System.Security.Permissions.PermissionState state) { }
+        public WebBrowserPermission(System.Security.Permissions.WebBrowserPermissionLevel webBrowserPermissionLevel) { }
+        public System.Security.Permissions.WebBrowserPermissionLevel Level { get { throw null; } set { } }
+        public override System.Security.IPermission Copy() { throw null; }
+        public override void FromXml(System.Security.SecurityElement securityElement) { }
+        public override System.Security.IPermission Intersect(System.Security.IPermission target) { throw null; }
+        public override bool IsSubsetOf(System.Security.IPermission target) { throw null; }
+        public bool IsUnrestricted() { throw null; }
+        public override System.Security.SecurityElement ToXml() { throw null; }
+        public override System.Security.IPermission Union(System.Security.IPermission target) { throw null; }
+    }
+    [System.AttributeUsageAttribute(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple = true, Inherited = false)]
+    public sealed partial class WebBrowserPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
+    {
+        public WebBrowserPermissionAttribute(System.Security.Permissions.SecurityAction action) : base(default(System.Security.Permissions.SecurityAction)) { }
+        public System.Security.Permissions.WebBrowserPermissionLevel Level { get { throw null; } set { } }
+        public override System.Security.IPermission CreatePermission() { throw null; }
+    }
+    public enum WebBrowserPermissionLevel
+    {
+        None = 0,
+        Safe = 1,
+        Unrestricted = 2,
+    }
     public sealed partial class ZoneIdentityPermission : System.Security.CodeAccessPermission
     {
         public ZoneIdentityPermission(System.Security.Permissions.PermissionState state) { }
@@ -2015,3 +2091,33 @@ namespace System.Web
         Unrestricted = 600,
     }
 }
+namespace System.Xaml.Permissions
+{
+    public partial class XamlAccessLevel
+    {
+        internal XamlAccessLevel() { }
+        public System.Reflection.AssemblyName AssemblyAccessToAssemblyName { get { throw null; } }
+        public string PrivateAccessToTypeName { get { throw null; } }
+        public static System.Xaml.Permissions.XamlAccessLevel AssemblyAccessTo(System.Reflection.Assembly assembly) { throw null; }
+        public static System.Xaml.Permissions.XamlAccessLevel AssemblyAccessTo(System.Reflection.AssemblyName assemblyName) { throw null; }
+        public static System.Xaml.Permissions.XamlAccessLevel PrivateAccessTo(string assemblyQualifiedTypeName) { throw null; }
+        public static System.Xaml.Permissions.XamlAccessLevel PrivateAccessTo(System.Type type) { throw null; }
+    }
+    public sealed partial class XamlLoadPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
+    {
+        public XamlLoadPermission(System.Collections.Generic.IEnumerable<System.Xaml.Permissions.XamlAccessLevel> allowedAccess) { }
+        public XamlLoadPermission(System.Security.Permissions.PermissionState state) { }
+        public XamlLoadPermission(System.Xaml.Permissions.XamlAccessLevel allowedAccess) { }
+        public System.Collections.Generic.IList<System.Xaml.Permissions.XamlAccessLevel> AllowedAccess { get { throw null; } }
+        public override System.Security.IPermission Copy() { throw null; }
+        public override bool Equals(object obj) { throw null; }
+        public override void FromXml(System.Security.SecurityElement elem) { }
+        public override int GetHashCode() { throw null; }
+        public bool Includes(System.Xaml.Permissions.XamlAccessLevel requestedAccess) { throw null; }
+        public override System.Security.IPermission Intersect(System.Security.IPermission target) { throw null; }
+        public override bool IsSubsetOf(System.Security.IPermission target) { throw null; }
+        public bool IsUnrestricted() { throw null; }
+        public override System.Security.SecurityElement ToXml() { throw null; }
+        public override System.Security.IPermission Union(System.Security.IPermission other) { throw null; }
+    }
+}
index b69ad78..d2b4c99 100644 (file)
@@ -20,6 +20,8 @@
     <Reference Include="System.Security" />
     <Reference Include="System.ServiceProcess" />
     <Reference Include="System.Transactions" />
+    <Reference Include="System.Xaml" />
+    <Reference Include="WindowsBase" />
   </ItemGroup>
   <ItemGroup Condition="'$(TargetsNetFx)' != 'true'">
     <ProjectReference Include="..\..\System.Security.AccessControl\ref\System.Security.AccessControl.csproj" />
@@ -37,4 +39,4 @@
     <ProjectReference Include="..\..\System.Text.RegularExpressions\ref\System.Text.RegularExpressions.csproj" />
     <ProjectReference Include="..\..\System.Threading\ref\System.Threading.csproj" />
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index f2eaa03..9d3ca6e 100644 (file)
@@ -89,6 +89,7 @@
     <Compile Include="System\Security\Permissions\KeyContainerPermissionAccessEntryEnumerator.cs" />
     <Compile Include="System\Security\Permissions\KeyContainerPermissionAttribute.cs" />
     <Compile Include="System\Security\Permissions\KeyContainerPermissionFlags.cs" />
+    <Compile Include="System\Security\Permissions\MediaPermission.cs" />
     <Compile Include="System\Security\Permissions\PermissionSetAttribute.cs" />
     <Compile Include="System\Security\Permissions\PrincipalPermission.cs" />
     <Compile Include="System\Security\Permissions\PrincipalPermissionAttribute.cs" />
     <Compile Include="System\Security\Permissions\UIPermissionWindow.cs" />
     <Compile Include="System\Security\Permissions\UrlIdentityPermission.cs" />
     <Compile Include="System\Security\Permissions\UrlIdentityPermissionAttribute.cs" />
+    <Compile Include="System\Security\Permissions\WebBrowserPermission.cs" />
     <Compile Include="System\Security\Permissions\ZoneIdentityPermission.cs" />
     <Compile Include="System\Security\Permissions\ZoneIdentityPermissionAttribute.cs" />
     <Compile Include="System\Security\Policy\AllMembershipCondition.cs" />
     <Compile Include="System\Web\AspNetHostingPermission.cs" />
     <Compile Include="System\Web\AspNetHostingPermissionAttribute.cs" />
     <Compile Include="System\Web\AspNetHostingPermissionLevel.cs" />
+    <Compile Include="System\Xaml\Permissions\XamlAccessLevel.cs" />
+    <Compile Include="System\Xaml\Permissions\XamlLoadPermission.cs" />
   </ItemGroup>
   <ItemGroup Condition="'$(TargetGroup)' == 'netstandard'">
     <Compile Include="$(CommonPath)\CoreLib\System\Security\IStackWalk.cs">
     <Reference Include="System.ServiceProcess" />
     <Reference Include="System.Transactions" />
     <Reference Include="System.Web" />
+    <Reference Include="System.Xaml" />
+    <Reference Include="WindowsBase" />
   </ItemGroup>
   <ItemGroup>
     <Reference Include="System.Security.AccessControl" />
     <Reference Include="System.Threading" />
     <Reference Include="System.Threading.Thread" />
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/src/libraries/System.Security.Permissions/src/System/Security/Permissions/MediaPermission.cs b/src/libraries/System.Security.Permissions/src/System/Security/Permissions/MediaPermission.cs
new file mode 100644 (file)
index 0000000..e10cbb5
--- /dev/null
@@ -0,0 +1,58 @@
+// 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 MediaPermissionAudio
+    {
+        NoAudio,
+        SiteOfOriginAudio,
+        SafeAudio,
+        AllAudio
+    }
+    public enum MediaPermissionVideo
+    {
+        NoVideo,
+        SiteOfOriginVideo,
+        SafeVideo,
+        AllVideo,
+    }
+    public enum MediaPermissionImage
+    {
+        NoImage,
+        SiteOfOriginImage,
+        SafeImage,
+        AllImage,
+    }
+    sealed public class MediaPermission : CodeAccessPermission, IUnrestrictedPermission
+    {
+        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/libraries/System.Security.Permissions/src/System/Security/Permissions/WebBrowserPermission.cs b/src/libraries/System.Security.Permissions/src/System/Security/Permissions/WebBrowserPermission.cs
new file mode 100644 (file)
index 0000000..2db3f62
--- /dev/null
@@ -0,0 +1,34 @@
+// 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
+    }
+    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/libraries/System.Security.Permissions/src/System/Xaml/Permissions/XamlAccessLevel.cs b/src/libraries/System.Security.Permissions/src/System/Xaml/Permissions/XamlAccessLevel.cs
new file mode 100644 (file)
index 0000000..7bea5cf
--- /dev/null
@@ -0,0 +1,51 @@
+// 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.Reflection;
+using System.Security;
+
+namespace System.Xaml.Permissions
+{
+    public class XamlAccessLevel
+    {
+        private XamlAccessLevel(string assemblyName, string typeName)
+        {
+            AssemblyNameString = assemblyName;
+            PrivateAccessToTypeName = typeName;
+        }
+
+        public static XamlAccessLevel AssemblyAccessTo(Assembly assembly)
+        {
+            return new XamlAccessLevel(assembly.FullName, null);
+        }
+
+        public static XamlAccessLevel AssemblyAccessTo(AssemblyName assemblyName)
+        {
+            return new XamlAccessLevel(assemblyName.FullName, null);
+        }
+
+        public static XamlAccessLevel PrivateAccessTo(Type type)
+        {
+            return new XamlAccessLevel(type.Assembly.FullName, type.FullName);
+        }
+
+        public static XamlAccessLevel PrivateAccessTo(string assemblyQualifiedTypeName)
+        {
+            int nameBoundary = assemblyQualifiedTypeName.IndexOf(',');
+            string typeName = assemblyQualifiedTypeName.Substring(0, nameBoundary).Trim();
+            string assemblyFullName = assemblyQualifiedTypeName.Substring(nameBoundary + 1).Trim();
+            AssemblyName assemblyName = new AssemblyName(assemblyFullName);
+            return new XamlAccessLevel(assemblyName.FullName, typeName);
+        }
+
+        public AssemblyName AssemblyAccessToAssemblyName
+        {
+            get { return new AssemblyName(AssemblyNameString); }
+        }
+
+        public string PrivateAccessToTypeName { get; private set; }
+
+        internal string AssemblyNameString { get; private set; }
+    }
+}
diff --git a/src/libraries/System.Security.Permissions/src/System/Xaml/Permissions/XamlLoadPermission.cs b/src/libraries/System.Security.Permissions/src/System/Xaml/Permissions/XamlLoadPermission.cs
new file mode 100644 (file)
index 0000000..00a38fa
--- /dev/null
@@ -0,0 +1,32 @@
+// 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.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Runtime.InteropServices;
+using System.Security;
+using System.Security.Permissions;
+
+namespace System.Xaml.Permissions
+{
+    public sealed class XamlLoadPermission : CodeAccessPermission, IUnrestrictedPermission
+    {
+        public XamlLoadPermission(PermissionState state) { }
+        public XamlLoadPermission(XamlAccessLevel allowedAccess) { }
+        public XamlLoadPermission(IEnumerable<XamlAccessLevel> allowedAccess) { }
+        [ComVisible(false)]
+        public override bool Equals(object obj) { return ReferenceEquals(this, obj); }
+        [ComVisible(false)]
+        public override int GetHashCode() { return base.GetHashCode(); }
+        public IList<XamlAccessLevel> AllowedAccess { get; private set; } = new ReadOnlyCollection<XamlAccessLevel>(Array.Empty<XamlAccessLevel>());
+        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; }
+    }
+}
index 705e870..e1cf80f 100644 (file)
@@ -7,6 +7,7 @@ using System.Configuration;
 using System.DirectoryServices;
 using System.Reflection;
 using System.Web;
+using System.Xaml.Permissions;
 
 namespace System.Security.Permissions.Tests
 {
@@ -167,6 +168,33 @@ namespace System.Security.Permissions.Tests
         }
 
         [Fact]
+        public static void MediaPermissionCallMethods()
+        {
+            MediaPermission mp = new MediaPermission();
+            MediaPermission mp2 = new MediaPermission(MediaPermissionAudio.AllAudio);
+            MediaPermission mp3 = new MediaPermission(MediaPermissionVideo.AllVideo);
+            MediaPermission mp4 = new MediaPermission(MediaPermissionImage.AllImage);
+            MediaPermission mp5 = new MediaPermission(MediaPermissionAudio.AllAudio,
+                                                     MediaPermissionVideo.AllVideo,
+                                                     MediaPermissionImage.AllImage);
+            bool testbool = mp.IsUnrestricted();
+            IPermission ip = mp.Copy();
+            IPermission ip2 = mp.Intersect(ip);
+            IPermission ip3 = mp.Union(ip);
+            testbool = mp.IsSubsetOf(ip);
+            SecurityElement se = new SecurityElement("");
+            mp.FromXml(se);
+            se = mp.ToXml();
+        }
+
+        [Fact]
+        public static void MediaPermissionAttributeCallMethods()
+        {
+            MediaPermissionAttribute mpa = new MediaPermissionAttribute(new Permissions.SecurityAction());
+            IPermission ip = mpa.CreatePermission();
+        }
+
+        [Fact]
         public static void PrincipalPermissionCallMethods()
         {
             PrincipalPermission pp = new PrincipalPermission(new Permissions.PermissionState());
@@ -394,6 +422,49 @@ namespace System.Security.Permissions.Tests
         }
 
         [Fact]
+        public static void WebBrowserPermissionCallMethods()
+        {
+            WebBrowserPermission wp = new WebBrowserPermission();
+            WebBrowserPermission wp2 = new WebBrowserPermission(PermissionState.Unrestricted);
+            WebBrowserPermission wp3 = new WebBrowserPermission(WebBrowserPermissionLevel.Unrestricted);
+            bool testbool = wp.IsUnrestricted();
+            IPermission ip = wp.Copy();
+            IPermission ip2 = wp.Intersect(ip);
+            IPermission ip3= wp.Union(ip);
+            testbool = wp.IsSubsetOf(ip);
+            SecurityElement se = new SecurityElement("");
+            wp.FromXml(se);
+            se = wp.ToXml();
+        }
+
+        [Fact]
+        public static void WebBrowserPermissionAttributeCallMethods()
+        {
+            WebBrowserPermissionAttribute wpa = new WebBrowserPermissionAttribute(new Permissions.SecurityAction());
+            IPermission ip = wpa.CreatePermission();
+        }
+
+        [Fact]
+        public static void XamlLoadPermissionCallMethods()
+        {
+            XamlAccessLevel accessLevel = XamlAccessLevel.AssemblyAccessTo(Assembly.GetExecutingAssembly().GetName());
+            XamlLoadPermission xp = new XamlLoadPermission(accessLevel);
+            XamlLoadPermission xp2 = new XamlLoadPermission(PermissionState.Unrestricted);
+            XamlLoadPermission xp3 = new XamlLoadPermission(Array.Empty<XamlAccessLevel>());
+            bool testbool = xp.IsUnrestricted();
+            IPermission ip = xp.Copy();
+            IPermission ip2 = xp.Intersect(ip);
+            IPermission ip3 = xp.Union(ip);
+            testbool = xp.IsSubsetOf(ip);
+            testbool = xp.Equals(new object());
+            testbool = xp.Includes(accessLevel);
+            int hash = xp.GetHashCode();
+            SecurityElement se = new SecurityElement("");
+            xp.FromXml(se);
+            se = xp.ToXml();
+        }
+
+        [Fact]
         public static void ZoneIdentityPermissionCallMethods()
         {
             ZoneIdentityPermission zip = new ZoneIdentityPermission(new PermissionState());
index 617fb63..402e93a 100644 (file)
@@ -18,5 +18,6 @@
     <Compile Include="PrincipalPermissionTests.cs" />
     <Compile Include="SecurityElementTests.cs" />
     <Compile Include="TrustManagerContextTests.cs" />
+    <Compile Include="XamlAccessLevelTests.cs" />
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/src/libraries/System.Security.Permissions/tests/XamlAccessLevelTests.cs b/src/libraries/System.Security.Permissions/tests/XamlAccessLevelTests.cs
new file mode 100644 (file)
index 0000000..a1488ee
--- /dev/null
@@ -0,0 +1,25 @@
+// 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.Reflection;
+using System.Xaml.Permissions;
+using Xunit;
+
+namespace System.Security.Permissions.Tests
+{
+    public class XamlAccessLevelTests
+    {
+        [Fact]
+        public static void XamlAccessLevelTestsCallMethods()
+        {
+            Assembly execAssembly = Assembly.GetExecutingAssembly();
+            Type type = typeof(int);
+            XamlAccessLevel accessLevel = XamlAccessLevel.AssemblyAccessTo(execAssembly);
+            XamlAccessLevel accessLevel2 = XamlAccessLevel.AssemblyAccessTo(execAssembly.GetName());
+            XamlAccessLevel accessLevel3 = XamlAccessLevel.PrivateAccessTo(type);
+            XamlAccessLevel accessLevel4 = XamlAccessLevel.PrivateAccessTo(type.AssemblyQualifiedName);
+            AssemblyName an = accessLevel.AssemblyAccessToAssemblyName;
+        }
+    }
+}