modal_dialog_host.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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
35  // view.
36  virtual gfx::Point GetDialogPosition(const gfx::Size& size) = 0;
37
38  // Add/remove observer.
39  virtual void AddObserver(ModalDialogHostObserver* observer) = 0;
40  virtual void RemoveObserver(ModalDialogHostObserver* observer) = 0;
41};
42
43}  // namespace web_modal
44
45#endif  // COMPONENTS_WEB_MODAL_MODAL_DIALOG_HOST_H_
46