1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98

ash / components / arc / mojom / policy.mojom [blame]

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Next MinVersion: 8

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.
};

// Deprecated method IDs: 2,3,4,5,6
// Next Method ID: 9
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 the version of ARC DPC.
  [MinVersion=6] ReportDPCVersion@7(string version);

  // Reports that a PlayStore local policy was set.
  [MinVersion=7] ReportPlayStoreLocalPolicySet@8(
      mojo_base.mojom.Time time, array<string> package_names);
};

// Deprecated method IDs: 0
// Next Method ID: 4
interface PolicyInstance {
  // Establishes full-duplex communication with the host.
  [MinVersion=2] Init@2(pending_remote<PolicyHost> host_remote) => ();

  // 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);
};