chromium/ios/chrome/browser/ui/fullscreen/fullscreen_model_observer.h

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

#ifndef IOS_CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_MODEL_OBSERVER_H_
#define IOS_CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_MODEL_OBSERVER_H_

#include <CoreGraphics/CoreGraphics.h>

#include "base/observer_list_types.h"

class FullscreenModel;

// Interface for listening to FullscreenModel changes.
class FullscreenModelObserver : public base::CheckedObserver {
 public:
  FullscreenModelObserver() = default;

  FullscreenModelObserver(const FullscreenModelObserver&) = delete;
  FullscreenModelObserver& operator=(const FullscreenModelObserver&) = delete;

  ~FullscreenModelObserver() override;

  // Invoked when `model`'s toolbar heights have been updated.
  virtual void FullscreenModelToolbarHeightsUpdated(FullscreenModel* model) {}

  // Invoked when `model`'s calculated progress() value is updated.
  virtual void FullscreenModelProgressUpdated(FullscreenModel* model) {}

  // Invoked when `model` is enabled or disabled.
  virtual void FullscreenModelEnabledStateChanged(FullscreenModel* model) {}

  // Invoked when a scroll event being tracked by `model` has started.
  virtual void FullscreenModelScrollEventStarted(FullscreenModel* model) {}

  // Invoked when a scroll event being tracked by `model` has ended.
  virtual void FullscreenModelScrollEventEnded(FullscreenModel* model) {}

  // Invoked when the model is reset.
  virtual void FullscreenModelWasReset(FullscreenModel* model) {}
};

#endif  // IOS_CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_MODEL_OBSERVER_H_