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 10 namespace gfx { 11 class Point; 12 class Size; 13 } // namespace gfx 14 15 namespace web_modal { 16 17 // Observer to be implemented to update modal dialogs when the host indicates 18 // their position needs to be changed. 19 class 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. 28 class 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