Index: chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc |
diff --git a/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc b/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc |
index 74d8dae8fd89941ad3c8de45957637b657155995..8ed301d8de86ca6fb0f9cb38c681af9d74848ae4 100644 |
--- a/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc |
+++ b/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc |
@@ -6,6 +6,7 @@ |
#include <gtk/gtk.h> |
+#include "base/callback_helpers.h" |
#include "base/i18n/rtl.h" |
#include "base/logging.h" |
#include "chrome/browser/ui/browser.h" |
@@ -26,11 +27,9 @@ const int kContentBorder = 7; |
OneClickSigninBubbleGtk::OneClickSigninBubbleGtk( |
BrowserWindowGtk* browser_window_gtk, |
- const base::Closure& learn_more_callback, |
- const base::Closure& advanced_callback) |
+ const BrowserWindow::StartSyncCallback& start_sync_callback) |
: bubble_(NULL), |
- learn_more_callback_(learn_more_callback), |
- advanced_callback_(advanced_callback) { |
+ start_sync_callback_(start_sync_callback) { |
// Setup the BubbleGtk content. |
GtkWidget* bubble_content = gtk_vbox_new(FALSE, 0); |
@@ -49,18 +48,6 @@ OneClickSigninBubbleGtk::OneClickSigninBubbleGtk( |
GtkThemeService* const theme_provider = GtkThemeService::GetFrom( |
browser_window_gtk->browser()->profile()); |
- GtkWidget* learn_more_line = gtk_hbox_new(FALSE, kContentBorder); |
- gtk_box_pack_start(GTK_BOX(bubble_content), |
- learn_more_line, FALSE, FALSE, 0); |
- |
- // Learn more link. |
- GtkWidget* learn_more_link = theme_provider->BuildChromeLinkButton( |
- l10n_util::GetStringUTF8(IDS_SYNC_PROMO_NTP_BUBBLE_LEARN_MORE)); |
- g_signal_connect(learn_more_link, "clicked", |
- G_CALLBACK(OnClickLearnMoreLinkThunk), this); |
- gtk_box_pack_start(GTK_BOX(learn_more_line), |
- learn_more_link, FALSE, FALSE, 0); |
- |
GtkWidget* bottom_line = gtk_hbox_new(FALSE, kContentBorder); |
gtk_box_pack_start(GTK_BOX(bubble_content), |
bottom_line, FALSE, FALSE, 0); |
@@ -73,14 +60,29 @@ OneClickSigninBubbleGtk::OneClickSigninBubbleGtk( |
gtk_box_pack_start(GTK_BOX(bottom_line), |
advanced_link, FALSE, FALSE, 0); |
+ // Make the OK and Undo buttons the same size horizontally. |
+ GtkSizeGroup* size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
+ |
// OK Button. |
GtkWidget* ok_button = gtk_button_new_with_label( |
l10n_util::GetStringUTF8(IDS_OK).c_str()); |
g_signal_connect(ok_button, "clicked", |
G_CALLBACK(OnClickOKThunk), this); |
+ gtk_size_group_add_widget(size_group, ok_button); |
gtk_box_pack_end(GTK_BOX(bottom_line), |
ok_button, FALSE, FALSE, 0); |
+ // Undo Button. |
+ GtkWidget* undo_button = gtk_button_new_with_label( |
+ l10n_util::GetStringUTF8(IDS_ONE_CLICK_BUBBLE_UNDO).c_str()); |
+ g_signal_connect(undo_button, "clicked", |
+ G_CALLBACK(OnClickUndoThunk), this); |
+ gtk_size_group_add_widget(size_group, undo_button); |
+ gtk_box_pack_end(GTK_BOX(bottom_line), |
+ undo_button, FALSE, FALSE, 0); |
+ |
+ g_object_unref(size_group); |
+ |
GtkWidget* const app_menu_widget = |
browser_window_gtk->GetToolbar()->GetAppMenuButton(); |
gfx::Rect bounds = gtk_util::WidgetBounds(app_menu_widget); |
@@ -98,33 +100,29 @@ OneClickSigninBubbleGtk::OneClickSigninBubbleGtk( |
void OneClickSigninBubbleGtk::BubbleClosing( |
BubbleGtk* bubble, bool closed_by_escape) { |
- delete this; |
-} |
+ if (!start_sync_callback_.is_null()) |
+ base::ResetAndReturn(&start_sync_callback_).Run( |
+ OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS); |
-void OneClickSigninBubbleGtk::ClickOKForTest() { |
- OnClickOK(NULL); |
-} |
- |
-void OneClickSigninBubbleGtk::ClickLearnMoreForTest() { |
- OnClickLearnMoreLink(NULL); |
-} |
- |
-void OneClickSigninBubbleGtk::ClickAdvancedForTest() { |
- OnClickAdvancedLink(NULL); |
+ delete this; |
} |
-void OneClickSigninBubbleGtk::OnClickLearnMoreLink(GtkWidget* link) { |
- learn_more_callback_.Run(); |
+void OneClickSigninBubbleGtk::OnClickAdvancedLink(GtkWidget* link) { |
+ base::ResetAndReturn(&start_sync_callback_).Run( |
+ OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST); |
bubble_->Close(); |
} |
-void OneClickSigninBubbleGtk::OnClickAdvancedLink(GtkWidget* link) { |
- advanced_callback_.Run(); |
+void OneClickSigninBubbleGtk::OnClickOK(GtkWidget* link) { |
+ base::ResetAndReturn(&start_sync_callback_).Run( |
+ OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS); |
bubble_->Close(); |
} |
-void OneClickSigninBubbleGtk::OnClickOK(GtkWidget* link) { |
+void OneClickSigninBubbleGtk::OnClickUndo(GtkWidget* link) { |
+ start_sync_callback_.Reset(); |
bubble_->Close(); |
} |
-OneClickSigninBubbleGtk::~OneClickSigninBubbleGtk() {} |
+OneClickSigninBubbleGtk::~OneClickSigninBubbleGtk() { |
+} |