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