 
            On Wed Oct 8 13:52:49 2025 +0000, Zhiyi Zhang wrote:
We could. But the behavior is slightly different. For example, uri_factory_CreateUri() has a similar behavior as CreateUri(..., Uri_CREATE_NO_DECODE_EXTRA_INFO | Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME | Uri_CREATE_NO_CANONICALIZE, ...). The Uri_CREATE_NO_CANONICALIZE will cause the absolute URI of "http://example.com" to be "http://example.com" while IUriRuntimeClass adds an "/" at the end and becomes "http://example.com/". So if we want to reuse CreateUri(), we will need to reconstruct the absolute URI from each component. However, to reconstruct the absolute URI, there is a bit of information missing. For example, in "http://user:@example.com", we need to know if there is a ":" after "user". So we still need to parse the scheme and authority to know that. Thus, we could end up having some URI parsing logic in IUriRuntimeClass() with the main parsing happening in CreateUri(). I am afraid that there might be more inconsistencies, and there is no evidence of that IUriRuntimeClass actually uses IUri, so I decided to have a dedicated parser for IUriRuntimeClass.
Looking at ierturil exports, there are things like `CreateIUriBuilder`, so it seems likely that `IUri` implementation should be moved from urlmon to iertutil. We could then use the same parser with different frontends.