1// Copyright (c) 2012 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 CHROME_BROWSER_UI_BROWSER_DIALOGS_H_
6#define CHROME_BROWSER_UI_BROWSER_DIALOGS_H_
7
8#include "base/callback.h"
9#include "chrome/browser/profiles/profile_window.h"
10#include "content/public/common/signed_certificate_timestamp_id_and_status.h"
11#include "ipc/ipc_message.h"  // For IPC_MESSAGE_LOG_ENABLED.
12#include "third_party/skia/include/core/SkColor.h"
13#include "ui/gfx/native_widget_types.h"
14
15class Browser;
16class Profile;
17class SkBitmap;
18class TabModalConfirmDialogDelegate;
19
20namespace content {
21class BrowserContext;
22class ColorChooser;
23class WebContents;
24}
25
26namespace extensions {
27class Extension;
28}
29
30namespace ui {
31class ProfileSigninConfirmationDelegate;
32class WebDialogDelegate;
33}
34
35namespace chrome {
36
37#if defined(IPC_MESSAGE_LOG_ENABLED)
38
39// The dialog is a singleton. If the dialog is already opened, it won't do
40// anything, so you can just blindly call this function all you want.
41// This is called from chrome/browser/browser_about_handler.cc
42void ShowAboutIPCDialog();
43
44#endif  // IPC_MESSAGE_LOG_ENABLED
45
46// Creates and shows an HTML dialog with the given delegate and context.
47// The window is automatically destroyed when it is closed.
48// Returns the created window.
49//
50// Make sure to use the returned window only when you know it is safe
51// to do so, i.e. before OnDialogClosed() is called on the delegate.
52gfx::NativeWindow ShowWebDialog(gfx::NativeWindow parent,
53                                content::BrowserContext* context,
54                                ui::WebDialogDelegate* delegate);
55
56// Shows the collected cookies dialog box.
57void ShowCollectedCookiesDialog(content::WebContents* web_contents);
58
59// Creates the ExtensionInstalledBubble and schedules it to be shown once
60// the extension has loaded. |extension| is the installed extension. |browser|
61// is the browser window which will host the bubble. |icon| is the install
62// icon of the extension.
63void ShowExtensionInstalledBubble(const extensions::Extension* extension,
64                                  Browser* browser,
65                                  const SkBitmap& icon);
66
67// Shows or hide the hung renderer dialog for the given WebContents.
68// We need to pass the WebContents to the dialog, because multiple tabs can hang
69// and it needs to keep track of which tabs are currently hung.
70void ShowHungRendererDialog(content::WebContents* contents);
71void HideHungRendererDialog(content::WebContents* contents);
72
73// Shows the Task Manager. |browser| can be NULL when called from Ash.
74void ShowTaskManager(Browser* browser);
75
76#if !defined(OS_MACOSX)
77// Shows the create web app shortcut dialog box.
78void ShowCreateWebAppShortcutsDialog(gfx::NativeWindow parent_window,
79                                     content::WebContents* web_contents);
80#endif
81
82// Shows the create chrome app shortcut dialog box.
83// |close_callback| may be null.
84void ShowCreateChromeAppShortcutsDialog(
85    gfx::NativeWindow parent_window,
86    Profile* profile,
87    const extensions::Extension* app,
88    const base::Callback<void(bool /* created */)>& close_callback);
89
90// Shows a color chooser that reports to the given WebContents.
91content::ColorChooser* ShowColorChooser(content::WebContents* web_contents,
92                                        SkColor initial_color);
93
94void ShowProfileSigninConfirmationDialog(
95    Browser* browser,
96    content::WebContents* web_contents,
97    Profile* profile,
98    const std::string& username,
99    ui::ProfileSigninConfirmationDelegate* delegate);
100
101// Shows the Signed Certificate Timestamps viewer, to view the signed
102// certificate timestamps in |sct_ids_list|
103void ShowSignedCertificateTimestampsViewer(
104    content::WebContents* web_contents,
105    const content::SignedCertificateTimestampIDStatusList& sct_ids_list);
106
107// Shows the ManagePasswords bubble for a particular |web_contents|.
108void ShowManagePasswordsBubble(content::WebContents* web_contents);
109
110// Closes the bubble if it's shown for |web_contents|.
111void CloseManagePasswordsBubble(content::WebContents* web_contents);
112
113}  // namespace chrome
114
115#endif  // CHROME_BROWSER_UI_BROWSER_DIALOGS_H_
116