| 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 57bcca2896fe22a2c1cd14ca6293e8450d7bcd35..585351c389c6e882632d4a6c708d8ce52bd060f9 100644
|
| --- a/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc
|
| +++ b/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc
|
| @@ -6,8 +6,9 @@
|
|
|
| #include <gtk/gtk.h>
|
|
|
| -#include "base/i18n/rtl.h"
|
| +#include "base/callback_helpers.h"
|
| #include "base/logging.h"
|
| +#include "base/i18n/rtl.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/gtk/browser_toolbar_gtk.h"
|
| #include "chrome/browser/ui/gtk/browser_window_gtk.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 base::Callback<void(bool)>& 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);
|
| @@ -81,6 +68,16 @@ OneClickSigninBubbleGtk::OneClickSigninBubbleGtk(
|
| gtk_box_pack_end(GTK_BOX(bottom_line),
|
| ok_button, FALSE, FALSE, 0);
|
|
|
| + // Undo Button.
|
| + // TODO(akalin): at the moment, the OK and undo buttons are not the same
|
| + // size and look kind of ugly. Figure out how to make it nicer.
|
| + 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_box_pack_end(GTK_BOX(bottom_line),
|
| + undo_button, FALSE, FALSE, 0);
|
| +
|
| GtkWidget* const app_menu_widget =
|
| browser_window_gtk->GetToolbar()->GetAppMenuButton();
|
| gfx::Rect bounds = gtk_util::WidgetBounds(app_menu_widget);
|
| @@ -97,6 +94,9 @@ OneClickSigninBubbleGtk::OneClickSigninBubbleGtk(
|
|
|
| void OneClickSigninBubbleGtk::BubbleClosing(
|
| BubbleGtk* bubble, bool closed_by_escape) {
|
| + if (!start_sync_callback_.is_null())
|
| + base::ResetAndReturn(&start_sync_callback_).Run(true);
|
| +
|
| delete this;
|
| }
|
|
|
| @@ -104,26 +104,32 @@ void OneClickSigninBubbleGtk::ClickOKForTest() {
|
| OnClickOK(NULL);
|
| }
|
|
|
| -void OneClickSigninBubbleGtk::ClickLearnMoreForTest() {
|
| - OnClickLearnMoreLink(NULL);
|
| +void OneClickSigninBubbleGtk::ClickUndoForTest() {
|
| + OnClickUndo(NULL);
|
| }
|
|
|
| void OneClickSigninBubbleGtk::ClickAdvancedForTest() {
|
| OnClickAdvancedLink(NULL);
|
| }
|
|
|
| -void OneClickSigninBubbleGtk::OnClickLearnMoreLink(GtkWidget* link) {
|
| - learn_more_callback_.Run();
|
| +void OneClickSigninBubbleGtk::CloseForTest() {
|
| bubble_->Close();
|
| }
|
|
|
| void OneClickSigninBubbleGtk::OnClickAdvancedLink(GtkWidget* link) {
|
| - advanced_callback_.Run();
|
| + base::ResetAndReturn(&start_sync_callback_).Run(false);
|
| bubble_->Close();
|
| }
|
|
|
| void OneClickSigninBubbleGtk::OnClickOK(GtkWidget* link) {
|
| + base::ResetAndReturn(&start_sync_callback_).Run(true);
|
| + bubble_->Close();
|
| +}
|
| +
|
| +void OneClickSigninBubbleGtk::OnClickUndo(GtkWidget* link) {
|
| + start_sync_callback_.Reset();
|
| bubble_->Close();
|
| }
|
|
|
| -OneClickSigninBubbleGtk::~OneClickSigninBubbleGtk() {}
|
| +OneClickSigninBubbleGtk::~OneClickSigninBubbleGtk() {
|
| +}
|
|
|