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

#include <stdint.h>

#include "ash/public/interfaces/process_creation_time_recorder.mojom.h"
#include "base/callback.h"
#include "base/macros.h"
#include "base/time/time.h"
#include "mojo/public/cpp/bindings/binding.h"

namespace aura {
class Window;
}

namespace gfx {
struct PresentationFeedback;
}

namespace ash {

class TimeToFirstPresentRecorderTestApi;

// Used for tracking the time main started to the time the first bits make it
// the screen and logging a histogram of the time. Chrome is responsible for
// providing the start time by way of ProcessCreationTimeRecorder.
//
// This only logs the time to present the primary root window.
class TimeToFirstPresentRecorder : public mojom::ProcessCreationTimeRecorder {
 public:
  explicit TimeToFirstPresentRecorder(aura::Window* window);
  ~TimeToFirstPresentRecorder() override;

  void Bind(mojom::ProcessCreationTimeRecorderRequest request);

 private:
  friend class TimeToFirstPresentRecorderTestApi;

  // If both times are available the time to present is logged.
  void LogTime();

  // Callback from the compositor when it presented a valid frame.
  void DidPresentCompositorFrame(const gfx::PresentationFeedback& feedback);

  base::TimeDelta time_to_first_present() const {
    return present_time_ - process_creation_time_;
  }

  // mojom::ProcessCreationTimeRecorder:
  void SetMainProcessCreationTime(base::TimeTicks start_time) override;

  base::TimeTicks process_creation_time_;
  base::TimeTicks present_time_;

  // Only used by tests. If valid it's Run() when both times are determined.
  base::OnceClosure log_callback_;

  mojo::Binding<mojom::ProcessCreationTimeRecorder> binding_{this};

  DISALLOW_COPY_AND_ASSIGN(TimeToFirstPresentRecorder);
};

}  // namespace ash

#endif  // ASH_METRICS_TIME_TO_FIRST_PRESENT_RECORDER_H_
