// Copyright 2017 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 cloud_print.mojom;

import "mojo/public/mojom/base/values.mojom";

// An interface for controlling cloud print running in a service process.
interface CloudPrint {
  // Tell the service process to enable the cloud proxy passing in the OAuth2
  // auth code of a robot account.
  EnableCloudPrintProxyWithRobot(
      string robot_auth_code,
      string robot_email,
      string user_email,
      mojo_base.mojom.DictionaryValue user_settings);

  // Tell the service process to disable the cloud proxy.
  DisableCloudPrintProxy();

  // Gets the current status of the cloud print proxy
  // (whether it is enabled, the email address and the proxy id).
  GetCloudPrintProxyInfo() => (bool enabled, string email, string proxy_id);

  // Gets all available printers.
  GetPrinters() => (array<string> printers);
};
