// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_METRICS_H_ #define CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_METRICS_H_ #include "base/macros.h" #include "base/time/time.h" #include "content/browser/background_sync/background_sync.pb.h" #include "content/browser/background_sync/background_sync_status.h" namespace content { // This class contains the logic for recording usage metrics for the Background // Sync API. It is stateless, containing only static methods, so it can be used // by any of the Background Sync code, without needing to be instantiated // explicitly. class BackgroundSyncMetrics { public: enum RegistrationCouldFire { REGISTRATION_COULD_NOT_FIRE, REGISTRATION_COULD_FIRE }; enum RegistrationIsDuplicate { REGISTRATION_IS_NOT_DUPLICATE, REGISTRATION_IS_DUPLICATE }; // Records the result of a single sync event firing. static void RecordEventResult(SyncPeriodicity periodicity, bool result); // Records the result of running a batch of sync events, including the total // time spent, and the batch size. static void RecordBatchSyncEventComplete(const base::TimeDelta& time, int number_of_batched_sync_events); // Records the result of trying to register a sync. |could_fire| indicates // whether the conditions were sufficient for the sync to fire immediately at // the time it was registered. static void CountRegister(SyncPeriodicity periodicity, RegistrationCouldFire could_fire, RegistrationIsDuplicate registration_is_duplicate, BackgroundSyncStatus result); // Records the result of trying to unregister a sync. static void CountUnregister(SyncPeriodicity periodicity, BackgroundSyncStatus result); private: DISALLOW_IMPLICIT_CONSTRUCTORS(BackgroundSyncMetrics); }; } // namespace content #endif // CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_METRICS_H_