/// <include file='doc\ControlParser.uex' path='docs/doc[@for="ControlParser.ParseTemplate1"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public static ITemplate ParseTemplate(IDesignerHost designerHost, string templateText, string directives) { if ((designerHost == null) || (templateText == null) || (templateText.Length == 0)) { throw new ArgumentNullException(); } bool stripOutDirectives = false; string parseText = templateText; if ((directives != null) && (directives.Length != 0)) { parseText = directives + templateText; stripOutDirectives = true; } DesignTimeParseData parseData = new DesignTimeParseData(designerHost, parseText); parseData.DataBindingHandler = GlobalDataBindingHandler.Handler; ITemplate parsedTemplate = null; lock (typeof(LicenseManager)) { LicenseContext originalContext = LicenseManager.CurrentContext; try { LicenseManager.CurrentContext = new WebFormsDesigntimeLicenseContext(designerHost); LicenseManager.LockContext(licenseManagerLock); parsedTemplate = DesignTimeTemplateParser.ParseTemplate(parseData); } catch (TargetInvocationException e) { Debug.Assert(e.InnerException != null); throw e.InnerException; } finally { LicenseManager.UnlockContext(licenseManagerLock); LicenseManager.CurrentContext = originalContext; } } if ((parsedTemplate != null) && stripOutDirectives) { // The parsed template contains all the text sent to the parser // which includes the register directives. // We don't want to have these directives end up in the template // text. Unfortunately, theres no way to pass them as a separate // text block to the parser, so we'll have to do some fixup here. Debug.Assert(parsedTemplate is TemplateBuilder, "Unexpected type of ITemplate implementation."); if (parsedTemplate is TemplateBuilder) { ((TemplateBuilder)parsedTemplate).Text = templateText; } } return(parsedTemplate); }
public void ParseTheme_Deny_ControlThread() { try { DesignTimeTemplateParser.ParseTheme(null, "theme", "path"); } catch (Exception) { // security exception gets hidden :-( Assert.Ignore("security exception gets hidden :-("); } }
/// <include file='doc\ControlParser.uex' path='docs/doc[@for="ControlParser.ParseControl1"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public static Control ParseControl(IDesignerHost designerHost, string controlText, string directives) { if ((designerHost == null) || (controlText == null) || (controlText.Length == 0)) { throw new ArgumentNullException(); } if ((directives != null) && (directives.Length != 0)) { controlText = directives + controlText; } DesignTimeParseData parseData = new DesignTimeParseData(designerHost, controlText); parseData.DataBindingHandler = GlobalDataBindingHandler.Handler; Control parsedControl = null; lock (typeof(LicenseManager)) { LicenseContext originalContext = LicenseManager.CurrentContext; try { LicenseManager.CurrentContext = new WebFormsDesigntimeLicenseContext(designerHost); LicenseManager.LockContext(licenseManagerLock); parsedControl = DesignTimeTemplateParser.ParseControl(parseData); } catch (TargetInvocationException e) { Debug.Assert(e.InnerException != null); throw e.InnerException; } finally { LicenseManager.UnlockContext(licenseManagerLock); LicenseManager.CurrentContext = originalContext; } } return(parsedControl); }
public void ParseTemplate_PermitOnly_ControlThreadUnmanagedCode() { DesignTimeTemplateParser.ParseTemplate(dtpd); }
public void ParseTemplate_Deny_UnmanagedCode() { DesignTimeTemplateParser.ParseTemplate(dtpd); }
public void ParseTemplate_Deny_ControlThread() { DesignTimeTemplateParser.ParseTemplate(dtpd); }
public void ParseControl_Deny_UnmanagedCode() { DesignTimeTemplateParser.ParseControl(dtpd); }
public void ParseTheme_PermitOnly_ControlThread() { DesignTimeTemplateParser.ParseTheme(null, "theme", "path"); }