PolicyChecker::checkNavigationPolicy() tries to avoid making a delegate callback if the request is null. It does if (equalIgnoringHeaderFields(request, loader->lastCheckedRequest()) || (!request.isNull() && request.url().isEmpty())) { function(argument, request, 0, true); loader->setLastCheckedRequest(request); return; } However, if the request is null i.e. a caller called [WebFrame loadRequest:nil], we should at least make a did fail notification to inform the caller. This can be done by just calling PolicyChecker::continueAfterNavigationPolicy(PolicyUse). The checks in that code will trigger the didFail notification. We do get a didFail notification on mac right now. But that's because of bug 66336. If we fix that, we won't get the failure notification. This bug occurs when we use the CFNetwork based loader.