// // Copyright (C) 2017 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #ifndef UPDATE_ENGINE_METRICS_CONSTANTS_H_ #define UPDATE_ENGINE_METRICS_CONSTANTS_H_ namespace chromeos_update_engine { namespace metrics { // The possible outcomes when checking for updates. // // This is used in the UpdateEngine.Check.Result histogram. enum class CheckResult { kUpdateAvailable, // Response indicates an update is available. kNoUpdateAvailable, // Response indicates no updates are available. kDownloadError, // Error downloading response from Omaha. kParsingError, // Error parsing response. kRebootPending, // No update check was performed a reboot is pending. kNumConstants, kUnset = -1 }; // Possible ways a device can react to a new update being available. // // This is used in the UpdateEngine.Check.Reaction histogram. enum class CheckReaction { kUpdating, // Device proceeds to download and apply update. kIgnored, // Device-policy dictates ignoring the update. kDeferring, // Device-policy dictates waiting. kBackingOff, // Previous errors dictates waiting. kNumConstants, kUnset = -1 }; // The possible ways that downloading from a HTTP or HTTPS server can fail. // // This is used in the UpdateEngine.Check.DownloadErrorCode and // UpdateEngine.Attempt.DownloadErrorCode histograms. enum class DownloadErrorCode { // Errors that can happen in the field. See http://crbug.com/355745 // for how we plan to add more detail in the future. kDownloadError = 0, // Error downloading data from server. // IMPORTANT: When adding a new error code, add at the bottom of the // above block and before the kInputMalformed field. This // is to ensure that error codes are not reordered. // This error code is used to convey that malformed input was given // to the utils::GetDownloadErrorCode() function. This should never // happen but if it does it's because of an internal update_engine // error and we're interested in knowing this. kInputMalformed = 100, // Bucket for capturing HTTP status codes not in the 200-599 // range. This should never happen in practice but if it does we // want to know. kHttpStatusOther = 101, // Above 200 and below 600, the value is the HTTP status code. kHttpStatus200 = 200, kNumConstants = 600, kUnset = -1 }; // Possible ways an update attempt can end. // // This is used in the UpdateEngine.Attempt.Result histogram. enum class AttemptResult { kUpdateSucceeded, // The update succeeded. kInternalError, // An internal error occurred. kPayloadDownloadError, // Failure while downloading payload. kMetadataMalformed, // Metadata was malformed. kOperationMalformed, // An operation was malformed. kOperationExecutionError, // An operation failed to execute. kMetadataVerificationFailed, // Metadata verification failed. kPayloadVerificationFailed, // Payload verification failed. kVerificationFailed, // Root or Kernel partition verification failed. kPostInstallFailed, // The postinstall step failed. kAbnormalTermination, // The attempt ended abnormally. kUpdateCanceled, // Update canceled by the user. kUpdateSucceededNotActive, // Update succeeded but the new slot is not // active. kNumConstants, kUnset = -1 }; // Possible ways the device is connected to the Internet. // // This is used in the UpdateEngine.Attempt.ConnectionType histogram. enum class ConnectionType { kUnknown = 0, // Unknown. kEthernet = 1, // Ethernet. kWifi = 2, // Wireless. kWimax = 3, // WiMax. kBluetooth = 4, // Bluetooth. kCellular = 5, // Cellular. kTetheredEthernet = 6, // Tethered (Ethernet). kTetheredWifi = 7, // Tethered (Wifi). kDisconnected = 8, // Disconnected. kNumConstants, kUnset = -1 }; // Possible ways a rollback can end. // // This is used in the UpdateEngine.Rollback histogram. enum class RollbackResult { kFailed, kSuccess, kNumConstants }; } // namespace metrics } // namespace chromeos_update_engine #endif // UPDATE_ENGINE_METRICS_CONSTANTS_H_