Imported Upstream version 5.10.0.47

Former-commit-id: d0813289fa2d35e1f8ed77530acb4fb1df441bc0
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-01-24 17:04:36 +00:00
parent 88ff76fe28
commit e46a49ecf1
5927 changed files with 226314 additions and 129848 deletions

View File

@@ -12,6 +12,7 @@ namespace System.Configuration.Internal {
using System.Threading;
using System.Security;
using System.CodeDom.Compiler;
using System.Xml;
//
// A public implementation of IInternalConfigHost that simply
@@ -30,15 +31,23 @@ namespace System.Configuration.Internal {
// * It allows straightforward chaining of host functionality,
// see UpdateConfigHost as an example.
//
public class DelegatingConfigHost : IInternalConfigHost {
public class DelegatingConfigHost : IInternalConfigHost, IInternalConfigurationBuilderHost {
IInternalConfigHost _host;
IInternalConfigurationBuilderHost _configBuilderHost;
protected DelegatingConfigHost() {}
// The host that is delegated to.
protected IInternalConfigHost Host {
get {return _host;}
set {_host = value;}
set {
_host = value;
_configBuilderHost = _host as IInternalConfigurationBuilderHost;
}
}
protected IInternalConfigurationBuilderHost ConfigBuilderHost {
get { return _configBuilderHost; }
}
public virtual void Init(IInternalConfigRoot configRoot, params object[] hostInitParams) {
@@ -226,6 +235,22 @@ namespace System.Configuration.Internal {
}
}
public virtual XmlNode ProcessRawXml(XmlNode rawXml, ConfigurationBuilder builder) {
if (ConfigBuilderHost != null) {
return ConfigBuilderHost.ProcessRawXml(rawXml, builder);
}
return rawXml;
}
public virtual ConfigurationSection ProcessConfigurationSection(ConfigurationSection configSection, ConfigurationBuilder builder) {
if (ConfigBuilderHost != null) {
return ConfigBuilderHost.ProcessConfigurationSection(configSection, builder);
}
return configSection;
}
}
}

View File

@@ -18,11 +18,12 @@ namespace System.Configuration.Internal {
using System.Security.Permissions;
using System.Security.Policy;
using System.Threading;
using System.Xml;
//
// An IInternalConfigHost with common implementations of some file functions.
//
internal sealed class InternalConfigHost : IInternalConfigHost {
internal sealed class InternalConfigHost : IInternalConfigHost, IInternalConfigurationBuilderHost {
private IInternalConfigRoot _configRoot;
internal InternalConfigHost() {
@@ -446,6 +447,21 @@ namespace System.Configuration.Internal {
}
}
XmlNode IInternalConfigurationBuilderHost.ProcessRawXml(XmlNode rawXml, ConfigurationBuilder builder) {
if (builder != null) {
return builder.ProcessRawXml(rawXml);
}
return rawXml;
}
ConfigurationSection IInternalConfigurationBuilderHost.ProcessConfigurationSection(ConfigurationSection configSection, ConfigurationBuilder builder) {
if (builder != null) {
return builder.ProcessConfigurationSection(configSection);
}
return configSection;
}
}
}

View File

@@ -28,11 +28,12 @@ namespace System.Configuration.Internal {
// taken begin with the prefix "hl", for example, "hlFindConfigRecord".
//
internal sealed class InternalConfigRoot : IInternalConfigRoot {
IInternalConfigHost _host; // host, need to create records
ReaderWriterLock _hierarchyLock; // lock to protect hierarchy
IInternalConfigHost _host; // host, need to create records
IInternalConfigurationBuilderHost _configBuilderHost; // _configBuilderHost, need to create records
ReaderWriterLock _hierarchyLock; // lock to protect hierarchy
BaseConfigurationRecord _rootConfigRecord; // root config record, one level above machine.config.
bool _isDesignTime; // Is the hierarchy for runtime or designtime?
private Configuration _CurrentConfiguration = null;
private Configuration _CurrentConfiguration = null;
public event InternalConfigEventHandler ConfigChanged;
public event InternalConfigEventHandler ConfigRemoved;
@@ -45,6 +46,7 @@ namespace System.Configuration.Internal {
void IInternalConfigRoot.Init(IInternalConfigHost host, bool isDesignTime) {
_host = host;
_configBuilderHost = host as IInternalConfigurationBuilderHost;
_isDesignTime = isDesignTime;
_hierarchyLock = new ReaderWriterLock();
@@ -61,6 +63,10 @@ namespace System.Configuration.Internal {
get {return _host;}
}
internal IInternalConfigurationBuilderHost ConfigBuilderHost {
get { return _configBuilderHost; }
}
internal BaseConfigurationRecord RootConfigRecord {
get {return _rootConfigRecord;}
}