// Copyright 2014 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 SERVICES_WINDOW_MANAGER_FOCUS_RULES_H_
#define SERVICES_WINDOW_MANAGER_FOCUS_RULES_H_

#include "mojo/services/view_manager/cpp/types.h"
#include "mojo/services/view_manager/cpp/view.h"

namespace window_manager {

// Implemented by an object that establishes the rules about what can be
// focused or activated.
class FocusRules {
 public:
  virtual ~FocusRules() {}

  // Returns true if the children of |window| can be activated.
  virtual bool SupportsChildActivation(mojo::View* window) const = 0;

  // Returns true if |view| is a toplevel view. Whether or not a view
  // is considered toplevel is determined by a similar set of rules that
  // govern activation and focus. Not all toplevel views are activatable,
  // call CanActivateView() to determine if a view can be activated.
  virtual bool IsToplevelView(mojo::View* view) const = 0;
  // Returns true if |view| can be activated or focused.
  virtual bool CanActivateView(mojo::View* view) const = 0;
  // For CanFocusView(), null is supported, because null is a valid focusable
  // view (in the case of clearing focus).
  virtual bool CanFocusView(mojo::View* view) const = 0;

  // Returns the toplevel view containing |view|. Not all toplevel views
  // are activatable, call GetActivatableView() instead to return the
  // activatable view, which might be in a different hierarchy.
  // Will return null if |view| is not contained by a view considered to be
  // a toplevel view.
  virtual mojo::View* GetToplevelView(mojo::View* view) const = 0;
  // Returns the activatable or focusable view given an attempt to activate or
  // focus |view|. Some possible scenarios (not intended to be exhaustive):
  // - |view| is a child of a non-focusable view and so focus must be set
  //   according to rules defined by the delegate, e.g. to a parent.
  // - |view| is an activatable view that is the transient parent of a modal
  //   view, so attempts to activate |view| should result in the modal
  //   transient being activated instead.
  // These methods may return null if they are unable to find an activatable
  // or focusable view given |view|.
  virtual mojo::View* GetActivatableView(mojo::View* view) const = 0;
  virtual mojo::View* GetFocusableView(mojo::View* view) const = 0;

  // Returns the next view to activate in the event that |ignore| is no longer
  // activatable. This function is called when something is happening to
  // |ignore| that means it can no longer have focus or activation, including
  // but not limited to:
  // - it or its parent hierarchy is being hidden, or removed from the
  //   RootView.
  // - it is being destroyed.
  // - it is being explicitly deactivated.
  // |ignore| cannot be null.
  virtual mojo::View* GetNextActivatableView(mojo::View* ignore) const = 0;
};

}  // namespace window_manager

#endif  // SERVICES_WINDOW_MANAGER_FOCUS_RULES_H_
