// Copyright 2016 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.
// Next MinVersion: 4

module arc.mojom;

[Extensible]
enum BootType {
  // This is used only for backward compatibility reasons and the value has to
  // be 0.
  UNKNOWN = 0,

  // This is for the very first (opt-in) boot.
  FIRST_BOOT = 1,
  // This is for the first boot after Chrome OS update which also updates the
  // ARC image.
  FIRST_BOOT_AFTER_UPDATE = 2,
  // This is for a regular boot.
  REGULAR_BOOT = 3,
};

// Describes a boot progress event.
struct BootProgressEvent {
  // Name of the boot progress event in Android. Currently there are
  // 11 boot progress events found in Android source repository:
  //   system/core/logcat/event.logtags
  //   frameworks/base/services/core/java/com/android/server/am/
  //       EventLogTags.logtags
  //   frameworks/base/services/core/java/com/android/server/
  //       EventLogTags.logtags
  string event;

  // Timestamp of the event in uptime obtained in ARC. The uptime
  // is from clock source MONOTONIC_CLOCK since Chrome OS boots up.
  // Therefore, we need to calibrate the correct elapsed time of the
  // event by comparing the uptime with the ARC start time from
  // the same clock source MONOTONIC_CLOCK in session manager.
  int64 uptimeMillis;
};

[Extensible]
enum NativeBridgeType {
  // Native bridge is not used.
  NONE = 0,
  // Using houdini translator.
  HOUDINI = 1,
  // Using ndk-translation translator.
  NDK_TRANSLATION = 2,
};

// Next method ID: 2
interface MetricsHost {
  // Reports boot progress events from ARC instance.
  ReportBootProgress@0(array<BootProgressEvent> events,
                       [MinVersion=1] BootType boot_type);

  // Reports native bridge used by ARC instance.
  [MinVersion=3] ReportNativeBridge@1(NativeBridgeType native_bridge_type);
};

// Next method ID: 2
interface MetricsInstance {
  // DEPRECATED: Please use Init@1 instead.
  InitDeprecated@0(MetricsHost host_ptr);

  // Establishes full-duplex communication with the host.
  [MinVersion=2] Init@1(MetricsHost host_ptr) => ();
};
