Make changes for System.Xml merge into mono tree.
authorAtsushi Eno <atsushieno@gmail.com>
Tue, 6 Jan 2015 07:50:55 +0000 (16:50 +0900)
committerMarek Safar <marek.safar@gmail.com>
Mon, 2 May 2016 22:07:55 +0000 (00:07 +0200)
DISABLE_CAS_USE is required to avoid NotImplementedExceptions in CAS land.

MONO_HYBRID_XML is to preserve Mono's XmlSerializer which also allows
interpreter-based XML serialization (as opposed to run-time code generation
based XML serialization, which is not doable in iOS).

Though some Xml.Serialization classes are useful even with mono
implementation, so we partially import them (namely schema importer).

mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XPathConvert.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/Scripts.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/Compiler.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlConfiguration.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/ImportContext.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSchemas.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlSecureResolver.cs
mcs/class/referencesource/System.Xml/misc/PrivilegedConfigurationManager.cs

index 5d2c9671e25202cf3955add6c7ae0019412ac4f7..3da6285802412e9b02a79d4e157e1c084410e0de 100644 (file)
@@ -915,6 +915,8 @@ namespace System.Xml.Xsl {
                 Uses big integer arithmetic to get the sequence of digits.
             */
             public static void DblToRgbPrecise(double dbl, byte[] mantissa, out int exponent, out int mantissaSize) {
+                exponent = 0;
+                mantissaSize = 0;
                 BigInteger biNum = new BigInteger();
                 BigInteger biDen = new BigInteger();
                 BigInteger biHi  = new BigInteger();
index a5ea461c05044d25ecf5afc0adbcf81488c9035d..45359ba4bf30ae6de01a13539c6c8a38640d8936 100644 (file)
@@ -111,6 +111,7 @@ namespace System.Xml.Xsl.Xslt {
         }
 
         public ScriptClass GetScriptClass(string ns, string language, IErrorHelper errorHelper) {
+#if CONFIGURATION_DEP
             CompilerInfo compilerInfo;
             try {
                 compilerInfo = CodeDomProvider.GetCompilerInfo(language);
@@ -137,6 +138,9 @@ namespace System.Xml.Xsl.Xslt {
             newScriptClass.typeDecl.TypeAttributes = TypeAttributes.Public;
             scriptClasses.Add(newScriptClass);
             return newScriptClass;
+#else
+           return null;
+#endif
         }
 
         //------------------------------------------------
index 1af4378a437c231bd90af50e0a55d626a59f100b..b1bf9f9f1538ea570ee8e513cb6fed66e98d2ae3 100644 (file)
@@ -164,6 +164,9 @@ namespace System.Xml.Xsl.XsltOld {
         // The World of Compile
         //
         internal void Compile(NavigatorInput input, XmlResolver xmlResolver, Evidence evidence) {
+#if DISABLE_CAS_USE
+            evidence = null;
+#endif
             Debug.Assert(input != null);
             Debug.Assert(xmlResolver != null);
 //            Debug.Assert(evidence    != null); -- default evidence is null now
index 4d34f9e4c897cab6e32e45b524b5674c44e3097c..3f1594832f4cd1a46fb44dd5693ed5708745a63a 100644 (file)
@@ -1,9 +1,10 @@
-
 using System;
-using System.Configuration;
 using System.Globalization;
 using System.Xml;
 
+#if CONFIGURATION_DEP
+using System.Configuration;
+
 namespace System.Xml.XmlConfiguration {
     internal static class XmlConfigurationString {
         internal const string XmlReaderSectionName = "xmlReader";
@@ -139,3 +140,20 @@ namespace System.Xml.XmlConfiguration {
         }
     }
 }
+#else
+namespace System.Xml.XmlConfiguration {
+    public sealed class XsltConfigSection {
+        internal static XmlResolver CreateDefaultResolver() {
+               return XmlNullResolver.Singleton;
+        }
+        internal static bool EnableMemberAccessForXslCompiledTransform = false;
+       internal static bool LimitXPathComplexity = true;
+    }
+    public sealed class XmlReaderSection {
+        internal static XmlResolver CreateDefaultResolver() {
+               return null;
+        }
+       internal static bool ProhibitDefaultUrlResolver = false;
+    }
+}
+#endif
index 7a4bd83ad4119af9118d5caf12f26c14561b991d..b4691e75a0fc48b38d126759096a744e0a9a4723 100644 (file)
@@ -14,6 +14,7 @@ namespace System.Xml.Serialization {
     using System.Collections;
     using System.Collections.Specialized;
 
+#if !MONO_HYBRID_SYSTEM_XML
     public class ImportContext {
         bool shareTypes;
         SchemaObjectCache cache; // cached schema top-level items
@@ -83,6 +84,7 @@ namespace System.Xml.Serialization {
             get { return Cache.Warnings; }
         }
     }
+#endif
 
     internal class SchemaObjectCache {
         Hashtable graph;
index eef8682e72710c7653c96659c248a9b5234d0a09..1896703f555f77940db1ea08a9f2b2b0377d4ced 100644 (file)
@@ -276,9 +276,13 @@ namespace System.Xml.Serialization {
         }
         internal object Find(XmlQualifiedName name, Type type, bool checkCache) {
             if (!IsCompiled) {
+#if MONO_HYBRID_SYSTEM_XML
+                 Compile (null, true);
+#else
                  foreach (XmlSchema schema in List) {
                     Preprocess(schema);
                 }
+#endif
             }
             IList values = (IList)SchemaSet.Schemas(name.Namespace);
             if (values == null) return null;
index b5b795ca716413ef212df421a29dff9a2cd12d6e..9c32344ab3b1f02abef18db94ac701a4d2a1f93e 100644 (file)
@@ -19,7 +19,11 @@ namespace System.Xml {
 
         public XmlSecureResolver(XmlResolver resolver, string securityUrl) : this(resolver, CreateEvidenceForUrl(securityUrl)) {}
 
+#if DISABLE_CAS_USE
+        public XmlSecureResolver(XmlResolver resolver, Evidence evidence) : this(resolver, new PermissionSet (PermissionState.None)) {}
+#else
         public XmlSecureResolver(XmlResolver resolver, Evidence evidence) : this(resolver, SecurityManager.GetStandardSandbox(evidence)) {}
+#endif
 
         public XmlSecureResolver(XmlResolver resolver, PermissionSet permissionSet) {
             this.resolver = resolver;
@@ -43,6 +47,7 @@ namespace System.Xml {
 
         public static Evidence CreateEvidenceForUrl(string securityUrl) {
             Evidence evidence = new Evidence();
+#if !DISABLE_CAS_USE
             if (securityUrl != null && securityUrl.Length > 0) {
                 evidence.AddHostEvidence(new Url(securityUrl));
                 evidence.AddHostEvidence(Zone.CreateFromUrl(securityUrl));
@@ -59,6 +64,7 @@ namespace System.Xml {
                     }
                 }
             }
+#endif
             return evidence;
         }
 
index 63e04f244b54519df5e1b288bfbcd87fa3d51731..e15b1aa4b5f4c209fac6cfedf17c6e296bb2899a 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //------------------------------------------------------------------------------
 
-
+#if CONFIGURATION_DEP
 namespace System.Configuration {
 
     using System.Collections.Specialized;
@@ -25,3 +25,4 @@ namespace System.Configuration {
         }
     }
 }
+#endif