blob: 5c1eb8c2be67341955f7076f15ce96638cf38816 [file] [log] [blame]
// Copyright 2018 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.
module network.mojom;
import "mojo/public/mojom/base/time.mojom";
import "services/network/public/mojom/network_types.mojom";
// A client interface that subscribes to network quality change events from
// NetworkQualityEstimatorManager.
interface NetworkQualityEstimatorManagerClient {
// Invoked when there is a change in the network quality. The effective
// connection type is computed by the network quality estimator at regular
// intervals and at certain events (e.g., connection change).
// |http_rtt| is the current estimate of the HTTP RTT. The RTT at the HTTP
// layer measures the time from when the request was sent (this happens after
// the connection is established) to the time when the response headers were
// received. A negative value of |http_rtt| implies that the RTT estimate
// was unavailable.
// |transport_rtt| is the current estimate of the transport layer RTT. The RTT
// at the transport layer provides an aggregate estimate of the transport RTT
// as computed by various underlying TCP and QUIC connections. A negative
// value of |http_rtt| implies that the RTT estimate was unavailable.
// |downlink_bandwidth_kbps| is the current downlink throughput estimate (in
// kilobits per second). A negative value of |downlink_bandwidth_kbps| implies
// that the downlink throughput estimate was unavailable.
OnNetworkQualityChanged(
EffectiveConnectionType type,
mojo_base.mojom.TimeDelta http_rtt,
mojo_base.mojom.TimeDelta transport_rtt,
int32 downlink_bandwidth_kbps);
};
// An interface that broadcasts network quality change events.
interface NetworkQualityEstimatorManager {
// Requests to receive notification when there is a change in the network
// quality.
RequestNotifications(
pending_remote<NetworkQualityEstimatorManagerClient> client);
};