// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_WEB_MODAL_SINGLE_WEB_CONTENTS_DIALOG_MANAGER_H_ #define COMPONENTS_WEB_MODAL_SINGLE_WEB_CONTENTS_DIALOG_MANAGER_H_ #include "base/macros.h" #include "ui/gfx/native_widget_types.h" namespace content { class WebContents; } // namespace content namespace web_modal { class WebContentsModalDialogHost; // Interface from SingleWebContentsDialogManager to // WebContentsModalDialogManager. class SingleWebContentsDialogManagerDelegate { public: SingleWebContentsDialogManagerDelegate() {} virtual ~SingleWebContentsDialogManagerDelegate() {} virtual content::WebContents* GetWebContents() const = 0; // Notify the delegate that the dialog is closing. The native // manager will be deleted before the end of this call. virtual void WillClose(gfx::NativeWindow dialog) = 0; private: DISALLOW_COPY_AND_ASSIGN(SingleWebContentsDialogManagerDelegate); }; // Provides an interface for platform-specific UI implementation for the web // contents modal dialog. Each object will manage a single dialog window // during its lifecycle. // // Implementation classes should accept a dialog window at construction time // and register to be notified when the dialog is closing, so that it can // notify its delegate (WillClose method). class SingleWebContentsDialogManager { public: virtual ~SingleWebContentsDialogManager() {} // Makes the web contents modal dialog visible. Only one web contents modal // dialog is shown at a time per tab. virtual void Show() = 0; // Hides the web contents modal dialog without closing it. virtual void Hide() = 0; // Closes the web contents modal dialog. // If this method causes a WillClose() call to the delegate, the manager // will be deleted at the close of that invocation. virtual void Close() = 0; // Sets focus on the web contents modal dialog. virtual void Focus() = 0; // Runs a pulse animation for the web contents modal dialog. virtual void Pulse() = 0; // Called when the host view for the dialog has changed. virtual void HostChanged(WebContentsModalDialogHost* new_host) = 0; // Return the dialog under management by this object. virtual gfx::NativeWindow dialog() = 0; protected: SingleWebContentsDialogManager() {} private: DISALLOW_COPY_AND_ASSIGN(SingleWebContentsDialogManager); }; } // namespace web_modal #endif // COMPONENTS_WEB_MODAL_SINGLE_WEB_CONTENTS_DIALOG_MANAGER_H_