1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 5 using Mono.Linker; 6 using Mono.Linker.Steps; 7 8 using Mono.Cecil; 9 10 namespace Mono.Tuner { 11 12 public class RemoveSecurity : BaseSubStep { 13 14 public override SubStepTargets Targets { 15 get { 16 return SubStepTargets.Assembly 17 | SubStepTargets.Type 18 | SubStepTargets.Method; 19 } 20 } 21 IsActiveFor(AssemblyDefinition assembly)22 public override bool IsActiveFor (AssemblyDefinition assembly) 23 { 24 return Annotations.GetAction (assembly) == AssemblyAction.Link; 25 } 26 ProcessAssembly(AssemblyDefinition assembly)27 public override void ProcessAssembly (AssemblyDefinition assembly) 28 { 29 ProcessSecurityProvider (assembly); 30 } 31 ProcessType(TypeDefinition type)32 public override void ProcessType (TypeDefinition type) 33 { 34 ProcessSecurityProvider (type); 35 } 36 ProcessMethod(MethodDefinition method)37 public override void ProcessMethod (MethodDefinition method) 38 { 39 ProcessSecurityProvider (method); 40 } 41 ProcessSecurityProvider(ISecurityDeclarationProvider provider)42 static void ProcessSecurityProvider (ISecurityDeclarationProvider provider) 43 { 44 if (!provider.HasSecurityDeclarations) 45 return; 46 47 provider.SecurityDeclarations.Clear (); 48 } 49 } 50 } 51