Home | History | Annotate | Download | only in web_modal
      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 
     10 namespace content {
     11 class WebContents;
     12 }  // namespace content
     13 
     14 namespace web_modal {
     15 
     16 class WebContentsModalDialogHost;
     17 
     18 // Interface from SingleWebContentsDialogManager to
     19 // WebContentsModalDialogManager.
     20 class 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).
     42 class 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