1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_WEB_MODAL_MODAL_DIALOG_HOST_H_
6#define COMPONENTS_WEB_MODAL_MODAL_DIALOG_HOST_H_
7
8#include "ui/gfx/native_widget_types.h"
9
10namespace gfx {
11class Point;
12class Size;
13}  // namespace gfx
14
15namespace web_modal {
16
17// Observer to be implemented to update modal dialogs when the host indicates
18// their position needs to be changed.
19class ModalDialogHostObserver {
20 public:
21  virtual ~ModalDialogHostObserver();
22
23  virtual void OnPositionRequiresUpdate() = 0;
24  virtual void OnHostDestroying() = 0;
25};
26
27// Interface for supporting positioning of modal dialogs over a window/widget.
28class ModalDialogHost {
29 public:
30  virtual ~ModalDialogHost();
31
32  // Returns the view against which the dialog is positioned and parented.
33  virtual gfx::NativeView GetHostView() const = 0;
34  // Gets the position for the dialog in coordinates relative to the host view.
35  virtual gfx::Point GetDialogPosition(const gfx::Size& size) = 0;
36
37  // Add/remove observer.
38  virtual void AddObserver(ModalDialogHostObserver* observer) = 0;
39  virtual void RemoveObserver(ModalDialogHostObserver* observer) = 0;
40};
41
42}  // namespace web_modal
43
44#endif  // COMPONENTS_WEB_MODAL_MODAL_DIALOG_HOST_H_
45