blob: 1665c79520671d7d0526522daa6e5bce51606d09 [file] [log] [blame]
// 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: 19
module arc.mojom;
import "mojo/public/mojom/base/time.mojom";
import "components/arc/mojom/anr.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;
};
// Describes a GFX metrics.
struct GfxMetrics {
// Total frames rendered, it includes janky frames below.
uint64 framesTotal;
// Janky frames.
uint64 framesJanky;
// Maximum frame time in milliseconds of 95% of frames sorted from the
// shortest to longest.
uint32 frameTimePercentile95;
};
[Extensible]
enum NativeBridgeType {
// Native bridge is not used.
NONE = 0,
// Using houdini translator.
HOUDINI = 1,
// Using ndk-translation translator.
NDK_TRANSLATION = 2,
};
// ChromeOS companion library provide window management functionality to the
// application running on ARC++. This enum list all functionality of it, for
// collect statistics information of it by UMA stat.
[Extensible]
enum CompanionLibApiId {
// If the companion library version doesn't support an API call,
// the API call will be recorded as UNSUPPORTED.
UNSUPPORTED = 0,
// com.google.android.chromeos.ChromeOsDeviceInformation
GET_DEVICE_MODE = 1,
GET_DISPLAY_TOPOLOGY = 2,
GET_PRIMARY_DISPLAY_ID = 3,
GET_WORKSPACE_INSETS = 4,
REGISTER_CALLBACK = 5,
UNREGISTER_CALLBACK = 6,
// com.google.android.chromeos.activity.ChromeOsTaskManagement
ACTIVATE_TASK = 7,
GET_CAPTION_HEIGHT = 8,
GET_HIDDEN_CAPTION_BUTTON = 9,
HIDE_CAPTION_BUTTON = 10,
GET_TASK_WINDOW_BOUNDS = 11,
GET_TASK_WINDOW_STATE = 12,
IS_SHADOW_HIDDEN = 13,
HIDE_SHADOW = 14,
ON_CLOSE_REQUEST_RESPONSE = 15,
SET_ON_CLOSE_REQUEST_HANDLER = 16,
REMOVE_ON_CLOSE_REQUEST_HANDLER = 17,
SET_TASK_WINDOW_BOUNDS = 18,
SET_TASK_WINDOW_STATE = 19,
// com.google.android.chromeos.activity.TaskWindowState
GET_WINDOW_STATE = 20,
// com.google.android.chromeos.view.WindowInteractionController
WINDOW_INTERACTION_CONTROLLER = 21,
// com.google.android.chromeos.widget.PopupWindow
SET_CLIPPING_TO_TASK_DISABLE = 22,
IS_CLIPPING_TO_TASK_DISABLED = 23,
};
[Extensible]
enum ArcDnsQuery {
// All other hostnames.
OTHER_HOST_NAME = 0,
// android.googleapis.com used by Android checkin.
ANDROID_API_HOST_NAME = 1,
};
// These enum values are persisted to metrics thus must be treated as
// append-only.
[Extensible]
enum ArcNetworkEvent {
kUnknown = 0,
kAndroidLegacyVpnConnection = 1,
kAndroidThirdPartyVpnConnection = 2,
kMojoConfigureAndroidVpn = 3,
kMojoDisconnectAndroidVpn = 4,
kMojoDnsTest = 5,
kMojoHttpTest = 6,
kMojoPingTest = 7,
kWifiScannerClientConnection = 8,
kWifiScannerGetScanResults = 9,
kWifiScannerGetSingleScanResults = 10,
kWifiScannerEnable = 11,
kWifiScannerDisable = 12,
kWifiScannerStartSingleScan = 13,
kWifiScannerStartBackgroundScan = 14,
kWifiScannerStartPnoScan = 15,
kWifiScannerRegisterListener = 16,
kWifiManagerStartScan = 17,
kWifiManagerEnable = 18,
kWifiManagerDisable = 19,
kWifiManagerDisconnect = 20,
kWifiManagerReconnect = 21,
kWifiManagerGetNetworks = 22,
kWifiManagerGetNetworksPrivileged = 23,
kWifiManagerAddNetwork = 24,
kWifiManagerRemoveNetwork = 25,
kWifiManagerEnableNetwork = 26,
kWifiManagerDisableNetwork = 27,
kWifiManagerConnect = 28,
kWifiManagerSave = 29,
kWifiManagerForget = 30,
kWifiManagerRegisterScanListener = 31,
kWifiManagerAddNetworkSuggestions = 32,
[MinVersion=17] kWifiManagerEnableTdls = 33,
[MinVersion=17] kWifiManagerStartLocalHotspot = 34,
[MinVersion=17] kWifiManagerAddPasspointConfiguration = 35,
};
// These enum values are persisted to metrics thus must be treated as
// append-only.
[Extensible]
enum ArcNetworkError {
kUnknown = 0,
kMojoGetNetworksError = 1,
kMojoWifiAddNetworkFailed = 2,
kMojoWifiForgetNetworkFailed = 3,
kMojoWifiConnectFailed = 4,
kMojoWifiDisconnectFailed = 5,
kMojoWifiScanTimeout = 6,
kMojoWifiGetScanResultsFailed = 7,
kNetdGetIpv4Error = 8,
kNetdSetIpv4Error = 9,
kNetdIfaceListError = 10,
kNetdIfaceUpError = 11,
kNetdIfaceMtuError = 12,
kNetdIfaceClearError = 13,
kNetdIfconfigGetError = 14,
kNetdRestartIpv6Error = 15,
kNetdIpForwardingStartError = 16,
kNetdIpForwardingStopError = 17,
kNetdIfaceForwardingStartError = 18,
kNetdIfaceForwardingStopError = 19,
kNetdTetheringStartError = 20,
kNetdTetheringStopError = 21,
kNetdSnatStartError = 22,
kNetdSnatStopError = 23,
};
// Describes the type of app kill being reported.
[Extensible]
enum AppKillType {
LMKD_KILL = 0,
OOM_KILL = 1,
};
// Describes an app kill from ARC instance.
struct AppKill {
// Type of kill being reported.
AppKillType type;
// Number of kills. For LMKD kills, this is always 1. For OOM kills, this is
// the total oom_kill count from /proc/vm_stat.
uint32 count;
};
// Describes the primary ABI for an app
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum AppPrimaryAbi {
kNone = 0,
kArm = 1,
kArm64 = 2,
kX86 = 3,
kX86_64 = 4,
};
// Outlines the various states that can arise while performing Primary ABI
// Migration on a ChromeOS device.
[Extensible]
enum ArcCorePriAbiMigEvent {
// If an unknown event is reported, it will be recorded as UNSUPPORTED.
kUnsupported = 0,
kMigrationCompleted = 1,
kGmsNoDowngrade = 2,
kGmsDowngradeSuccess = 3,
kGmsDowngradeFailure = 4,
kWebviewNoDowngrade = 5,
kWebviewDowngradeSuccess = 6,
kWebviewDowngradeFailure = 7,
};
// Enumerates the types of a clipboard / drag-and-drop event, including its
// direction (ARC to Chrome or Chrome to ARC) and its content type (text or
// an image).
[Extensible]
enum ArcClipboardDragDropEvent {
kTextClipboardFromChrome = 0,
kImageClipboardFromChrome = 1,
kTextClipboardFromArc = 2,
kImageClipboardFromArc = 3,
kTextDragDropFromChrome = 4,
kImageDragDropFromChrome = 5,
kTextDragDropFromArc = 6,
kImageDragDropFromArc = 7,
};
[Extensible]
enum ArcImageCopyPasteCompatAction {
kPasteFromFiles = 0,
kDragFromFiles = 1,
kPasteFromBrowser = 2,
kDragFromBrowser = 3,
};
// Enumerates variations of Low Latency Stylus Library.
[Extensible]
enum LowLatencyStylusLibraryType {
[Default] kUnsupported = 0,
kCPU = 1,
kGPU = 2,
};
// The prediction target set in Low Latency Stylus Library.
struct LowLatencyStylusLibPredictionTarget {
// Variations of Low Latency Stylus Library.
LowLatencyStylusLibraryType type;
// Prediction target set in Low Latency Stylus Library.
uint32 target;
};
// Enumerates the API call from ChromeOS Low-latency stylus library, which
// provides mechanisms to reduce the draw latency for ARC++ app running on
// ChromeOS.
[Extensible]
enum LowLatencyStylusLibApiId {
// If the library version doesn't support an API call, the API
// call will be recorded as UNSUPPORTED.
[Default] kUnsupported = 0,
// com.google.android.chromeos.lowlatencystylus.InkOverlay
kInkOverlayLowLatencyLibInUse = 1,
// com.google.android.chromeos.lowlatencystylus.gpu.GLInkOverlay
kGLInkOverlayLowLatencyLibInUse = 2,
// com.google.android.chromeos.lowlatencystylus.gpu.GLInkRenderer
kGLInkOverlaySetProjectionMatrix = 3,
kGLInkOverlaySetViewMatrix = 4,
};
// Status for migration of the main account hash code from v2 to v3.
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
[Extensible]
enum MainAccountHashMigrationStatus {
// Hash code migration not required.
kHashCodeMigrationNotRequired = 0,
// Hash code migration successful.
kHashCodeMigrationSuccessful = 1,
// Hash code migration failed.
kHashCodeMigrationFailed = 2,
// Hash code migration failed due to multiple acc hash matching.
kHashCodeMigrationFailedDueToMultipleAccounts = 3,
// Hash code migration failed due to multiple acc hash matching.
kHashCodeMigrationFailedDueToNoMatchingAccount = 4,
// NOTE: If you add any entries to this enum, you must also update the
// corresponding UMA ArcMainAccountHashMigrationStatus at
// tools/metrics/histograms/enums.xml.
};
// Next method ID: 21
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);
// Reports api usage by ChromeOS Companion Library.
[MinVersion=4] ReportCompanionLibApiUsage@2(CompanionLibApiId api_id);
// Reports LMKD and OOM kills from ARC.
[MinVersion=6] ReportAppKill@3(AppKill app_kill);
// Reports migration event by ARC Metrics Service.
[MinVersion=7] ReportArcCorePriAbiMigEvent@4(ArcCorePriAbiMigEvent event);
// Reports number of failed ABI Migration attempts by ARC Metrics Service.
[MinVersion=7] ReportArcCorePriAbiMigFailedTries@5(uint32 failed_attempts);
// Reports ABI Migration system packages downgrade delay by ArcMetricsService.
[MinVersion=7] ReportArcCorePriAbiMigDowngradeDelay@6(mojo_base.mojom.TimeDelta delay);
// Reports boot time during ABI Migration by ARC Metrics Service.
[MinVersion=7] ReportArcCorePriAbiMigBootTime@7(mojo_base.mojom.TimeDelta duration);
// Reports a clipboard / drag-and-drop event.
[MinVersion=8] ReportClipboardDragDropEvent@8(
ArcClipboardDragDropEvent event_type);
// Reports ANR event.
[MinVersion=9] ReportAnr@10(Anr anr);
// Reports System Health upgrade processing time and if any packages were
// deleted during the upgrade.
[MinVersion=10] ReportArcSystemHealthUpgrade@11(
mojo_base.mojom.TimeDelta duration,
bool packages_deleted);
// Reports api usage of Low-latency Stylus Library.
[MinVersion=11] ReportLowLatencyStylusLibApiUsage@12
(LowLatencyStylusLibApiId api_id);
// Reports prediction target used in Low-latency Stylus Library.
[MinVersion=11] ReportLowLatencyStylusLibPredictionTarget@13(
LowLatencyStylusLibPredictionTarget prediction_target);
// Reports the metrics to perform the entire fixup for P to R upgrade: the
// duration, the number of fixed directories, and the number of apps that
// contains at least one file or directory that is failed to be fixed.
[MinVersion=12] ReportEntireFixupMetrics@14(
mojo_base.mojom.TimeDelta duration,
uint32 number_of_directories,
uint32 number_of_failures);
// Reports the metrics to perform fixup per app for P to R upgrade: the
// duration and the number of fixed directories.
[MinVersion=12] ReportPerAppFixupMetrics@15(
mojo_base.mojom.TimeDelta duration,
uint32 number_of_directories);
// Reports the result of DNS query inside ARC.
[MinVersion=13] ReportDnsQueryResult@16(
ArcDnsQuery query,
bool success);
// Reports main account hash migration status.
[MinVersion=14] ReportMainAccountHashMigrationMetrics@17(
MainAccountHashMigrationStatus status);
// Reports the operation type (copy & paste or drag & drop) and the source of
// the image (from browser or Files app) when image copy-paste app compat is
// triggered.
// Image copy-paste app compat is a feature that allows insertion of images to
// Android apps through commitContent IME API or Android intent, when the app
// don't support images in the clipboard.
[MinVersion=15] ReportImageCopyPasteCompatAction@18(
ArcImageCopyPasteCompatAction action_type);
// Reports occurrence of one event in the ARC networking stack.
[MinVersion=16] ReportArcNetworkEvent@19(ArcNetworkEvent event);
// Reports occurrence of one error in the ARC networking stack.
[MinVersion=16] ReportArcNetworkError@20(ArcNetworkError error);
// Reports primary ABI of an app during app launch.
[MinVersion=18] ReportAppPrimaryAbi@21(AppPrimaryAbi abi);
};
// Next method ID: 3
interface MetricsInstance {
// DEPRECATED: Please use Init@1 instead.
InitDeprecated@0(pending_remote<MetricsHost> host_remote);
// Establishes full-duplex communication with the host.
[MinVersion=2] Init@1(pending_remote<MetricsHost> host_remote) => ();
// Requests GFX metrics for the specified package. In case of error, null is
// returned.
[MinVersion=5] GetGfxMetrics@2(string packageName) => (GfxMetrics? metrics);
};