blob: 0cc5b52157c2c3d6532c5274a087bffbf358da9d [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_OPENSCREEN_PLATFORM_NETWORK_CONTEXT_H_
#define COMPONENTS_OPENSCREEN_PLATFORM_NETWORK_CONTEXT_H_
#include "base/bind.h"
#include "services/network/public/mojom/network_context.mojom.h"
namespace openscreen_platform {
using NetworkContextGetter =
base::RepeatingCallback<network::mojom::NetworkContext*()>;
void SetNetworkContextGetter(NetworkContextGetter network_context_getter);
bool HasNetworkContextGetter();
// This and all subsequent NetworkContext calls made must obey the thread safety
// requirements of |network_context_getter|. This must be called each time a
// mojom::NetworkContext is needed; any returned pointer should not be stored
// beyond the scope in which it is received.
//
// In Chrome, the |network_context_getter| will always return the NetworkContext
// from the SystemNetworkContextManager; therefore, GetNetworkContext must be
// called on the UI thread.
network::mojom::NetworkContext* GetNetworkContext();
} // namespace openscreen_platform
#endif // COMPONENTS_OPENSCREEN_PLATFORM_NETWORK_CONTEXT_H_