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