// Copyright 2017 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 COMPONENTS_SYNC_USER_EVENTS_GLOBAL_ID_MAPPER_H_
#define COMPONENTS_SYNC_USER_EVENTS_GLOBAL_ID_MAPPER_H_

#include <stdint.h>

#include "base/callback.h"

namespace syncer {

using GlobalIdChange =
    base::RepeatingCallback<void(int64_t old_global_id, int64_t new_global_id)>;

// UserEventSpecifics references SESSIONS data through their |navigation_id|
// which will match values seen in TabNavigation's |global_id|. This field is
// really just the timestamp from the NavigationEntry, which can change when a
// page is reloaded. This will cause the SESSIONS side to override the old data.
// The impact to USER_EVENTS depends on if the previous timestamp made it to the
// server as part of SESSIONS data or not. If it did not, then USER_EVENTS must
// be updated. But knowing the answer that question is currently very tricky
// with Sync's current architecture, so instead we always update for uncommitted
// USER_EVENTS. The purpose of the GlobalIdMapper is the track changes in the
// SESSIONS' |global_id| field and feed this information the USER_EVENTS side.
class GlobalIdMapper {
 public:
  // Register for information about changing
  virtual void AddGlobalIdChangeObserver(GlobalIdChange callback) = 0;

  // Given a |global_id|, returns what the latest global_id is for the given
  // navigation, to the best of our ability. If we do not have such a mapping,
  // which is quite possible, the input |global_id| is returned.
  virtual int64_t GetLatestGlobalId(int64_t global_id) = 0;
};

}  // namespace syncer

#endif  // COMPONENTS_SYNC_USER_EVENTS_GLOBAL_ID_MAPPER_H_
