When implementing custom network protocol behavior, ensure that modifications are properly scoped to only the intended protocol types and include upstream context documentation. Avoid applying protocol-specific changes broadly across all network protocols, as this can break assumptions and cause unintended side effects.
Key principles:
Example from streaming protocol handling:
// Good: Scoped to streaming custom protocols only
if (IsStreamingCustomProtocol(url)) {
destination_url_data->set_range_supported();
}
// Avoid: Broad application that could break other protocols
destination_url_data->set_range_supported(); // Applied to all protocols
When modifying network service initialization, ensure proper guards are in place:
SystemNetworkContextManager* SystemNetworkContextManager::GetInstance() {
if (!g_system_network_context_manager) {
content::GetNetworkService();
DCHECK(g_system_network_context_manager);
}
return g_system_network_context_manager;
}
This approach prevents breaking buffering assumptions for protocols like file:// URLs while enabling the required functionality for custom streaming protocols that support range requests.
Enter the URL of a public GitHub repository