public void Unrestricted() { VerifyInvariants(s_UnrestrictedPerm, isUnrestricted: true); XamlAccessLevel assemblyAccess = XamlAccessLevel.AssemblyAccessTo(typeof(LoadPermissionTests).Assembly); Assert.IsTrue(s_UnrestrictedPerm.Includes(assemblyAccess)); }
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; }
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)); }
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)); }
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)); }
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(); }
//[CodeAnalysis("AptcaMethodsShouldOnlyCallAptcaMethods")] //Tracking Bug: 29647 internal static object LoadBaml( Stream stream, ParserContext parserContext, object parent, bool closeStream) { object root = null; #if DEBUG_CLR_MEM bool clrTracingEnabled = false; // Use local pass variable to correctly log nested parses. int pass = 0; if (CLRProfilerControl.ProcessIsUnderCLRProfiler && (CLRProfilerControl.CLRLoggingLevel >= CLRProfilerControl.CLRLogState.Performance)) { clrTracingEnabled = true; pass = ++_CLRBamlPass; CLRProfilerControl.CLRLogWriteLine("Begin_BamlParse_{0}", pass); } #endif // DEBUG_CLR_MEM EventTrace.EasyTraceEvent(EventTrace.Keyword.KeywordXamlBaml | EventTrace.Keyword.KeywordPerf, EventTrace.Event.WClientParseBamlBegin, parserContext.BaseUri); if (TraceMarkup.IsEnabled) { TraceMarkup.Trace(TraceEventType.Start, TraceMarkup.Load); } try { // // If the stream contains info about the Assembly that created it, // set StreamCreatedAssembly from the stream instance. // IStreamInfo streamInfo = stream as IStreamInfo; if (streamInfo != null) { parserContext.StreamCreatedAssembly = streamInfo.Assembly; } Baml2006ReaderSettings readerSettings = XamlReader.CreateBamlReaderSettings(); readerSettings.BaseUri = parserContext.BaseUri; readerSettings.LocalAssembly = streamInfo.Assembly; // We do not set OwnsStream = true so the Baml2006Reader will not close the stream. // Calling code is responsible for disposing the stream if (readerSettings.BaseUri == null || String.IsNullOrEmpty(readerSettings.BaseUri.ToString())) { readerSettings.BaseUri = BaseUriHelper.PackAppBaseUri; } var reader = new Baml2006ReaderInternal(stream, new Baml2006SchemaContext(readerSettings.LocalAssembly), readerSettings, parent); // We don't actually use the GeneratedInternalTypeHelper any more. // But for v3 compat, don't allow loading of internals in PT unless there is one. Type internalTypeHelper = null; if (streamInfo.Assembly != null) { try { internalTypeHelper = XamlTypeMapper.GetInternalTypeHelperTypeFromAssembly(parserContext); } // This can perform attribute reflection which will fail if the assembly has unresolvable // attributes. If that happens, just assume there is no helper. catch (Exception e) { if (MS.Internal.CriticalExceptions.IsCriticalException(e)) { throw; } } } if (internalTypeHelper != null) { XamlAccessLevel accessLevel = XamlAccessLevel.AssemblyAccessTo(streamInfo.Assembly); XamlLoadPermission loadPermission = new XamlLoadPermission(accessLevel); loadPermission.Assert(); try { root = WpfXamlLoader.LoadBaml(reader, parserContext.SkipJournaledProperties, parent, accessLevel, parserContext.BaseUri); } finally { CodeAccessPermission.RevertAssert(); } } else { root = WpfXamlLoader.LoadBaml(reader, parserContext.SkipJournaledProperties, parent, null, parserContext.BaseUri); } DependencyObject dObject = root as DependencyObject; if (dObject != null) { dObject.SetValue(BaseUriHelper.BaseUriProperty, readerSettings.BaseUri); } Application app = root as Application; if (app != null) { app.ApplicationMarkupBaseUri = GetBaseUri(readerSettings.BaseUri); } Debug.Assert(parent == null || root == parent); } finally { if (TraceMarkup.IsEnabled) { TraceMarkup.Trace(TraceEventType.Stop, TraceMarkup.Load, root); } EventTrace.EasyTraceEvent(EventTrace.Keyword.KeywordXamlBaml | EventTrace.Keyword.KeywordPerf, EventTrace.Event.WClientParseBamlEnd, parserContext.BaseUri); if (closeStream && stream != null) { stream.Close(); } #if DEBUG_CLR_MEM if (clrTracingEnabled && (CLRProfilerControl.CLRLoggingLevel >= CLRProfilerControl.CLRLogState.Performance)) { CLRProfilerControl.CLRLogWriteLine("End_BamlParse_{0}", pass); } #endif // DEBUG_CLR_MEM } return(root); }
public void AccessLevelCtorUnqualifiedAssemblyName() { XamlAccessLevel.AssemblyAccessTo(new AssemblyName("DRTXaml")); }