blob: dfae788317cad6e287d4a5f2afd714c0faff1c7a [file] [log] [blame]
// Copyright 2019 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 SERVICES_NETWORK_PUBLIC_CPP_LOAD_INFO_UTIL_H_
#define SERVICES_NETWORK_PUBLIC_CPP_LOAD_INFO_UTIL_H_
#include "base/component_export.h"
namespace network {
namespace mojom {
class LoadInfo;
}
// This function returns true if the LoadInfo of |a| is "more interesting"
// than the LoadInfo of |b|. The load that is currently sending the larger
// request body is considered more interesting. If neither request is
// sending a body (Neither request has a body, or any request that has a body
// is not currently sending the body), the request that is further along is
// considered more interesting.
//
// This takes advantage of the fact that the load states are an enumeration
// listed in the order in which they usually occur during the lifetime of a
// request, so states with larger numeric values are generally further along
// toward completion.
//
// For example, by this measure "tranferring data" is a more interesting state
// than "resolving host" because when transferring data something is being
// done that corresponds to changes that the user might observe, whereas
// waiting for a host name to resolve implies being stuck.
COMPONENT_EXPORT(NETWORK_CPP)
bool LoadInfoIsMoreInteresting(const mojom::LoadInfo& a,
const mojom::LoadInfo& b);
} // namespace network
#endif // SERVICES_NETWORK_PUBLIC_CPP_LOAD_INFO_UTIL_H_