blob: 714890204521b1fa223795b9a16bccaa658b3664 [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: 6
module arc.mojom;
import "mojo/public/mojom/base/time.mojom";
[Extensible]
//See depot/google3/wireless/android/enterprise/clouddps/proto/clouddps.proto
enum InstallErrorReason {
// If the reason is unspecified, this error should be treated as a
// non-transient error.
REASON_UNSPECIFIED = 0,
// The server didn't get a response from Play in time. The install may
// still succeed or may fail with any error.
TIMEOUT = 1,
// A potentially transient error, for example, the device is not found (due
// to replication delay), or Play was unavailable. A retry in a short amount
// of time is likely to succeed.
TRANSIENT_ERROR = 2,
// The app was not found in Play.
NOT_FOUND = 3,
// The app is incompatible with the device.
NOT_COMPATIBLE_WITH_DEVICE = 4,
// The app has not been approved by the admin.
NOT_APPROVED = 5,
// The app has new permissions that have not been accepted by the admin.
PERMISSIONS_NOT_ACCEPTED = 6,
// The app is not available in the user's country.
NOT_AVAILABLE_IN_COUNTRY = 7,
// There are no more licenses to assign to the user.
NO_LICENSES_REMAINING = 8,
// The enterprise is no longer enrolled with Play for Work or CloudDPC is
// not enabled for the enterprise.
NOT_ENROLLED = 9,
// The user is no longer valid. The user may have been deleted or disabled.
USER_INVALID = 10,
};
// Should be kept in sync with device_management_backend.proto/
// RemoteCommandResult/ResultType.
[Extensible]
enum CommandResultType {
IGNORED = 0, // The command was ignored as obsolete.
FAILURE = 1, // The command could not be executed.
SUCCESS = 2, // The command was successfully executed.
};
// Next Method ID: 7
interface PolicyHost {
// Get policies from Chrome OS, as JSON-encoded dictionary with the policies'
// names as keys and their values as values. The list of possible policies can
// be found in components/policy/resources/policy_templates.json
GetPolicies@0() => (string policies);
// Pass a JSON with policy compliance details that reference fields in
// CloudDps NonComplianceReason. Should return ChromeOS response to the report
// in JSON format as in CloudDps PolicyComplianceReportResponse.
// ChromeOS always returns that it's compliant with the report.
[MinVersion=1] ReportCompliance@1(string request) => (string response);
// Reports that request was sent to CloudDPS for set of packages.
[MinVersion=3] ReportCloudDpsRequested@2(mojo_base.mojom.Time time,
array<string> package_names);
// Reports that successful response was received from CloudDPS for set of
// packages.
[MinVersion=3] ReportCloudDpsSucceeded@3(mojo_base.mojom.Time time,
array<string> package_names);
// Reports that CloudDPS reports an error for packages.
[MinVersion=3] ReportCloudDpsFailed@4(mojo_base.mojom.Time time,
string package_name,
InstallErrorReason reason);
// Reports that packages were scheduled for force installing
// via Play Store directly.
[MinVersion=5] ReportDirectInstall@5(mojo_base.mojom.Time time,
array<string> package_names);
// Reports that CloudDPC is giving up after several retries to
// force install the packages.
[MinVersion=5] ReportForceInstallMainLoopFailed@6(mojo_base.mojom.Time time,
array<string> package_names);
};
// Next Method ID: 4
interface PolicyInstance {
// DEPRECATED: Please use Init@2 instead.
InitDeprecated@0(PolicyHost host_ptr);
// Establishes full-duplex communication with the host.
[MinVersion=2] Init@2(PolicyHost host_ptr) => ();
// Indicates some policies have changed
OnPolicyUpdated@1();
// Forwards a command received from the management server. The payload is
// opaque to Chrome (it contains JSON from the RemoteCommand.payload field for
// the USER_ARC_COMMAND RemoteCommand - cf. device_management_backend.proto).
[MinVersion=4] OnCommandReceived@3(string command)
=> (CommandResultType result);
};