Index: chrome/browser/ui/gtk/password_generation_bubble_gtk.cc |
diff --git a/chrome/browser/ui/gtk/password_generation_bubble_gtk.cc b/chrome/browser/ui/gtk/password_generation_bubble_gtk.cc |
index e43e81a48135251020a8bfdd4ad5d95aabbc2dbf..6ceb0f16c07936a62f972102c24dd10825621ddb 100644 |
--- a/chrome/browser/ui/gtk/password_generation_bubble_gtk.cc |
+++ b/chrome/browser/ui/gtk/password_generation_bubble_gtk.cc |
@@ -5,11 +5,19 @@ |
#include "chrome/browser/ui/gtk/password_generation_bubble_gtk.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/browser_list.h" |
#include "chrome/browser/ui/gtk/bubble/bubble_gtk.h" |
+#include "chrome/browser/ui/gtk/gtk_chrome_link_button.h" |
+#include "chrome/browser/ui/gtk/gtk_util.h" |
#include "chrome/browser/ui/gtk/theme_service_gtk.h" |
#include "chrome/common/autofill_messages.h" |
+#include "chrome/common/url_constants.h" |
#include "content/public/browser/render_view_host.h" |
+#include "content/public/browser/web_contents.h" |
+#include "grit/generated_resources.h" |
#include "ui/base/gtk/gtk_hig_constants.h" |
+#include "ui/base/l10n/l10n_util.h" |
const int kContentBorder = 4; |
const int kHorizontalSpacing = 4; |
@@ -19,15 +27,21 @@ PasswordGenerationBubbleGtk::PasswordGenerationBubbleGtk( |
GtkWidget* anchor_widget, |
Profile* profile, |
content::RenderViewHost* render_view_host) |
- : render_view_host_(render_view_host) { |
+ : profile_(profile), render_view_host_(render_view_host) { |
// TODO(gcasto): Localize text after we have finalized the UI. |
// crbug.com/118062 |
GtkWidget* content = gtk_vbox_new(FALSE, 5); |
- // We have two lines of content. The first is just the title, |
+ // We have two lines of content. The first is the title and learn more link. |
GtkWidget* title_line = gtk_hbox_new(FALSE, 0); |
GtkWidget* title = gtk_label_new("Password Suggestion"); |
gtk_box_pack_start(GTK_BOX(title_line), title, FALSE, FALSE, 0); |
+ GtkWidget* learn_more_link = gtk_chrome_link_button_new( |
+ l10n_util::GetStringUTF8(IDS_LEARN_MORE).c_str()); |
+ gtk_button_set_alignment(GTK_BUTTON(learn_more_link), 0.0, 0.5); |
+ gtk_box_pack_start(GTK_BOX(title_line), |
+ gtk_util::IndentWidget(learn_more_link), |
+ FALSE, FALSE, 0); |
// The second contains the password in a text field and an accept button. |
GtkWidget* password_line = gtk_hbox_new(FALSE, kHorizontalSpacing); |
@@ -49,13 +63,15 @@ PasswordGenerationBubbleGtk::PasswordGenerationBubbleGtk( |
BubbleGtk::ARROW_LOCATION_TOP_LEFT, |
true, // match_system_theme |
true, // grab_input |
- ThemeServiceGtk::GetFrom(profile), |
+ ThemeServiceGtk::GetFrom(profile_), |
NULL); // delegate |
g_signal_connect(content, "destroy", |
G_CALLBACK(&OnDestroyThunk), this); |
g_signal_connect(accept_button, "clicked", |
G_CALLBACK(&OnAcceptClickedThunk), this); |
+ g_signal_connect(learn_more_link, "clicked", |
+ G_CALLBACK(OnLearnMoreLinkClickedThunk), this); |
} |
PasswordGenerationBubbleGtk::~PasswordGenerationBubbleGtk() {} |
@@ -72,3 +88,12 @@ void PasswordGenerationBubbleGtk::OnAcceptClicked(GtkWidget* widget) { |
UTF8ToUTF16(gtk_entry_get_text(GTK_ENTRY(text_field_))))); |
bubble_->Close(); |
} |
+ |
+void PasswordGenerationBubbleGtk::OnLearnMoreLinkClicked(GtkButton* button) { |
+ Browser* browser = BrowserList::GetLastActiveWithProfile(profile_); |
+ content::OpenURLParams params( |
+ GURL(chrome::kAutoPasswordGenerationLearnMoreURL), content::Referrer(), |
+ NEW_FOREGROUND_TAB, content::PAGE_TRANSITION_LINK, false); |
+ browser->OpenURL(params); |
+ bubble_->Close(); |
+} |