chromium/components/sync/engine/sync_status_tracker.h

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_SYNC_ENGINE_SYNC_STATUS_TRACKER_H_
#define COMPONENTS_SYNC_ENGINE_SYNC_STATUS_TRACKER_H_

#include <map>
#include <string>

#include "base/compiler_specific.h"
#include "base/functional/callback.h"
#include "base/sequence_checker.h"
#include "components/sync/base/data_type.h"
#include "components/sync/engine/sync_engine_event_listener.h"
#include "components/sync/engine/sync_status.h"

namespace sync_pb {
class NigoriSpecifics_TrustedVaultDebugInfo;
}  // namespace sync_pb

namespace syncer {

struct SyncCycleEvent;

// This class watches various sync engine components, updating its internal
// state upon change and firing the callback injected on construction.
//
// Most of this data ends up on the chrome://sync-internals page. But the page
// is only 'pinged' to update itself at the end of a sync cycle. A user could
// refresh manually, but unless their timing is excellent it's unlikely that a
// user will see any state in mid-sync cycle. We have no plans to change this.
// However, we will continue to collect data and update state mid-sync-cycle in
// case we need to debug slow or stuck sync cycles.
class SyncStatusTracker : public SyncEngineEventListener {};

}  // namespace syncer

#endif  // COMPONENTS_SYNC_ENGINE_SYNC_STATUS_TRACKER_H_