From 94941c936701c7e4c0a2a2cd2528f9bb14043baf Mon Sep 17 00:00:00 2001 From: Vatsan Madhavan Date: Wed, 3 Jul 2019 16:27:05 -0700 Subject: [PATCH] Move XamlAccessLevel to System.Windows.Extensions.dll WPF needs continued access to XamlAccessLevel type. System.Xaml.Permissions.XamlLoadPermission also needs to use XamlAccessLevel. WPF is trying to remove its references to System.Security.Permissions. In order to complete this work, XamlAccessLevel is being moved to System.Windows.Extensions.dll (while leaving XamlLoadPermission in System.Permission.dll as-is). This will allow WindowsDesktop.App to bundle System.Windows.Extensions.dll (but not carry System.Security.Permissions.dll). Commit migrated from https://github.com/dotnet/corefx/commit/758b1bfe0693801c3ac3e1b3b103a3b5e64be14a --- .../ref/System.Security.Permissions.Forwards.cs | 1 + .../ref/System.Security.Permissions.cs | 31 +----------------- .../ref/System.Security.Permissions.csproj | 8 ++++- .../ref/System.Security.Permissions.netcoreapp.cs | 27 +++++++++++++++ .../src/System.Security.Permissions.csproj | 8 +++-- .../tests/PermissionTests.cs | 21 ------------ .../tests/System.Security.Permissions.Tests.csproj | 4 ++- .../tests/XamlLoadPermissionTests.cs | 38 ++++++++++++++++++++++ .../ref/System.Windows.Extensions.cs | 13 ++++++++ .../src/System.Windows.Extensions.csproj | 1 + .../src/System/Xaml/Permissions/XamlAccessLevel.cs | 2 +- .../tests/System.Windows.Extensions.Tests.csproj | 1 + .../tests/XamlAccessLevelTests.cs | 2 +- 13 files changed, 100 insertions(+), 57 deletions(-) create mode 100644 src/libraries/System.Security.Permissions/ref/System.Security.Permissions.netcoreapp.cs create mode 100644 src/libraries/System.Security.Permissions/tests/XamlLoadPermissionTests.cs rename src/libraries/{System.Security.Permissions => System.Windows.Extensions}/src/System/Xaml/Permissions/XamlAccessLevel.cs (96%) rename src/libraries/{System.Security.Permissions => System.Windows.Extensions}/tests/XamlAccessLevelTests.cs (93%) diff --git a/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.Forwards.cs b/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.Forwards.cs index 6b9b7f4..6183ea3 100644 --- a/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.Forwards.cs +++ b/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.Forwards.cs @@ -18,3 +18,4 @@ [assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Security.PermissionSet))] [assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Security.Permissions.PermissionState))] #endif + diff --git a/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.cs b/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.cs index f38b82c..e862fa2 100644 --- a/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.cs +++ b/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.cs @@ -2091,33 +2091,4 @@ 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 allowedAccess) { } - public XamlLoadPermission(System.Security.Permissions.PermissionState state) { } - public XamlLoadPermission(System.Xaml.Permissions.XamlAccessLevel allowedAccess) { } - public System.Collections.Generic.IList 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; } - } -} + diff --git a/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.csproj b/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.csproj index d2b4c99..4372861 100644 --- a/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.csproj +++ b/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.csproj @@ -1,4 +1,4 @@ - + {07CAF142-B259-418E-86EF-C4BD8B50253E} true @@ -9,6 +9,9 @@ + + + @@ -39,4 +42,7 @@ + + + diff --git a/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.netcoreapp.cs b/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.netcoreapp.cs new file mode 100644 index 0000000..5d3c1d7 --- /dev/null +++ b/src/libraries/System.Security.Permissions/ref/System.Security.Permissions.netcoreapp.cs @@ -0,0 +1,27 @@ +// 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. +// ------------------------------------------------------------------------------ +// Changes to this file must follow the http://aka.ms/api-review process. +// ------------------------------------------------------------------------------ + +namespace System.Xaml.Permissions +{ + public sealed partial class XamlLoadPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission + { + public XamlLoadPermission(System.Collections.Generic.IEnumerable allowedAccess) { } + public XamlLoadPermission(System.Security.Permissions.PermissionState state) { } + public XamlLoadPermission(System.Xaml.Permissions.XamlAccessLevel allowedAccess) { } + public System.Collections.Generic.IList 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; } + } +} diff --git a/src/libraries/System.Security.Permissions/src/System.Security.Permissions.csproj b/src/libraries/System.Security.Permissions/src/System.Security.Permissions.csproj index 9d3ca6e..7498d59 100644 --- a/src/libraries/System.Security.Permissions/src/System.Security.Permissions.csproj +++ b/src/libraries/System.Security.Permissions/src/System.Security.Permissions.csproj @@ -1,4 +1,4 @@ - + {07390899-C8F6-4E83-A3A9-6867B8CB46A0} System.Security.Permissions @@ -178,7 +178,8 @@ - + + @@ -228,4 +229,7 @@ + + + diff --git a/src/libraries/System.Security.Permissions/tests/PermissionTests.cs b/src/libraries/System.Security.Permissions/tests/PermissionTests.cs index e1cf80f..8494d5c 100644 --- a/src/libraries/System.Security.Permissions/tests/PermissionTests.cs +++ b/src/libraries/System.Security.Permissions/tests/PermissionTests.cs @@ -7,7 +7,6 @@ using System.Configuration; using System.DirectoryServices; using System.Reflection; using System.Web; -using System.Xaml.Permissions; namespace System.Security.Permissions.Tests { @@ -445,26 +444,6 @@ namespace System.Security.Permissions.Tests } [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()); - 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()); diff --git a/src/libraries/System.Security.Permissions/tests/System.Security.Permissions.Tests.csproj b/src/libraries/System.Security.Permissions/tests/System.Security.Permissions.Tests.csproj index 402e93a..bf3edac 100644 --- a/src/libraries/System.Security.Permissions/tests/System.Security.Permissions.Tests.csproj +++ b/src/libraries/System.Security.Permissions/tests/System.Security.Permissions.Tests.csproj @@ -18,6 +18,8 @@ - + + + diff --git a/src/libraries/System.Security.Permissions/tests/XamlLoadPermissionTests.cs b/src/libraries/System.Security.Permissions/tests/XamlLoadPermissionTests.cs new file mode 100644 index 0000000..cb2e5c8 --- /dev/null +++ b/src/libraries/System.Security.Permissions/tests/XamlLoadPermissionTests.cs @@ -0,0 +1,38 @@ +// 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 Xunit; +using System.Configuration; +using System.DirectoryServices; +using System.Reflection; +using System.Security; +using System.Security.Permissions; +using System.Web; +using System.Xaml.Permissions; + +namespace System.Xaml.Permissions.Tests +{ + public class XamlLoadPermissionTests + { + [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()); + 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(); + } + } +} diff --git a/src/libraries/System.Windows.Extensions/ref/System.Windows.Extensions.cs b/src/libraries/System.Windows.Extensions/ref/System.Windows.Extensions.cs index 581a779..41ebd7d 100644 --- a/src/libraries/System.Windows.Extensions/ref/System.Windows.Extensions.cs +++ b/src/libraries/System.Windows.Extensions/ref/System.Windows.Extensions.cs @@ -133,3 +133,16 @@ namespace System.Security.Cryptography.X509Certificates MultiSelection = 1, } } +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; } + } +} diff --git a/src/libraries/System.Windows.Extensions/src/System.Windows.Extensions.csproj b/src/libraries/System.Windows.Extensions/src/System.Windows.Extensions.csproj index fc4a9bf..c45d8a1 100644 --- a/src/libraries/System.Windows.Extensions/src/System.Windows.Extensions.csproj +++ b/src/libraries/System.Windows.Extensions/src/System.Windows.Extensions.csproj @@ -71,6 +71,7 @@ + diff --git a/src/libraries/System.Security.Permissions/src/System/Xaml/Permissions/XamlAccessLevel.cs b/src/libraries/System.Windows.Extensions/src/System/Xaml/Permissions/XamlAccessLevel.cs similarity index 96% rename from src/libraries/System.Security.Permissions/src/System/Xaml/Permissions/XamlAccessLevel.cs rename to src/libraries/System.Windows.Extensions/src/System/Xaml/Permissions/XamlAccessLevel.cs index 7bea5cf..80b5fef 100644 --- a/src/libraries/System.Security.Permissions/src/System/Xaml/Permissions/XamlAccessLevel.cs +++ b/src/libraries/System.Windows.Extensions/src/System/Xaml/Permissions/XamlAccessLevel.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// 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. diff --git a/src/libraries/System.Windows.Extensions/tests/System.Windows.Extensions.Tests.csproj b/src/libraries/System.Windows.Extensions/tests/System.Windows.Extensions.Tests.csproj index b0836e4..a7eeb64 100644 --- a/src/libraries/System.Windows.Extensions/tests/System.Windows.Extensions.Tests.csproj +++ b/src/libraries/System.Windows.Extensions/tests/System.Windows.Extensions.Tests.csproj @@ -6,6 +6,7 @@ + diff --git a/src/libraries/System.Security.Permissions/tests/XamlAccessLevelTests.cs b/src/libraries/System.Windows.Extensions/tests/XamlAccessLevelTests.cs similarity index 93% rename from src/libraries/System.Security.Permissions/tests/XamlAccessLevelTests.cs rename to src/libraries/System.Windows.Extensions/tests/XamlAccessLevelTests.cs index a1488ee..d321b85 100644 --- a/src/libraries/System.Security.Permissions/tests/XamlAccessLevelTests.cs +++ b/src/libraries/System.Windows.Extensions/tests/XamlAccessLevelTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// 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. -- 2.7.4