11b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// 21b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// Copyright (C) 2017 The Android Open Source Project 31b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// 41b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// Licensed under the Apache License, Version 2.0 (the "License"); 51b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// you may not use this file except in compliance with the License. 61b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// You may obtain a copy of the License at 71b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// 81b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// http://www.apache.org/licenses/LICENSE-2.0 91b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// 101b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// Unless required by applicable law or agreed to in writing, software 111b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// distributed under the License is distributed on an "AS IS" BASIS, 121b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// See the License for the specific language governing permissions and 141b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// limitations under the License. 151b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu// 161b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 171b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu#ifndef UPDATE_ENGINE_METRICS_REPORTER_ANDROID_H_ 181b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu#define UPDATE_ENGINE_METRICS_REPORTER_ANDROID_H_ 191b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 201b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu#include "update_engine/common/error_code.h" 211b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu#include "update_engine/metrics_constants.h" 221b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu#include "update_engine/metrics_reporter_interface.h" 231b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 241b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xunamespace chromeos_update_engine { 251b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 261b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xuclass MetricsReporterAndroid : public MetricsReporterInterface { 271b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu public: 281b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu MetricsReporterAndroid() = default; 291b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 301b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu ~MetricsReporterAndroid() override = default; 311b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 321b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu void Initialize() override {} 331b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 341b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu void ReportRollbackMetrics(metrics::RollbackResult result) override {} 351b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 361b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu void ReportDailyMetrics(base::TimeDelta os_age) override {} 371b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 381b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu void ReportUpdateCheckMetrics( 391b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu SystemState* system_state, 401b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu metrics::CheckResult result, 411b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu metrics::CheckReaction reaction, 421b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu metrics::DownloadErrorCode download_error_code) override {} 431b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 441f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu void ReportUpdateAttemptMetrics(SystemState* system_state, 451f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu int attempt_number, 461f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu PayloadType payload_type, 471f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu base::TimeDelta duration, 481f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu base::TimeDelta duration_uptime, 491f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu int64_t payload_size, 501f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu metrics::AttemptResult attempt_result, 511f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu ErrorCode internal_error_code) override; 521f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu 531f93d098d6d6c341ed7471352fda80c936471a17Tianjie Xu void ReportUpdateAttemptDownloadMetrics( 541b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu int64_t payload_bytes_downloaded, 551b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu int64_t payload_download_speed_bps, 561b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu DownloadSource download_source, 571b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu metrics::DownloadErrorCode payload_download_error_code, 5882d99105d364fe38dc68733b631497040ad3dcfdTianjie Xu metrics::ConnectionType connection_type) override; 591b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 6052c678cddc5dd7bda8a29e74ce6ef4d67e8d1487Tianjie Xu void ReportAbnormallyTerminatedUpdateAttemptMetrics() override; 611b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 621b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu void ReportSuccessfulUpdateMetrics( 631b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu int attempt_count, 641b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu int updates_abandoned_count, 651b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu PayloadType payload_type, 661b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu int64_t payload_size, 671b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu int64_t num_bytes_downloaded[kNumDownloadSources], 681b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu int download_overhead_percentage, 691b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu base::TimeDelta total_duration, 701b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu int reboot_count, 7152c678cddc5dd7bda8a29e74ce6ef4d67e8d1487Tianjie Xu int url_switch_count) override; 721b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 731b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu void ReportCertificateCheckMetrics(ServerToCheck server_to_check, 741b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu CertificateCheckResult result) override {} 751b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 761b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu void ReportFailedUpdateCount(int target_attempt) override {} 771b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 781b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu void ReportTimeToReboot(int time_to_reboot_minutes) override {} 791b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 801b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu void ReportInstallDateProvisioningSource(int source, int max) override {} 811b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 821b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu private: 831b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu DISALLOW_COPY_AND_ASSIGN(MetricsReporterAndroid); 841b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu}; 851b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 861b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu} // namespace chromeos_update_engine 871b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu 881b66114d367d1b85b4397bb559e274dbd0ebcd31Tianjie Xu#endif // UPDATE_ENGINE_METRICS_REPORTER_ANDROID_H_ 89