1// Copyright 2014 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_SINGLE_WEB_CONTENTS_DIALOG_MANAGER_H_ 6#define COMPONENTS_WEB_MODAL_SINGLE_WEB_CONTENTS_DIALOG_MANAGER_H_ 7 8#include "components/web_modal/native_web_contents_modal_dialog.h" 9 10namespace content { 11class WebContents; 12} // namespace content 13 14namespace web_modal { 15 16class WebContentsModalDialogHost; 17 18// Interface from SingleWebContentsDialogManager to 19// WebContentsModalDialogManager. 20class SingleWebContentsDialogManagerDelegate { 21 public: 22 SingleWebContentsDialogManagerDelegate() {} 23 virtual ~SingleWebContentsDialogManagerDelegate() {} 24 25 virtual content::WebContents* GetWebContents() const = 0; 26 27 // Notify the delegate that the dialog is closing. The native 28 // manager will be deleted before the end of this call. 29 virtual void WillClose(NativeWebContentsModalDialog dialog) = 0; 30 31 private: 32 DISALLOW_COPY_AND_ASSIGN(SingleWebContentsDialogManagerDelegate); 33}; 34 35// Provides an interface for platform-specific UI implementation for the web 36// contents modal dialog. Each object will manage a single 37// NativeWebContentsModalDialog during its lifecycle. 38// 39// Implementation classes should accept a NativeWebContentsModalDialog at 40// construction time and register to be notified when the dialog is closing, 41// so that it can notify its delegate (WillClose method). 42class SingleWebContentsDialogManager { 43 public: 44 virtual ~SingleWebContentsDialogManager() {} 45 46 // Makes the web contents modal dialog visible. Only one web contents modal 47 // dialog is shown at a time per tab. 48 virtual void Show() = 0; 49 50 // Hides the web contents modal dialog without closing it. 51 virtual void Hide() = 0; 52 53 // Closes the web contents modal dialog. 54 // If this method causes a WillClose() call to the delegate, the manager 55 // will be deleted at the close of that invocation. 56 virtual void Close() = 0; 57 58 // Sets focus on the web contents modal dialog. 59 virtual void Focus() = 0; 60 61 // Runs a pulse animation for the web contents modal dialog. 62 virtual void Pulse() = 0; 63 64 // Called when the host view for the dialog has changed. 65 virtual void HostChanged(WebContentsModalDialogHost* new_host) = 0; 66 67 // Return the dialog under management by this object. 68 virtual NativeWebContentsModalDialog dialog() = 0; 69 70 protected: 71 SingleWebContentsDialogManager() {} 72 73 private: 74 DISALLOW_COPY_AND_ASSIGN(SingleWebContentsDialogManager); 75}; 76 77} // namespace web_modal 78 79#endif // COMPONENTS_WEB_MODAL_SINGLE_WEB_CONTENTS_DIALOG_MANAGER_H_ 80