| 716 | } |
| 717 | |
| 718 | void InspectableWebContents::LoadNetworkResource(DispatchCallback callback, |
| 719 | const std::string& url, |
| 720 | const std::string& headers, |
| 721 | int stream_id) { |
| 722 | GURL gurl(url); |
| 723 | if (!gurl.is_valid()) { |
| 724 | base::Value response(base::Value::Type::DICT); |
| 725 | response.GetDict().Set("statusCode", net::HTTP_NOT_FOUND); |
| 726 | std::move(callback).Run(&response); |
| 727 | return; |
| 728 | } |
| 729 | |
| 730 | // Create traffic annotation tag. |
| 731 | net::NetworkTrafficAnnotationTag traffic_annotation = |
| 732 | net::DefineNetworkTrafficAnnotation("devtools_network_resource", R"( |
| 733 | semantics { |
| 734 | sender: "Developer Tools" |
| 735 | description: |
| 736 | "When user opens Developer Tools, the browser may fetch additional " |
| 737 | "resources from the network to enrich the debugging experience " |
| 738 | "(e.g. source map resources)." |
| 739 | trigger: "User opens Developer Tools to debug a web page." |
| 740 | data: "Any resources requested by Developer Tools." |
| 741 | destination: WEBSITE |
| 742 | } |
| 743 | policy { |
| 744 | cookies_allowed: YES |
| 745 | cookies_store: "user" |
| 746 | setting: |
| 747 | "It's not possible to disable this feature from settings." |
| 748 | })"); |
| 749 | |
| 750 | network::ResourceRequest resource_request; |
| 751 | resource_request.url = gurl; |
| 752 | resource_request.site_for_cookies = net::SiteForCookies::FromUrl(gurl); |
| 753 | resource_request.headers.AddHeadersFromString(headers); |
| 754 | |
| 755 | const auto* const protocol_registry = ProtocolRegistry::FromBrowserContext( |
| 756 | GetDevToolsWebContents()->GetBrowserContext()); |
| 757 | NetworkResourceLoader::URLLoaderFactoryHolder url_loader_factory; |
| 758 | if (gurl.SchemeIsFile()) { |
| 759 | mojo::PendingRemote<network::mojom::URLLoaderFactory> pending_remote = |
| 760 | AsarURLLoaderFactory::Create(); |
| 761 | url_loader_factory = network::SharedURLLoaderFactory::Create( |
| 762 | std::make_unique<network::WrapperPendingSharedURLLoaderFactory>( |
| 763 | std::move(pending_remote))); |
| 764 | } else if (const auto* const protocol_handler = |
| 765 | protocol_registry->FindRegistered(gurl.scheme())) { |
| 766 | auto* browser_context = static_cast<ElectronBrowserContext*>( |
| 767 | GetDevToolsWebContents()->GetBrowserContext()); |
| 768 | url_loader_factory = network::SharedURLLoaderFactory::Create( |
| 769 | std::make_unique<network::WrapperPendingSharedURLLoaderFactory>( |
| 770 | ElectronURLLoaderFactory::Create(protocol_handler->first, |
| 771 | protocol_handler->second, |
| 772 | browser_context->GetWeakPtr()))); |
| 773 | } else { |
| 774 | auto* partition = GetDevToolsWebContents() |
| 775 | ->GetBrowserContext() |
nothing calls this directly
no test coverage detected