Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / components / web_modal / single_web_contents_dialog_manager.h
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_