// 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 UI_BASE_SCOPED_VISIBILITY_TRACKER_H_
#define UI_BASE_SCOPED_VISIBILITY_TRACKER_H_

#include <memory>

#include "base/component_export.h"
#include "base/time/time.h"

namespace base {
class TickClock;
}  // namespace base

namespace ui {

// This class tracks the total time it is visible, based on receiving
// OnShown/OnHidden notifications, which are logically idempotent.
class COMPONENT_EXPORT(UI_BASE) ScopedVisibilityTracker {
 public:
  // |tick_clock| must outlive this object.
  ScopedVisibilityTracker(const base::TickClock* tick_clock, bool is_shown);
  ~ScopedVisibilityTracker();

  void OnShown();
  void OnHidden();

  base::TimeDelta GetForegroundDuration() const;

  bool currently_in_foreground() const { return currently_in_foreground_; }

 private:
  void Update(bool in_foreground);

  const base::TickClock* tick_clock_;

  base::TimeTicks last_time_shown_;
  base::TimeDelta foreground_duration_;
  bool currently_in_foreground_ = false;
};

}  // namespace ui

#endif  // UI_BASE_SCOPED_VISIBILITY_TRACKER_H_
