// 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 data_reduction_proxy.mojom;

import "mojo/public/mojom/base/time.mojom";
import "services/network/public/mojom/proxy_config.mojom";
import "services/proxy_resolver/public/mojom/proxy_resolver.mojom";

struct DataReductionProxyServer {
  proxy_resolver.mojom.ProxyServer proxy_server;
  bool is_core;
};

// Configuration that is synchronized to the
// DataReductionProxyURLLoaderThrottle.
struct DataReductionProxyThrottleConfig {
  // The currently configured proxies.
  array<DataReductionProxyServer> proxies_for_http;
};

interface DataReductionProxyThrottleConfigObserver {
  OnThrottleConfigChanged(DataReductionProxyThrottleConfig config);
};

// Interface used by URLLoaderThrottles (which may be running in a renderer)
// to interact with the Data Reduction Proxy settings (which may be implemented
// by the the browser/network service process).
interface DataReductionProxy {
  // Marks the given Data Reduction Proxies as temporarily bad,
  // so they are bypassed for some period of time
  // |bypass_duration|.
  MarkProxiesAsBad(mojo_base.mojom.TimeDelta bypass_duration,
                   network.mojom.ProxyList bad_proxies) => ();

  AddThrottleConfigObserver(DataReductionProxyThrottleConfigObserver observer);

  Clone(DataReductionProxy& request);
};
