Ejemplo n.º 1
0
        /// <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 :-(");
     }
 }
Ejemplo n.º 3
0
        /// <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");
 }