Predictor::PreconnectUrlAndSubresources() is called with url = "chrome-native://newtab/".
Predictor::CanonicalizeUrl(url) will return an empty GURL because chrome-native:// is neither http nor https. Predictor then passes that empty url to net::HttpStreamFactory::PreconnectStreams(). crrev.com/2882763002 is a CL that shows this behavior when running NTP Java tests on linux_android_rel_ng bot (the DCHECK(!canonicalized_url.is_empty()) will fail).
Passing an empty url to HttpStreamFactory is bad, because HttpStreamFactory layer and lower assume that the url is valid.
Not sure why we are preconnecting to chrome-native://newtab, but we should fix Predictor to not pass along empty urls.
This is blocking a refactoring that I am doing, so I will upload a patch.
Comment 1 by bugdroid1@chromium.org
, May 15 2017