blob: fd33de5700ab5765f3e49371d9db24f0679cedf5 [file] [log] [blame]
// 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.
#import <UIKit/UIKit.h>
#include "base/macros.h"
class FullscreenController;
@class FullscreenAnimator;
// Interface for listening to fullscreen state.
class FullscreenControllerObserver {
FullscreenControllerObserver() = default;
virtual ~FullscreenControllerObserver() = default;
// Invoked when the maximum or minimum viewport insets for |controller| have
// been updated.
virtual void FullscreenViewportInsetRangeChanged(
FullscreenController* controller,
UIEdgeInsets min_viewport_insets,
UIEdgeInsets max_viewport_insets) {}
// Invoked after a scrolling event has caused |controller| to calculate
// |progress|. A |progress| value of 1.0 denotes that the toolbar should be
// completely visible, while a |progress| value of 0.0 denotes that the
// toolbar should be competely hidden.
virtual void FullscreenProgressUpdated(FullscreenController* controller,
CGFloat progress) {}
// Invoked with |controller| is enabled or disabled.
virtual void FullscreenEnabledStateChanged(FullscreenController* controller,
bool enabled) {}
// Invoked when |controller| is about to start an animation with |animator|.
// Observers are expected to add animations to update UI for |animator|'s
// final progress.
virtual void FullscreenWillAnimate(FullscreenController* controller,
FullscreenAnimator* animator) {}
// Invoked before the FullscreenController service is shut down.
// TODO( Rename to FullscreenControllerDestroyed.
virtual void FullscreenControllerWillShutDown(
FullscreenController* controller) {}
// Invoked when |controller| needs to resize its horizontal insets.
// TODO( remove after fixing multiwindow resizing issue.
virtual void ResizeHorizontalInsets(FullscreenController* controller) {}