#include "shared_url_loader_factory_efl.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/network_context_client_base.h"
#include "content/public/browser/network_service_instance.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/remote.h"
+#include "mojo/public/cpp/bindings/self_owned_receiver.h"
+#include "services/cert_verifier/public/mojom/cert_verifier_service_factory.mojom.h"
#include "services/network/public/cpp/cross_thread_pending_shared_url_loader_factory.h"
namespace content {
/* LCOV_EXCL_START */
network::mojom::NetworkContextParamsPtr CreateNetworkContextParams() {
- return network::mojom::NetworkContextParams::New();
+ auto context_params = network::mojom::NetworkContextParams::New();
+ context_params->file_paths = network::mojom::NetworkContextFilePaths::New();
+ context_params->cert_verifier_params = GetCertVerifierParams(
+ cert_verifier::mojom::CertVerifierCreationParams::New());
+ return context_params;
}
void SharedURLLoaderFactoryEfl::CreateLoaderAndStart(
}
network::mojom::NetworkContext* SharedURLLoaderFactoryEfl::GetContext() {
- if (!network_service_network_context_ ||
- !network_service_network_context_.is_connected()) {
- // This should call into OnNetworkServiceCreated(), which will re-create
- // the network service, if needed. There's a chance that it won't be
- // invoked, if the NetworkContext has encountered an error but the
- // NetworkService has not yet noticed its pipe was closed. In that case,
- // trying to create a new NetworkContext would fail, anyways, and hopefully
- // a new NetworkContext will be created on the next GetContext() call.
- content::GetNetworkService();
- DCHECK(network_service_network_context_);
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ if (!network_context_ || !network_context_.is_connected()) {
+ network_context_.reset();
+
+ content::CreateNetworkContextInNetworkService(
+ network_context_.BindNewPipeAndPassReceiver(),
+ CreateNetworkContextParams());
+
+ mojo::PendingRemote<network::mojom::NetworkContextClient> client_remote;
+ mojo::MakeSelfOwnedReceiver(
+ std::make_unique<content::NetworkContextClientBase>(),
+ client_remote.InitWithNewPipeAndPassReceiver());
+ network_context_->SetClient(std::move(client_remote));
}
- return network_service_network_context_.get();
+
+ return network_context_.get();
}
network::mojom::URLLoaderFactory*
namespace content {
/* LCOV_EXCL_START */
-// SharedURLLoaderFactory its network context. Transparently handles crashes.
class SharedURLLoaderFactoryEfl : public network::SharedURLLoaderFactory {
public:
- SharedURLLoaderFactoryEfl() {}
+ SharedURLLoaderFactoryEfl() = default;
- // network::mojom::URLLoaderFactory implementation
+ // network::URLLoaderFactory implementation:
void CreateLoaderAndStart(mojo::PendingReceiver<network::mojom::URLLoader> receiver,
int32_t request_id,
uint32_t options,
traffic_annotation) override;
void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) override;
- // network::SharedURLLoaderFactory implementation
+ // network::SharedURLLoaderFactory implementation:
std::unique_ptr<network::PendingSharedURLLoaderFactory> Clone() override;
// Returns the System NetworkContext. May only be called after SetUp(). Does
// NetworkContext using the network service, if the network service is
// enabled. mojo::NullRemote(), otherwise.
- mojo::Remote<network::mojom::NetworkContext> network_service_network_context_;
+ mojo::Remote<network::mojom::NetworkContext> network_context_;
mojo::Remote<network::mojom::URLLoaderFactory> url_loader_factory_;
};