14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#ifndef COMPONENTS_WEB_MODAL_MODAL_DIALOG_HOST_H_ 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define COMPONENTS_WEB_MODAL_MODAL_DIALOG_HOST_H_ 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ui/gfx/native_widget_types.h" 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace gfx { 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class Point; 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class Size; 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace gfx 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace web_modal { 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Observer to be implemented to update modal dialogs when the host indicates 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// their position needs to be changed. 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class ModalDialogHostObserver { 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual ~ModalDialogHostObserver(); 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void OnPositionRequiresUpdate() = 0; 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void OnHostDestroying() = 0; 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Interface for supporting positioning of modal dialogs over a window/widget. 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class ModalDialogHost { 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual ~ModalDialogHost(); 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Returns the view against which the dialog is positioned and parented. 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual gfx::NativeView GetHostView() const = 0; 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Gets the position for the dialog in coordinates relative to the host view. 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual gfx::Point GetDialogPosition(const gfx::Size& size) = 0; 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Add/remove observer. 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void AddObserver(ModalDialogHostObserver* observer) = 0; 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void RemoveObserver(ModalDialogHostObserver* observer) = 0; 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace web_modal 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // COMPONENTS_WEB_MODAL_MODAL_DIALOG_HOST_H_ 45