// Initializes a new instance of the XmlTextReaderImpl class with the specified arguments.
// This constructor is used when creating XmlTextReaderImpl via XmlReader.Create
internal XmlTextReaderImpl(Stream stream, byte[] bytes, int byteCount, XmlReaderSettings settings, Uri baseUri, string baseUriStr,
XmlParserContext context, bool closeInput)
: this(settings.GetXmlResolver(), settings, context)
{
// get BaseUri from XmlParserContext
if (context != null)
{
if (context.BaseURI != null && context.BaseURI.Length > 0 &&
!UriEqual(baseUri, baseUriStr, context.BaseURI, settings.GetXmlResolver()))
{
if (baseUriStr.Length > 0)
{
Throw(SR.Xml_DoubleBaseUri);
}
Debug.Assert(baseUri == null);
baseUriStr = context.BaseURI;
}
}
_reportedBaseUri = baseUriStr;
_closeInput = closeInput;
_laterInitParam = new LaterInitParam();
_laterInitParam.inputStream = stream;
_laterInitParam.inputBytes = bytes;
_laterInitParam.inputByteCount = byteCount;
_laterInitParam.inputbaseUri = baseUri;
_laterInitParam.inputContext = context;
_laterInitParam.initType = InitInputType.Stream;
if (!settings.Async)
{
//if not set Async flag, finish the init in create stage.
FinishInitStream();
}
else
{
_laterInitParam.useAsync = true;
}
}