11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_TOUCH_VIEW_CONTROLLER_DELEGATE_H_
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_TOUCH_VIEW_CONTROLLER_DELEGATE_H_
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ash/shell_observer.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/observer_list.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace chromeos {
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// An interface for ash::MaximizeModeController.
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass TouchViewControllerDelegate : public ash::ShellObserver {
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public:
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Observer that reports changes to the state of MaximizeModeController's
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // rotation lock.
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  class Observer {
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   public:
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    // Invoked when maximize mode started/ended.
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    virtual void OnMaximizeModeStarted() {}
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    virtual void OnMaximizeModeEnded() {}
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   protected:
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    virtual ~Observer() {}
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  };
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  TouchViewControllerDelegate();
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~TouchViewControllerDelegate();
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Add/Remove observers.
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void AddObserver(Observer* observer);
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void RemoveObserver(Observer* observer);
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Test if the Maximize Mode is enabled or not.
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool IsMaximizeModeEnabled() const;
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private:
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // ash::ShellObserver implementation:
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnMaximizeModeStarted() OVERRIDE;
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnMaximizeModeEnded() OVERRIDE;
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Mode state change observers.
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ObserverList<Observer> observers_;
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DISALLOW_COPY_AND_ASSIGN(TouchViewControllerDelegate);
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace chromeos
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_TOUCH_VIEW_CONTROLLER_DELEGATE_H_
53