// Copyright 2021 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 CHROMECAST_BROWSER_DISPLAY_CONFIGURATOR_OBSERVER_H_
#define CHROMECAST_BROWSER_DISPLAY_CONFIGURATOR_OBSERVER_H_

#include "chromecast/browser/cast_display_configurator.h"

namespace chromecast {

class CastWindowManagerAura;

// Observer class that can respond to Display Configurator state changes.
// Forces a repaint to ensure content is refreshed post display configuration
// change.
class DisplayConfiguratorObserver
    : public shell::CastDisplayConfigurator::Observer {
 public:
  DisplayConfiguratorObserver(
      shell::CastDisplayConfigurator* display_configurator,
      CastWindowManagerAura* manager);

  ~DisplayConfiguratorObserver() override;

  DisplayConfiguratorObserver(const DisplayConfiguratorObserver&) = delete;

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

  // CastDisplayConfigurator::Observer
  void OnDisplayStateChanged() override;

 private:
  shell::CastDisplayConfigurator* display_configurator_;
  CastWindowManagerAura* window_manager_;
};

}  // namespace chromecast

#endif  // CHROMECAST_BROWSER_DISPLAY_CONFIGURATOR_OBSERVER_H_
