Placeholder URL is used to insert a WKBackForwardList item for native content (e.g. NTP, native error page) and WebUI. See go/bling-navigation-experiment.
Several hacks have been added and need rethinking through:
1) WebStateImpl: omits OnNavigation(Started|Finished) callbacks when NavigationContext::GetUrl() returns placeholder URL.
2) CRWWebController |loadNativeErrorForNavigationItem:| changes NavigationContext URL from placeholder to non-placeholder to force WebStateObserver callbacks for native error.
1) is needed to make sure WebUI and |loadCurrentURLInNativeView| don't generate two sets of navigation callbacks. However, for native error view, the navigation finish / loading stopped callbacks are never generated on the initial navigation so must be done when the native error view is presented upon the completion of the placeholder navigation.
There is no inherent reason why the code paths for the three cases can't be unified.
Comment 1 by sheriffbot@chromium.org
, Yesterday (46 hours ago)Status: Untriaged (was: Available)