1 // 2 // Copyright (C) 2017 The Android Open Source Project 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 17 #ifndef UPDATE_ENGINE_METRICS_CONSTANTS_H_ 18 #define UPDATE_ENGINE_METRICS_CONSTANTS_H_ 19 20 namespace chromeos_update_engine { 21 22 namespace metrics { 23 // The possible outcomes when checking for updates. 24 // 25 // This is used in the UpdateEngine.Check.Result histogram. 26 enum class CheckResult { 27 kUpdateAvailable, // Response indicates an update is available. 28 kNoUpdateAvailable, // Response indicates no updates are available. 29 kDownloadError, // Error downloading response from Omaha. 30 kParsingError, // Error parsing response. 31 kRebootPending, // No update check was performed a reboot is pending. 32 33 kNumConstants, 34 kUnset = -1 35 }; 36 37 // Possible ways a device can react to a new update being available. 38 // 39 // This is used in the UpdateEngine.Check.Reaction histogram. 40 enum class CheckReaction { 41 kUpdating, // Device proceeds to download and apply update. 42 kIgnored, // Device-policy dictates ignoring the update. 43 kDeferring, // Device-policy dictates waiting. 44 kBackingOff, // Previous errors dictates waiting. 45 46 kNumConstants, 47 kUnset = -1 48 }; 49 50 // The possible ways that downloading from a HTTP or HTTPS server can fail. 51 // 52 // This is used in the UpdateEngine.Check.DownloadErrorCode and 53 // UpdateEngine.Attempt.DownloadErrorCode histograms. 54 enum class DownloadErrorCode { 55 // Errors that can happen in the field. See http://crbug.com/355745 56 // for how we plan to add more detail in the future. 57 kDownloadError = 0, // Error downloading data from server. 58 59 // IMPORTANT: When adding a new error code, add at the bottom of the 60 // above block and before the kInputMalformed field. This 61 // is to ensure that error codes are not reordered. 62 63 // This error code is used to convey that malformed input was given 64 // to the utils::GetDownloadErrorCode() function. This should never 65 // happen but if it does it's because of an internal update_engine 66 // error and we're interested in knowing this. 67 kInputMalformed = 100, 68 69 // Bucket for capturing HTTP status codes not in the 200-599 70 // range. This should never happen in practice but if it does we 71 // want to know. 72 kHttpStatusOther = 101, 73 74 // Above 200 and below 600, the value is the HTTP status code. 75 kHttpStatus200 = 200, 76 77 kNumConstants = 600, 78 79 kUnset = -1 80 }; 81 82 // Possible ways an update attempt can end. 83 // 84 // This is used in the UpdateEngine.Attempt.Result histogram. 85 enum class AttemptResult { 86 kUpdateSucceeded, // The update succeeded. 87 kInternalError, // An internal error occurred. 88 kPayloadDownloadError, // Failure while downloading payload. 89 kMetadataMalformed, // Metadata was malformed. 90 kOperationMalformed, // An operation was malformed. 91 kOperationExecutionError, // An operation failed to execute. 92 kMetadataVerificationFailed, // Metadata verification failed. 93 kPayloadVerificationFailed, // Payload verification failed. 94 kVerificationFailed, // Root or Kernel partition verification failed. 95 kPostInstallFailed, // The postinstall step failed. 96 kAbnormalTermination, // The attempt ended abnormally. 97 kUpdateCanceled, // Update canceled by the user. 98 kUpdateSucceededNotActive, // Update succeeded but the new slot is not 99 // active. 100 101 kNumConstants, 102 103 kUnset = -1 104 }; 105 106 // Possible ways the device is connected to the Internet. 107 // 108 // This is used in the UpdateEngine.Attempt.ConnectionType histogram. 109 enum class ConnectionType { 110 kUnknown = 0, // Unknown. 111 kEthernet = 1, // Ethernet. 112 kWifi = 2, // Wireless. 113 kWimax = 3, // WiMax. 114 kBluetooth = 4, // Bluetooth. 115 kCellular = 5, // Cellular. 116 kTetheredEthernet = 6, // Tethered (Ethernet). 117 kTetheredWifi = 7, // Tethered (Wifi). 118 kDisconnected = 8, // Disconnected. 119 120 kNumConstants, 121 kUnset = -1 122 }; 123 124 // Possible ways a rollback can end. 125 // 126 // This is used in the UpdateEngine.Rollback histogram. 127 enum class RollbackResult { 128 kFailed, 129 kSuccess, 130 131 kNumConstants 132 }; 133 134 } // namespace metrics 135 136 } // namespace chromeos_update_engine 137 138 #endif // UPDATE_ENGINE_METRICS_CONSTANTS_H_ 139