Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / browser / ui / gtk / one_click_signin_bubble_gtk.h
blob66310110b90e9c458b0979d054b7ad3b3e8d2678
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.
5 #ifndef CHROME_BROWSER_UI_GTK_ONE_CLICK_SIGNIN_BUBBLE_GTK_H_
6 #define CHROME_BROWSER_UI_GTK_ONE_CLICK_SIGNIN_BUBBLE_GTK_H_
8 #include "base/basictypes.h"
9 #include "base/callback.h"
10 #include "base/compiler_specific.h"
11 #include "base/gtest_prod_util.h"
12 #include "chrome/browser/ui/browser_window.h"
13 #include "chrome/browser/ui/gtk/bubble/bubble_gtk.h"
15 typedef struct _GtkWidget GtkWidget;
16 typedef struct _GtkWindow GtkWindow;
18 class BrowserWindowGtk;
19 class CustomDrawButton;
21 // Displays the one-click signin confirmation bubble (before syncing
22 // has started).
23 class OneClickSigninBubbleGtk : public BubbleDelegateGtk {
24 public:
25 // Deletes self on close. The given callback will be called if the
26 // user decides to start sync.
27 OneClickSigninBubbleGtk(
28 BrowserWindowGtk* browser_window_gtk,
29 BrowserWindow::OneClickSigninBubbleType type,
30 const base::string16& email,
31 const base::string16& error_message,
32 const BrowserWindow::StartSyncCallback& start_sync_callback);
34 // BubbleDelegateGtk implementation.
35 virtual void BubbleClosing(
36 BubbleGtk* bubble, bool closed_by_escape) OVERRIDE;
38 private:
39 FRIEND_TEST_ALL_PREFIXES(OneClickSigninBubbleGtkTest, DialogShowAndOK);
40 FRIEND_TEST_ALL_PREFIXES(OneClickSigninBubbleGtkTest, DialogShowAndUndo);
41 FRIEND_TEST_ALL_PREFIXES(
42 OneClickSigninBubbleGtkTest, DialogShowAndClickAdvanced);
43 FRIEND_TEST_ALL_PREFIXES(OneClickSigninBubbleGtkTest, DialogShowAndClose);
44 FRIEND_TEST_ALL_PREFIXES(OneClickSigninBubbleGtkTest, BubbleShowAndOK);
45 FRIEND_TEST_ALL_PREFIXES(
46 OneClickSigninBubbleGtkTest, BubbleShowAndClickAdvanced);
47 FRIEND_TEST_ALL_PREFIXES(OneClickSigninBubbleGtkTest, BubbleShowAndClose);
49 virtual ~OneClickSigninBubbleGtk();
51 void InitializeWidgets(BrowserWindowGtk* window);
52 GtkWidget* LayoutWidgets();
53 void ShowWidget(BrowserWindowGtk* browser_window_gtk,
54 GtkWidget* content_widget);
56 CHROMEGTK_CALLBACK_0(OneClickSigninBubbleGtk, void, OnClickAdvancedLink);
57 CHROMEGTK_CALLBACK_0(OneClickSigninBubbleGtk, void, OnClickOK);
58 CHROMEGTK_CALLBACK_0(OneClickSigninBubbleGtk, void, OnClickUndo);
59 CHROMEGTK_CALLBACK_0(OneClickSigninBubbleGtk, void, OnClickLearnMoreLink);
60 CHROMEGTK_CALLBACK_0(OneClickSigninBubbleGtk, void, OnClickCloseButton);
62 BubbleGtk* bubble_;
64 // The user's email address to be used for sync.
65 const base::string16 email_;
67 // Alternate error message to be displayed.
68 const base::string16 error_message_;
70 // This callback is nulled once its called, so that it is called only once.
71 // It will be called when the bubble is closed if it has not been called
72 // and nulled earlier.
73 BrowserWindow::StartSyncCallback start_sync_callback_;
75 bool is_sync_dialog_;
77 GtkWidget* message_label_;
78 GtkWidget* advanced_link_;
79 GtkWidget* ok_button_;
80 GtkWidget* undo_button_;
82 // These widgets are only used in the modal dialog, and not in the bubble.
83 GtkWidget* learn_more_;
84 GtkWidget* header_label_;
85 scoped_ptr<CustomDrawButton> close_button_;
87 bool clicked_learn_more_;
89 DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleGtk);
92 #endif // CHROME_BROWSER_UI_GTK_ONE_CLICK_SIGNIN_BUBBLE_GTK_H_