// Copyright (c) 2012 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 UI_VIEWS_CONTEXT_MENU_CONTROLLER_H_
#define UI_VIEWS_CONTEXT_MENU_CONTROLLER_H_

#include "ui/base/ui_base_types.h"
#include "ui/views/views_export.h"

namespace gfx {
class Point;
}

namespace views {
class View;

// ContextMenuController is responsible for showing the context menu for a
// View. To use a ContextMenuController invoke set_context_menu_controller on a
// View. When the appropriate user gesture occurs ShowContextMenu is invoked
// on the ContextMenuController.
//
// Setting a ContextMenuController on a view makes the view process mouse
// events.
//
// It is up to subclasses that do their own mouse processing to invoke
// the appropriate ContextMenuController method, typically by invoking super's
// implementation for mouse processing.
class VIEWS_EXPORT ContextMenuController {
 public:
  // Invoked to show the context menu for |source|. |point| is in screen
  // coordinates. This method also prevents reentrant calls.
  void ShowContextMenuForView(View* source,
                              const gfx::Point& point,
                              ui::MenuSourceType source_type);

 protected:
  virtual ~ContextMenuController() = default;

 private:
  // Subclasses should override this method.
  virtual void ShowContextMenuForViewImpl(View* source,
                                          const gfx::Point& point,
                                          ui::MenuSourceType source_type) = 0;

  // Used as a flag to prevent a re-entrancy in ShowContextMenuForView().
  // This is most relevant to Linux, where spawning the textfield context menu
  // spins a nested message loop that processes input events, which may attempt
  // to trigger another context menu.
  bool is_opening_ = false;
};

}  // namespace views

#endif  // UI_VIEWS_CONTEXT_MENU_CONTROLLER_H_
